This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc 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] |
As discussed yesterday, GCC 3.4 needs to be aware of weak symbols. I'm appending a patch that solves all problems I noticed. This warning was fixed with some rearrangement of code: res_libc.c:95: error: weak declaration of `__res_init_weak' must precede definition With the appended patch, glibc builds and the testsuite passes (except some problems like test-float.out unrelated to weak functions). Ok to commit? Andreas 2003-01-03 Andreas Jaeger <aj@suse.de>, Jakub Jelinek <jakub@redhat.com> * resolv/res_libc.c: Provode declaration for __res_init_weak and reorder declarations. * include/libc-symbols.h (weak_extern): Use weak attribute instead of assembler so that GCC knows about it. linuxthreads/ChangeLog: 2003-01-03 Andreas Jaeger <aj@suse.de> * sysdeps/pthread/bits/libc-tsd.h: Declare weak_extern functions. ============================================================ Index: resolv/res_libc.c --- resolv/res_libc.c 30 Dec 2002 00:09:54 -0000 1.12 +++ resolv/res_libc.c 3 Jan 2003 10:41:09 -0000 @@ -92,7 +92,8 @@ compat_symbol (libc, _res, _res, GLIBC_2 #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2) # undef res_init -strong_alias (__res_init, __res_init_weak); +extern int __res_init_weak (void); weak_extern (__res_init_weak); +strong_alias (__res_init, __res_init_weak); compat_symbol (libc, __res_init_weak, res_init, GLIBC_2_0); #endif ============================================================ Index: linuxthreads/sysdeps/pthread/bits/libc-tsd.h --- linuxthreads/sysdeps/pthread/bits/libc-tsd.h 28 Dec 2002 10:13:56 -0000 1.8 +++ linuxthreads/sysdeps/pthread/bits/libc-tsd.h 3 Jan 2003 10:41:09 -0000 @@ -33,6 +33,10 @@ # include <bits/libc-lock.h> # ifndef SHARED +extern void ** __pthread_internal_tsd_address (int); +extern void *__pthread_internal_tsd_get (int); +extern int __pthread_internal_tsd_set (int, const void *); + weak_extern (__pthread_internal_tsd_address) weak_extern (__pthread_internal_tsd_get) weak_extern (__pthread_internal_tsd_set) ============================================================ Index: include/libc-symbols.h --- include/libc-symbols.h 10 Dec 2002 20:32:00 -0000 1.49 +++ include/libc-symbols.h 3 Jan 2003 10:41:09 -0000 @@ -1,6 +1,6 @@ /* Support macros for making weak and strong aliases for symbols, and for using symbol sets and linker warnings with GNU ld. - Copyright (C) 1995-1998,2000,2001,2002 Free Software Foundation, Inc. + Copyright (C) 1995-1998,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -116,24 +116,7 @@ extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ -# define weak_extern(symbol) _weak_extern (symbol) -# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE -# ifdef HAVE_ASM_GLOBAL_DOT_NAME -# define _weak_extern(symbol) \ - asm (".weakext " __SYMBOL_PREFIX #symbol "\n\t" \ - ".weakext ." __SYMBOL_PREFIX #symbol); -# else -# define _weak_extern(symbol) asm (".weakext " __SYMBOL_PREFIX #symbol); -# endif -# else -# ifdef HAVE_ASM_GLOBAL_DOT_NAME -# define _weak_extern(symbol) \ - asm (".weak " __SYMBOL_PREFIX #symbol "\n\t" \ - ".weak ." __SYMBOL_PREFIX #symbol); -# else -# define _weak_extern(symbol) asm (".weak " __SYMBOL_PREFIX #symbol); -# endif -# endif +# define weak_extern(name) extern __typeof (name) name __attribute__((weak)); # else -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj
Attachment:
msg00036/pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |