[PATCH] sandbox: fix build failure with musl and SDL
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Thu Feb 3 17:54:02 CET 2022
On 2/3/22 17:43, Tom Rini wrote:
> On Thu, Feb 03, 2022 at 02:02:47PM +0100, Milan P. Stanić wrote:
>> Hi,
>>
>> On Thu, 2022-01-27 at 14:35, Simon Glass wrote:
>>> Hi,
>>>
>>> On Fri, 21 Jan 2022 at 13:11, Milan P. Stanić <mps at arvanta.net> wrote:
>>>>
>>>> Hi,
>>>>
>>>> it works and build pass without error or warning.
>>>> Tested on alpine edge aarch64 bare metal.
>>>>
>>>> Thank you
>>>>
>>>> On Fri, 2022-01-21 at 18:00, Heinrich Schuchardt wrote:
>>>>> sdl.c is compiled against the SDL library.
>>>>>
>>>>> Trying to redefine wchar_t with -fshort-wchar is not necessary
>>>>> and leads to build failures when compiling against musl.
>>>>>
>>>>> Cc: Milan P. Stanić <mps at arvanta.net>
>>>>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>>>>
>>>> Tested-by: Milan P. Stanić <mps at arvanta.net>
>>>>
>>>>> ---
>>>>> arch/sandbox/Makefile | 7 +++++++
>>>>> arch/sandbox/cpu/Makefile | 11 ++++++++---
>>>>> 2 files changed, 15 insertions(+), 3 deletions(-)
>>>>>
>>>>> diff --git a/arch/sandbox/Makefile b/arch/sandbox/Makefile
>>>>> index f6cf859f24..0bdd322f12 100644
>>>>> --- a/arch/sandbox/Makefile
>>>>> +++ b/arch/sandbox/Makefile
>>>>> @@ -4,3 +4,10 @@ head-y := arch/sandbox/cpu/start.o arch/sandbox/cpu/os.o
>>>>> head-$(CONFIG_SANDBOX_SDL) += arch/sandbox/cpu/sdl.o
>>>>> libs-y += arch/sandbox/cpu/
>>>>> libs-y += arch/sandbox/lib/
>>>>> +
>>>>> +# sdl.c fails to compile with -fshort-wchar using musl.
>>>>> +cmd_cc_sdl.o = $(CC) $(filter-out -nostdinc -fshort-wchar, \
>>>>> + $(patsubst -I%,-idirafter%,$(c_flags))) -c -o $@ $<
>>>>> +
>>>>> +$(obj)/sdl.o: $(src)/sdl.c FORCE
>>>>> + $(call if_changed_dep,cc_sdl.o)
>>>>> diff --git a/arch/sandbox/cpu/Makefile b/arch/sandbox/cpu/Makefile
>>>>> index de7fe7f391..b74c866e56 100644
>>>>> --- a/arch/sandbox/cpu/Makefile
>>>>> +++ b/arch/sandbox/cpu/Makefile
>>>>> @@ -7,7 +7,7 @@
>>>>>
>>>>> obj-y := cache.o cpu.o state.o
>>>>> extra-y := start.o os.o
>>>>> -extra-$(CONFIG_SANDBOX_SDL) += sdl.o
>>>>> +extra-$(CONFIG_SANDBOX_SDL) += sdl.o
>>>>> obj-$(CONFIG_SPL_BUILD) += spl.o
>>>>> obj-$(CONFIG_ETH_SANDBOX_RAW) += eth-raw-os.o
>>>>>
>>>>> @@ -19,8 +19,6 @@ cmd_cc_os.o = $(CC) $(filter-out -nostdinc, \
>>>>>
>>>>> $(obj)/os.o: $(src)/os.c FORCE
>>>>> $(call if_changed_dep,cc_os.o)
>>>>> -$(obj)/sdl.o: $(src)/sdl.c FORCE
>>>>> - $(call if_changed_dep,cc_os.o)
>>>>>
>>>>> # eth-raw-os.c is built in the system env, so needs standard includes
>>>>> # CFLAGS_REMOVE_eth-raw-os.o cannot be used to drop header include path
>>>>> @@ -30,3 +28,10 @@ cmd_cc_eth-raw-os.o = $(CC) $(filter-out -nostdinc, \
>>>>>
>>>>> $(obj)/eth-raw-os.o: $(src)/eth-raw-os.c FORCE
>>>>> $(call if_changed_dep,cc_eth-raw-os.o)
>>>>> +
>>>>> +# sdl.c fails to build with -fshort-wchar using musl
>>>>> +cmd_cc_sdl.o = $(CC) $(filter-out -nostdinc -fshort-wchar, \
>>>>> + $(patsubst -I%,-idirafter%,$(c_flags))) -c -o $@ $<
>>>>> +
>>>>> +$(obj)/sdl.o: $(src)/sdl.c FORCE
>>>>> + $(call if_changed_dep,cc_sdl.o)
>>>>> --
>>>>> 2.33.1
>>>>>
>>>
>>> This fails on gitlab.
>>>
>>> https://source.denx.de/u-boot/custodians/u-boot-dm/-/jobs/382812
>>>
>>> $ tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
>>> --board ${TEST_PY_BD} ${OVERRIDE}
>>> Building current source for 1 boards (1 thread, 40 jobs per thread)
>>> sandbox: + sandbox
>>> +/usr/bin/ld: error: LLVM gold plugin: linking module flags
>>> 'wchar_size': IDs have conflicting values in 'arch/sandbox/cpu/sdl.o'
>>> and 'ld-temp.o'
>>> +clang: error: linker command failed with exit code 1 (use -v to see invocation)
>>> +make[1]: *** [Makefile:1799: u-boot] Error 1
>>> +make: *** [Makefile:177: sub-make] Error 2
>>> 0 0 1 /1 sandbox
>>> Completed: 1 total built, duration 0:00:22, rate 0.05
>>> Running after_script
>>>
>>>
>>> Please can you take a look?
>>
>> I tested with clang and lld, and clang ld.gold in lxc and bare metal
>> build. didn't had this errors.
>>
>> Could be that this problem appears on docker only.
>
> Docker is just an Ubuntu/Focal environment, so gcc + ld.gold here.
>
Your are looking at an old version of the patch.
[PATCH v2 1/1] sandbox: fix build failure with musl and SDL
https://patchwork.ozlabs.org/project/uboot/patch/20220128090832.35509-1-heinrich.schuchardt@canonical.com/
@Simon
Could you, please, review.
Best regards
Heinrich
More information about the U-Boot
mailing list