This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c/13856] New: hidden support broken with builtin functions


With current GCC 3.4 I cannot build glibc anymore, it fails with:
/builds/glibc/3.4/libc.so.6: undefined reference to `__GI_strncmp'
/builds/glibc/3.4/libc.so.6: undefined reference to `__GI_strftime'
/builds/glibc/3.4/libc.so.6: undefined reference to `__GI_fputs_unlocked'
/builds/glibc/3.4/libc.so.6: undefined reference to `__GI_fwrite_unlocked'
/builds/glibc/3.4/libc.so.6: undefined reference to `__GI_memmove'
/builds/glibc/3.4/libc.so.6: undefined reference to `__GI_strncpy'
/builds/glibc/3.4/libc.so.6: undefined reference to `__GI__exit'
/builds/glibc/3.4/libc.so.6: undefined reference to `__GI_strstr'
collect2: ld returned 1 exit status

Let's look at fputs_unlocked:

The 3.3 branch compiles the file to use the following symbols:

$ nm libio/iofputs_u.os
                 U _GLOBAL_OFFSET_TABLE_
0000000000000000 T __GI_fputs_unlocked
0000000000000000 T fputs_unlocked
                 U strlen

3.4 compiles to:
$ nm libio/iofputs_u.os
                 U __GI_fputs_unlocked
                 U __GI_strlen
0000000000000000 T fputs_unlocked


Looking further into this, I see the following difference between 3.4
and 3.3 in the assembler files:

3.3 branch outputs:
        .globl fputs_unlocked ; .set fputs_unlocked, __GI_fputs_unlocked
#NO_APP
        .p2align 4,,15
.globl __GI_fputs_unlocked
        .hidden __GI_fputs_unlocked
        .type   __GI_fputs_unlocked, @function
__GI_fputs_unlocked:

But 3.4 does:
        .globl fputs_unlocked ; .set fputs_unlocked, __GI_fputs_unlocked
#NO_APP
        .p2align 4,,15
.globl fputs_unlocked
        .type   fputs_unlocked, @function
fputs_unlocked:

I'm appending a small test program for this.

Looking at the produced assembler files, you'll see the difference directly.

-- 
           Summary: hidden support broken with builtin functions
           Product: gcc
           Version: 3.4.0
            Status: UNCONFIRMED
          Severity: critical
          Priority: P2
         Component: c
        AssignedTo: zack at codesourcery dot com
        ReportedBy: aj at gcc dot gnu dot org
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: x86_64-linux-gnu
  GCC host triplet: x86_64-linux-gnu
GCC target triplet: x86_64-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13856


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]