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

From: Bryan Drewery <bdrewery_at_FreeBSD.org>
Date: Wed, 19 Jun 2019 11:05:40 -0700
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.


-- 
Regards,
Bryan Drewery


Received on Wed Jun 19 2019 - 16:05:45 UTC

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