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

Message ID 20180612155013.10993-1-xypron.glpk@gmx.de
State Superseded, archived
Delegated to: Bin Meng
Headers show
Series
  • [U-Boot,1/1] x86: qemu: do not build car.o with start64.o
Related show

Commit Message

Heinrich Schuchardt June 12, 2018, 3:50 p.m.
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(-)

Comments

Bin Meng June 19, 2018, 2:37 a.m. | #1
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
Heinrich Schuchardt June 19, 2018, 6:10 a.m. | #2
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
>
Bin Meng June 19, 2018, 7:11 a.m. | #3
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

Patch

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