__attribute__ (__cleanup__) vs. _Unwind_Resume
Thomas Schwinge
tschwinge@gnu.org
Mon Apr 20 14:18:00 GMT 2009
Hello!
After fixing the usual suspects, glibc HEAD currently fails to build like
this on GNU/Hurd:
i586-pc-gnu-gcc -shared -static-libgcc -Wl,-O1 -Wl,-z,defs -Wl,-dynamic-linker=/lib/ld.so.1 -B[...]/csu/ -Wl,--version-script=[...]/libc.map -Wl,-soname=libc.so.0.3 -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=both -nostdlib -nostartfiles -e __libc_main [...] -o [...]/libc.so [...] -lgcc
[...]/libc_pic.os: In function `__libc_readv':
[...]/sysdeps/posix/readv.c:61: undefined reference to `_Unwind_Resume'
[...]/libc_pic.os: In function `__libc_writev':
[...]/sysdeps/posix/writev.c:62: undefined reference to `_Unwind_Resume'
[...]/libc_pic.os:(.data.DW.ref.__gcc_personality_v0[DW.ref.__gcc_personality_v0]+0x0): undefined reference to `__gcc_personality_v0'
collect2: ld returned 1 exit status
This came up when Ulrich corrected sysdeps/posix/readv.c and writev.c for
proper cancellation handling using __attribute__ (__cleanup__). Linux
doesn't have this problem, as sysdeps/unix/sysv/linux/readv.c and
writev.c don't have to clean-up (at least as long as they don't use the
sysdeps/posix/ files, which they don't do as long as
__LINUX_KERNEL_VERSION is no less than 2.6.18, as per
__ASSUME_COMPLETE_READV_WRITEV).
One possibility to fix this would be to add -lgcc_eh to libc.so-gnulib in
Makeconfig (I don't know yet if that is legitimate), or perhaps, instead
of that, we should introduce / use something like
nptl/sysdeps/pthread/unwind-resume.c? Which one is possible, which one
do you prefer?
Regards,
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 191 bytes
Desc: Digital signature
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20090420/01f485ea/attachment.sig>
More information about the Libc-alpha
mailing list