public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug build/29454] New: dl-cache.c:513: undefined reference to `strcpy' with -Og or -O1 (doesn't happen with -O2)
@ 2022-08-07 13:50 Martin.Jansa at gmail dot com
  2022-08-07 13:51 ` [Bug build/29454] " Martin.Jansa at gmail dot com
                   ` (27 more replies)
  0 siblings, 28 replies; 29+ messages in thread
From: Martin.Jansa at gmail dot com @ 2022-08-07 13:50 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=29454

            Bug ID: 29454
           Summary: dl-cache.c:513: undefined reference to `strcpy' with
                    -Og or -O1 (doesn't happen with -O2)
           Product: glibc
           Version: 2.36
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: build
          Assignee: unassigned at sourceware dot org
          Reporter: Martin.Jansa at gmail dot com
                CC: carlos at redhat dot com
  Target Milestone: ---

When building glibc with -Og I've started to see "dl-cache.c:513: undefined
reference to `strcpy'" introduced in:

6b9006bfb0 x86: Move strcpy SSE2 implementation to multiarch/strcpy-sse2.S

x86_64-oe-linux-gcc (GCC) 12.1.0

x86_64-oe-linux-gcc  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse 
--sysroot=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot
-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
-fmacro-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0=/usr/src/debug/glibc/2.36-r0
                    
-fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0=/usr/src/debug/glibc/2.36-r0
                    
-fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot=
                    
-fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot-native=
 -Wl,-z,relro,-z,now -fuse-ld=bfd  -nostdlib -nostartfiles -r -o
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/librtld.os
'-Wl,-('
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/dl-allobjs.os
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/rtld-libc.a
-lgcc '-Wl,-)' \
         
-Wl,-Map,/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/librtld.os.map
x86_64-oe-linux-gcc  -m64 -march=core2 -mtune=core2 -msse3 -mfpmath=sse 
--sysroot=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot
-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed
-fmacro-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0=/usr/src/debug/glibc/2.36-r0
                    
-fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0=/usr/src/debug/glibc/2.36-r0
                    
-fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot=
                    
-fdebug-prefix-map=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot-native=
 -Wl,-z,relro,-z,now -fuse-ld=bfd  -nostdlib -nostartfiles -shared -o
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/ld.so.new
             \
          -Wl,-z,relro -Wl,-z,defs -Wl,-z,now   \
          -Wl,-z,pack-relative-relocs \
         
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/librtld.os
-Wl,--version-script=/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/ld.map
             \
          -Wl,-soname=ld-linux-x86-64.so.2
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/recipe-sysroot-native/usr/bin/x86_64-oe-linux/../../libexec/x86_64-oe-linux/gcc/x86_64-oe-linux/12.1.0/ld.bfd:
/OE/build/oe-core/tmp-glibc/work/core2-64-oe-linux/glibc/2.36-r0/build-x86_64-oe-linux/elf/librtld.os:
in function `_dl_load_cache_lookup':
/usr/src/debug/glibc/2.36-r0/git/elf/dl-cache.c:513: undefined reference to
`strcpy'
collect2: error: ld returned 1 exit status

There was another build issue when building with -Og or -O1 in bug 29249.

As work around I'm reverting these 3 commits (the middle one is just to avoid
conflicts with the top one, but 6b9006bfb0 is where the strcpy was first
reproducible:

04538ceb0d Revert "x86: Move strcpy SSE2 implementation to
multiarch/strcpy-sse2.S"
3e31c3f7c6 Revert "x86: Add support to build st{p|r}{n}{cpy|cat} with explicit
ISA level"
e5ec49260b Revert "Linux: Implement a useful version of _startup_fatal"

I don't understand this code at all, but from poking what changed with objdump
I've noticed that the symbol in rtld-strcpy-sse2.os is now uppercase:

objdump -x build-x86_64-oe-linux/string/rtld-strcpy-sse2.os | grep -i strcpy
build-x86_64-oe-linux/string/rtld-strcpy-sse2.os:     file format elf64-x86-64
build-x86_64-oe-linux/string/rtld-strcpy-sse2.os
0000000000000000 g     F .text  00000000000000ec STRCPY

while build from the commit just before 6b9006bfb0 shows:

objdump -x build-x86_64-oe-linux/string/rtld-strcpy-sse2.os | grep -i strcpy
build-x86_64-oe-linux/string/rtld-strcpy-sse2.os:     file format elf64-x86-64
build-x86_64-oe-linux/string/rtld-strcpy-sse2.os
0000000000000000 g     F .text  00000000000000ec strcpy

This might be also interesting, librtld.os.map diff shows only
elf/rtld-libc.a(rtld-stpcpy.os) now, while before it was showing
elf/rtld-libc.a(rtld-stpcpy-sse2.os) and elf/rtld-libc.a(rtld-strcpy-sse2.os)

--- build-x86_64-oe-linux.O2/elf/librtld.mk     2022-08-07 13:20:11.154223394
+0000
+++ build-x86_64-oe-linux.Og/elf/librtld.mk     2022-08-07 13:18:29.389217048
+0000
@@ -16,6 +16,7 @@
 rtld-string +=stpcpy.os
 rtld-string +=strchr.os
 rtld-string +=strcmp.os
+rtld-string +=strcpy.os
 rtld-string +=strcspn.os
 rtld-string +=strdup.os
 rtld-string +=strerrorname_np.os
@@ -112,6 +113,16 @@
 rtld-string +=strcmp.os
 rtld-string +=strcmp-sse4_2.os
 rtld-string +=strcmp.os
+rtld-string +=strcpy-avx2.os
+rtld-string +=strcpy.os
+rtld-string +=strcpy-avx2-rtm.os
+rtld-string +=strcpy.os
+rtld-string +=strcpy-evex.os
+rtld-string +=strcpy.os
+rtld-string +=strcpy-sse2.os
+rtld-string +=strcpy.os
+rtld-string +=strcpy-sse2-unaligned.os
+rtld-string +=strcpy.os
 rtld-string +=strcspn-sse4.os
 rtld-string +=strcspn.os
 rtld-string +=strlen-avx2.os

Replacing -Og with -O2 fixes the issue (but unlike bug 29249 "-O1
-fexpensive-optimizations" instead of "-Og" isn't enough here).

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2022-08-11 15:33 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-07 13:50 [Bug build/29454] New: dl-cache.c:513: undefined reference to `strcpy' with -Og or -O1 (doesn't happen with -O2) Martin.Jansa at gmail dot com
2022-08-07 13:51 ` [Bug build/29454] " Martin.Jansa at gmail dot com
2022-08-07 14:36 ` Martin.Jansa at gmail dot com
2022-08-07 14:43 ` goldstein.w.n at gmail dot com
2022-08-07 14:44 ` goldstein.w.n at gmail dot com
2022-08-07 15:00 ` Martin.Jansa at gmail dot com
2022-08-07 15:05 ` goldstein.w.n at gmail dot com
2022-08-07 15:12 ` Martin.Jansa at gmail dot com
2022-08-07 15:13 ` Martin.Jansa at gmail dot com
2022-08-07 15:26 ` goldstein.w.n at gmail dot com
2022-08-07 15:28 ` goldstein.w.n at gmail dot com
2022-08-07 15:28 ` goldstein.w.n at gmail dot com
2022-08-07 15:38 ` Martin.Jansa at gmail dot com
2022-08-07 15:38 ` Martin.Jansa at gmail dot com
2022-08-07 15:39 ` Martin.Jansa at gmail dot com
2022-08-07 15:39 ` Martin.Jansa at gmail dot com
2022-08-07 15:56 ` goldstein.w.n at gmail dot com
2022-08-07 15:56 ` goldstein.w.n at gmail dot com
2022-08-07 16:03 ` Martin.Jansa at gmail dot com
2022-08-07 16:07 ` goldstein.w.n at gmail dot com
2022-08-07 19:39 ` hjl.tools at gmail dot com
2022-08-08  2:52 ` goldstein.w.n at gmail dot com
2022-08-08  3:27 ` goldstein.w.n at gmail dot com
2022-08-08 10:27 ` yann at droneaud dot fr
2022-08-08 19:59 ` sam at gentoo dot org
2022-08-09 10:16 ` goldstein.w.n at gmail dot com
2022-08-09 14:49 ` hjl.tools at gmail dot com
2022-08-09 14:51 ` Martin.Jansa at gmail dot com
2022-08-11 15:33 ` goldstein.w.n at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).