Re: r349100: buildworld does not compile (ld: error: duplicate symbol: sse42_crc32c)

From: Bryan Drewery <bdrewery_at_FreeBSD.org>
Date: Wed, 19 Jun 2019 12:20:00 -0700
On 6/19/19 11:05 AM, Bryan Drewery wrote:
> On 6/19/19 11:02 AM, Bryan Drewery wrote:
>> On 6/16/19 9:33 AM, Warner Losh wrote:
>>> On Sun, Jun 16, 2019, 9:51 AM Rainer Hurling <rhurlin_at_gwdg.de> wrote:
>>>
>>>> If I try to build world almost recent sources (r349100) on HEAD amd64
>>>> (r348775), it stops with the following error:
>>>>
>>>>
>>>> [..snip..]
>>>> (cd /usr/src/tests/sys/kern &&  DEPENDFILE=.depend.libkern_crc32
>>>> NO_SUBDIR=1 make -f /usr/src/tests/sys/kern/Makefile _RECURSING_PROGS=t
>>>> PROG=libkern_crc32 )
>>>> echo libkern_crc32: /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libc.a
>>>> /usr/obj/usr/src/amd64.amd64/tmp/usr/lib/libprivateatf-c.a >>
>>>> .depend.libkern_crc32
>>>> cc -target x86_64-unknown-freebsd13.0
>>>> --sysroot=/usr/obj/usr/src/amd64.amd64/tmp
>>>> -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin  -O2 -pipe
>>>> -DUSERSPACE_TESTING -MD  -MF.depend.libkern_crc32.libkern_crc32.o
>>>> -MTlibkern_crc32.o -std=gnu99 -fstack-protector-strong -Wsystem-headers
>>>> -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter
>>>> -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith
>>>> -Wno-uninitialized -Wno-pointer-sign -Wno-empty-body
>>>> -Wno-string-plus-int -Wno-unused-const-variable
>>>> -Wno-tautological-compare -Wno-unused-value -Wno-parentheses-equality
>>>> -Wno-unused-function -Wno-enum-conversion -Wno-unused-local-typedef
>>>> -Wno-address-of-packed-member   -Qunused-arguments   -c
>>>> /usr/src/tests/sys/kern/libkern_crc32.c -o libkern_crc32.o
>>>> cc -target x86_64-unknown-freebsd13.0
>>>> --sysroot=/usr/obj/usr/src/amd64.amd64/tmp
>>>> -B/usr/obj/usr/src/amd64.amd64/tmp/usr/bin -O2 -pipe -DUSERSPACE_TESTING
>>>> -std=gnu99 -fstack-protector-strong -Wsystem-headers -Werror -Wall
>>>> -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes
>>>> -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized
>>>> -Wno-pointer-sign -Wno-empty-body -Wno-string-plus-int
>>>> -Wno-unused-const-variable -Wno-tautological-compare -Wno-unused-value
>>>> -Wno-parentheses-equality -Wno-unused-function -Wno-enum-conversion
>>>> -Wno-unused-local-typedef -Wno-address-of-packed-member
>>>> -Qunused-arguments -DUSERSPACE_TESTING    -o libkern_crc32
>>>> libkern_crc32.o  /usr/src/sys/libkern/x86/crc32_sse42.c -lprivateatf-c
>>>> /usr/src/sys/libkern/x86/crc32_sse42.c -lprivateatf-c
>>>> ld: error: duplicate symbol: sse42_crc32c
>>>>>>> defined at crc32_sse42.c
>>>>>>>            /tmp/crc32_sse42-2988bd.o:(sse42_crc32c)
>>>>>>> defined at crc32_sse42.c
>>>>>>>            /tmp/crc32_sse42-bcf3d2.o:(.text+0x3C0)
>>>> cc: error: linker command failed with exit code 1 (use -v to see
>>>> invocation)
>>>> *** [libkern_crc32] Error code 1
>>>> make[6]: stopped in /usr/src/tests/sys/kern
>>>> 1 error
>>>> make[6]: stopped in /usr/src/tests/sys/kern
>>>> *** [libkern_crc32] Error code 2
>>>>
>>>>
>>>> This happens with two older cpus, Intel (Core 17-4770) and AMD (Phenom
>>>> II X6 1090T).
>>>>
>>>> Am I the only one, who observes this breakage? Thanks for any hint.
>>>>
>>>
>>> Try adding -DWITHOUT_TESTS to buildworld...
>>>
>>> Warner
>>>
>>
>> ~/git/freebsd2/tests/sys/kern # env|grep TEST
>> MK_TESTS=no
>>
>>
>> Doh. Turns out I've had TESTS disabled in some of my recent build tests
>> / commits. This is likely my fault.
>>
> 
> Yup it is from my r349065.
> 
> It's an ambiguity between LDADD.<PROG_TARGET> and my newly added
> LDADD.<compile target>.
> 
> LDADD.libkern_crc32+=   ${SRCTOP}/sys/libkern/x86/crc32_sse42.c
> 
> So it's added in twice.
> 
> 

This should be fixed in r349202. Sorry for the trouble.

-- 
Regards,
Bryan Drewery


Received on Wed Jun 19 2019 - 17:20:07 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:21 UTC