yann@1: If I'm really lucky, this fixes the following error building with gcc-4.0.0: yann@1: yann@1: ../sysdeps/ieee754/dbl-64/s_isinf.c:29: error: 'isinf' aliased to undefined symbol '__isinf' yann@1: make[2]: *** [/home/dank/queue/jobdir.fast/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/math/s_isinf.os] Error 1 yann@1: make[1]: *** [math/subdir_lib] Error 2 yann@1: make: *** [lib] Error 2 yann@1: yann@1: --- yann@1: yann@1: yann@1: Revision 1.71, Thu Mar 17 21:06:27 2005 UTC (3 weeks, 5 days ago) by roland yann@1: Branch: MAIN yann@1: CVS Tags: fedora-glibc-20050405T2114, fedora-glibc-20050401T1444, fedora-glibc-20050324T0715, fedora-glibc-20050319T1907, HEAD yann@1: Changes since 1.70: +11 -66 lines yann@1: Diff to previous 1.70 (colored) yann@1: yann@1: 2005-03-16 Richard Henderson yann@1: yann@1: * include/libc-symbols.h (__hidden_proto): Remove bogus declaration yann@1: of internal. yann@1: (__hidden_def1, __hidden_dot_def1): Remove. yann@1: (__hidden_def2, __hidden_def3): Remove. yann@1: (__hidden_ver1): New. yann@1: (hidden_ver, hidden_def, hidden_weak): Use it. yann@1: (hidden_data_ver, hidden_data_ver, hidden_data_weak): Use non-data yann@1: version of the macro. yann@1: yann@1: http://sourceware.org/cgi-bin/cvsweb.cgi/libc/include/libc-symbols.h.diff?r1=1.70&r2=1.71&cvsroot=glibc yann@1: yann@1: =================================================================== yann@1: RCS file: /cvs/glibc/libc/include/libc-symbols.h,v yann@1: retrieving revision 1.70 yann@1: retrieving revision 1.71 yann@1: diff -u -r1.70 -r1.71 yann@1: --- libc/include/libc-symbols.h 2005/02/11 00:29:46 1.70 yann@1: +++ libc/include/libc-symbols.h 2005/03/17 21:06:27 1.71 yann@1: @@ -583,78 +583,23 @@ yann@1: # define hidden_proto(name, attrs...) \ yann@1: __hidden_proto (name, __GI_##name, ##attrs) yann@1: # define __hidden_proto(name, internal, attrs...) \ yann@1: - extern __typeof (name) internal; \ yann@1: extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ yann@1: __hidden_proto_hiddenattr (attrs); yann@1: # define __hidden_asmname(name) \ yann@1: __hidden_asmname1 (__USER_LABEL_PREFIX__, name) yann@1: # define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) yann@1: # define __hidden_asmname2(prefix, name) #prefix name yann@1: -# ifdef HAVE_ASM_SET_DIRECTIVE yann@1: -# define __hidden_def1(original, alias) \ yann@1: - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ yann@1: - .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) yann@1: -# ifdef HAVE_ASM_GLOBAL_DOT_NAME yann@1: -# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ yann@1: - ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ yann@1: - .set C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) yann@1: -# else yann@1: -# define __hidden_dot_def1(original, alias) yann@1: -# endif yann@1: -# else yann@1: -# define __hidden_def1(original, alias) \ yann@1: - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ yann@1: - C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) yann@1: -# ifdef HAVE_ASM_GLOBAL_DOT_NAME yann@1: -# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ yann@1: - ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ yann@1: - C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) yann@1: -# else yann@1: -# define __hidden_dot_def1(original, alias) yann@1: -# endif yann@1: -# endif yann@1: -# define __hidden_def2(...) #__VA_ARGS__ yann@1: -# define __hidden_def3(...) __hidden_def2 (__VA_ARGS__) yann@1: -# define hidden_def(name) \ yann@1: - __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name) \ yann@1: - __hidden_dot_def1 (__GI_##name, name))); yann@1: -# define hidden_data_def(name) \ yann@1: - __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name))); yann@1: -# define hidden_ver(local, name) \ yann@1: - __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name) \ yann@1: - __hidden_dot_def1 (local, __GI_##name))); yann@1: -# define hidden_data_ver(local, name) \ yann@1: - __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name))); yann@1: -# ifdef HAVE_WEAK_SYMBOLS yann@1: -# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE yann@1: -# define __hidden_weak1(original, alias) \ yann@1: - .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) yann@1: -# ifdef HAVE_ASM_GLOBAL_DOT_NAME yann@1: -# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ yann@1: - .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) yann@1: -# else yann@1: -# define __hidden_dot_weak1(original, alias) yann@1: -# endif yann@1: -# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ yann@1: -# define __hidden_weak1(original, alias) \ yann@1: - .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ yann@1: - C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) yann@1: -# ifdef HAVE_ASM_GLOBAL_DOT_NAME yann@1: -# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ yann@1: - .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ yann@1: - C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) yann@1: -# else yann@1: -# define __hidden_dot_weak1(original, alias) yann@1: -# endif yann@1: -# endif yann@1: -# define hidden_weak(name) \ yann@1: - __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name) \ yann@1: - __hidden_dot_weak1 (__GI_##name, name))); yann@1: -# define hidden_data_weak(name) \ yann@1: - __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name))); yann@1: -# else yann@1: -# define hidden_weak(name) hidden_def (name) yann@1: -# endif yann@1: +# define __hidden_ver1(local, internal, name) \ yann@1: + extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ yann@1: + extern __typeof (name) __EI_##name \ yann@1: + __attribute__((alias (__hidden_asmname (#local)))) yann@1: +# define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name); yann@1: +# define hidden_data_ver(local, name) hidden_ver(local, name) yann@1: +# define hidden_def(name) __hidden_ver1(__GI_##name, name, name); yann@1: +# define hidden_data_def(name) hidden_def(name) yann@1: +# define hidden_weak(name) \ yann@1: + __hidden_ver1(__GI_##name, name, name) __attribute__((weak)); yann@1: +# define hidden_data_weak(name) hidden_weak(name) yann@1: # else yann@1: /* For assembly, we need to do the opposite of what we do in C: yann@1: in assembly gcc __REDIRECT stuff is not in place, so functions