[U-Boot] [PATCH 1/1] x86: qemu: do not build car.o with start64.o

car.o can only be used with start.o, not with start64.o.
So on qemu 64bit it should only be built for 32bit SPL but not for u-boot.
Without this patch but with an unrelated pending patch ("x86: Add 64-bit setjmp/longjmp implementation") the following error occurred for qemu-x86_64_defconfig:
arch/x86/cpu/built-in.o: In function `car_init': arch/x86/cpu/qemu/car.S:25: undefined reference to `car_init_ret'
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- arch/x86/cpu/qemu/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/x86/cpu/qemu/Makefile b/arch/x86/cpu/qemu/Makefile index e5ea92545e3..b1daffd4a32 100644 --- a/arch/x86/cpu/qemu/Makefile +++ b/arch/x86/cpu/qemu/Makefile @@ -2,8 +2,11 @@ # # Copyright (C) 2015, Bin Meng bmeng.cn@gmail.com
+ifndef CONFIG_$(SPL_)X86_64 +obj-y += car.o +endif ifndef CONFIG_EFI_STUB -obj-y += car.o dram.o +obj-y += dram.o endif obj-y += qemu.o obj-$(CONFIG_QFW) += cpu.o e820.o

Hi Heinrich,
On Tue, Jun 12, 2018 at 11:50 PM, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
car.o can only be used with start.o, not with start64.o.
So on qemu 64bit it should only be built for 32bit SPL but not for u-boot.
Without this patch but with an unrelated pending patch ("x86: Add 64-bit setjmp/longjmp implementation") the following error occurred for qemu-x86_64_defconfig:
I don't understand why Ivan's setmp/longjmp patch triggers this build issue. Can you elaborate?
arch/x86/cpu/built-in.o: In function `car_init': arch/x86/cpu/qemu/car.S:25: undefined reference to `car_init_ret'
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/x86/cpu/qemu/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/x86/cpu/qemu/Makefile b/arch/x86/cpu/qemu/Makefile index e5ea92545e3..b1daffd4a32 100644 --- a/arch/x86/cpu/qemu/Makefile +++ b/arch/x86/cpu/qemu/Makefile @@ -2,8 +2,11 @@ # # Copyright (C) 2015, Bin Meng bmeng.cn@gmail.com
+ifndef CONFIG_$(SPL_)X86_64 +obj-y += car.o +endif ifndef CONFIG_EFI_STUB -obj-y += car.o dram.o +obj-y += dram.o endif obj-y += qemu.o obj-$(CONFIG_QFW) += cpu.o e820.o --
BTW: the patch does not apply cleanly on latest u-boot/master. Please rebase. Thanks!
Regards, Bin

On 06/19/2018 04:37 AM, Bin Meng wrote:
Hi Heinrich,
On Tue, Jun 12, 2018 at 11:50 PM, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
car.o can only be used with start.o, not with start64.o.
So on qemu 64bit it should only be built for 32bit SPL but not for u-boot.
Without this patch but with an unrelated pending patch ("x86: Add 64-bit setjmp/longjmp implementation") the following error occurred for qemu-x86_64_defconfig:
I don't understand why Ivan's setmp/longjmp patch triggers this build issue. Can you elaborate?
Hello Bin,
it was what I observed.
As start.S calls car_init() but start_64.S does not the linker could eliminate car.o on x86_64. Why it does not eliminate it with the patch I do not know.
But I still think that building car.o on 64bit does not make sense.
Best regards
Heinrich
arch/x86/cpu/built-in.o: In function `car_init': arch/x86/cpu/qemu/car.S:25: undefined reference to `car_init_ret'
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
arch/x86/cpu/qemu/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/x86/cpu/qemu/Makefile b/arch/x86/cpu/qemu/Makefile index e5ea92545e3..b1daffd4a32 100644 --- a/arch/x86/cpu/qemu/Makefile +++ b/arch/x86/cpu/qemu/Makefile @@ -2,8 +2,11 @@ # # Copyright (C) 2015, Bin Meng bmeng.cn@gmail.com
+ifndef CONFIG_$(SPL_)X86_64 +obj-y += car.o +endif ifndef CONFIG_EFI_STUB -obj-y += car.o dram.o +obj-y += dram.o endif obj-y += qemu.o obj-$(CONFIG_QFW) += cpu.o e820.o --
BTW: the patch does not apply cleanly on latest u-boot/master. Please rebase. Thanks!
Regards, Bin

Hi Heinrich,
On Tue, Jun 19, 2018 at 2:10 PM, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 06/19/2018 04:37 AM, Bin Meng wrote:
Hi Heinrich,
On Tue, Jun 12, 2018 at 11:50 PM, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
car.o can only be used with start.o, not with start64.o.
So on qemu 64bit it should only be built for 32bit SPL but not for u-boot.
Without this patch but with an unrelated pending patch ("x86: Add 64-bit setjmp/longjmp implementation") the following error occurred for qemu-x86_64_defconfig:
I don't understand why Ivan's setmp/longjmp patch triggers this build issue. Can you elaborate?
Hello Bin,
it was what I observed.
As start.S calls car_init() but start_64.S does not the linker could eliminate car.o on x86_64. Why it does not eliminate it with the patch I do not know.
Thanks.
But I still think that building car.o on 64bit does not make sense.
Yes, so please do the rebase and send v2. You can drop the commit message mentioning Ivan's patch since it has not been applied.
Regards, Bin
participants (2)
-
Bin Meng
-
Heinrich Schuchardt