Skip to contentSkip to conversation

GLIBC __deregister_frame_pointer compiler error

Linux-ia64 Michael Madore 2 participants 4 messages Jul 27, 2000

lore
Share & tools
lore
#0 lore raw

Hi,

While trying to compile glibc on the 2.4 kernel, I get the error messages included below. On 2.3.99, everything compiles fine. Any ideas where to look to solve this?

Thanks
Mike Madore
Software Engineer
TurboLinux, Inc.

gcc -nostdlib -nostartfiles -o
/usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcinfo -Wl,-dynamic-linker=/lib/ld-linux-ia64.so.1 /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/csu/crt1.o /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/csu/crti.o gcc --print-file-name=crtbegin.o /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcinfo.o -Wl,-rpath-link=/usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux:

      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/math:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/elf:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/nss:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/nis:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/db2:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/rt:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/resolv:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/linuxthreads 
   /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/libc.so.0 
   /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/libc_nonshared.a -lgcc 
   `gcc --print-file-name=crtend.o` 
   /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/csu/crtn.o
   /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/elf/ld-linux-ia64.so.1 
   --library-path /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/math:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/elf:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/nss:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/nis:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/db2:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/rt:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/resolv:
      /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/linuxthreads 

/usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcgen -Y gcc -print-file-name=cpp | sed "s|/cpp$||" -c rpcsvc/bootparam_prot.x -o /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/xbootparam_prot.T

/usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcgen:
: no version information available
(required by /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcgen)

/usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcgen:
: no version information available
(required by /usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcgen)

/usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcgen:
error in loading shared libraries:
/usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc/rpcgen:
symbol __deregister_frame_info, version GLIBC_2.0 not defined in file libc.so.0 with link time reference

make[2]: *** [/usr/src/turbo/BUILD/glibc-2.1-hjl/build-ia64-linux/sunrpc
/xbootparam_prot.stmp] Error 127

make[2]: Leaving directory `/usr/src/turbo/BUILD/glibc-2.1-hjl/sunrpc' make[1]: *** [sunrpc/others] Error 2
make[1]: Leaving directory `/usr/src/turbo/BUILD/glibc-2.1-hjl'
make: *** [all] Error 2
Bad exit status from /var/tmp/rpm-tmp.21464 (%build)

#1 lore raw

While trying to compile glibc on the 2.4 kernel, I get the error messages included below. On 2.3.99, everything compiles fine. Any ideas where to look to solve this?

Something must have changed. Just changing the kernel shouldn't cause a previously working build to fail.

However, there is a known problem here. glibc has a list of routines exported from libgcc. This list contains gcc internal EH routines. This list of EH routines is now different because of the IA-64 specific EH support. If you delete these EH routines from the glibc export list, or if you add the new IA-64 specific routines, then this problem will go away. Either way, you are making an ABI change, so this may require recompiling all libraries and applications linked against glibc.

The specific file to look at is csu/Versions, and look at section "Exception handling support functions from libgcc".

Ulrich is already aware of the problem, and is planning to do something about it, though I don't know exactly what.

I have only seen this problem show up when trying to link against C++ shared libraries. Oh, I remember why, whether the problem shows up or not depends on which order you link in libgcc and glibc. I don't remember which order it was that failed, but you can experiment.

The Red Hat OS group deleted all of the EH routines from their version of glibc to avoid this problem with their builds.

Jim

#2 lore raw
In reply to Michael Madore

I tried removing this section and recompiling, but I still get the same error message. Do I need to alter anything else?

No. You change the csu/Versions file, you build glibc, and then link against the new glibc.

I don't know why you would see problems while building glibc, since you don't link glibc against itself when building it.

Jim

#3 lore raw
In reply to Michael Madore

Hi Jim,

Quoted 6 lines

While trying to compile glibc on the 2.4 kernel, I get the error messages included below. On 2.3.99, everything compiles fine. Any ideas where to look to solve this?

Something must have changed. Just changing the kernel shouldn't cause a previously working build to fail.

I first tried building with 2.4 kernel and header files. When that failed, I replaced the 2.4 header files and kernel with 2.3.99. After restarting the machine, I was able to compile glibc.

Quoted 10 lines

However, there is a known problem here. glibc has a list of routines exported from libgcc. This list contains gcc internal EH routines. This list of EH routines is now different because of the IA-64 specific EH support. If you delete these EH routines from the glibc export list, or if you add the new IA-64 specific routines, then this problem will go away. Either way, you are making an ABI change, so this may require recompiling all libraries and applications linked against glibc.

The specific file to look at is csu/Versions, and look at section "Exception handling support functions from libgcc".

I tried removing this section and recompiling, but I still get the same error message. Do I need to alter anything else?

Quoted 4 lines

I have only seen this problem show up when trying to link against C++ shared libraries. Oh, I remember why, whether the problem shows up or not depends on which order you link in libgcc and glibc. I don't remember which order it was that failed, but you can experiment.

I think if you link libc first you get the unresolved symbols.

Mike Madore