Contents of /trunk/glibc/patches/glibc-2.3.5-gcc4_fix_symbols-1.patch
Parent Directory | Revision Log
Revision 144 -
(show annotations)
(download)
Tue May 8 20:06:05 2007 UTC (17 years, 4 months ago) by niro
File size: 4803 byte(s)
Tue May 8 20:06:05 2007 UTC (17 years, 4 months ago) by niro
File size: 4803 byte(s)
-import
1 | Submitted By: Matthew Burgess <matthew@linuxfromscratch.org> |
2 | Date: 2005-07-15 |
3 | Initial Package Version: 2.3.5 |
4 | Upstream Status: From Upstream (libc/include/libc-symbols.h -r1.71) |
5 | Origin: Ryan Oliver, courtesy of Dan Kegel's crosstool |
6 | (http://kegel.com/crosstool/) |
7 | Description: Fixes a compilation problem with gcc-4.0.x that results in: |
8 | ../sysdeps/ieee754/dbl-64/s_isinf.c:29: error: 'isinf' aliased to |
9 | undefined symbol '__isinf' |
10 | |
11 | diff -Naur glibc-2.3.5.orig/include/libc-symbols.h glibc-2.3.5/include/libc-symbols.h |
12 | --- glibc-2.3.5.orig/include/libc-symbols.h 2004-10-24 21:17:08.000000000 +0000 |
13 | +++ glibc-2.3.5/include/libc-symbols.h 2005-07-15 17:31:10.854233888 +0000 |
14 | @@ -582,78 +582,23 @@ |
15 | # define hidden_proto(name, attrs...) \ |
16 | __hidden_proto (name, __GI_##name, ##attrs) |
17 | # define __hidden_proto(name, internal, attrs...) \ |
18 | - extern __typeof (name) internal; \ |
19 | extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ |
20 | __hidden_proto_hiddenattr (attrs); |
21 | # define __hidden_asmname(name) \ |
22 | __hidden_asmname1 (__USER_LABEL_PREFIX__, name) |
23 | # define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) |
24 | # define __hidden_asmname2(prefix, name) #prefix name |
25 | -# ifdef HAVE_ASM_SET_DIRECTIVE |
26 | -# define __hidden_def1(original, alias) \ |
27 | - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ |
28 | - .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) |
29 | -# ifdef HAVE_ASM_GLOBAL_DOT_NAME |
30 | -# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ |
31 | - ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ |
32 | - .set C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) |
33 | -# else |
34 | -# define __hidden_dot_def1(original, alias) |
35 | -# endif |
36 | -# else |
37 | -# define __hidden_def1(original, alias) \ |
38 | - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ |
39 | - C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) |
40 | -# ifdef HAVE_ASM_GLOBAL_DOT_NAME |
41 | -# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ |
42 | - ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ |
43 | - C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) |
44 | -# else |
45 | -# define __hidden_dot_def1(original, alias) |
46 | -# endif |
47 | -# endif |
48 | -# define __hidden_def2(...) #__VA_ARGS__ |
49 | -# define __hidden_def3(...) __hidden_def2 (__VA_ARGS__) |
50 | -# define hidden_def(name) \ |
51 | - __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name) \ |
52 | - __hidden_dot_def1 (__GI_##name, name))); |
53 | -# define hidden_data_def(name) \ |
54 | - __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name))); |
55 | -# define hidden_ver(local, name) \ |
56 | - __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name) \ |
57 | - __hidden_dot_def1 (local, __GI_##name))); |
58 | -# define hidden_data_ver(local, name) \ |
59 | - __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name))); |
60 | -# ifdef HAVE_WEAK_SYMBOLS |
61 | -# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE |
62 | -# define __hidden_weak1(original, alias) \ |
63 | - .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) |
64 | -# ifdef HAVE_ASM_GLOBAL_DOT_NAME |
65 | -# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ |
66 | - .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) |
67 | -# else |
68 | -# define __hidden_dot_weak1(original, alias) |
69 | -# endif |
70 | -# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ |
71 | -# define __hidden_weak1(original, alias) \ |
72 | - .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ |
73 | - C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) |
74 | -# ifdef HAVE_ASM_GLOBAL_DOT_NAME |
75 | -# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ |
76 | - .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ |
77 | - C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) |
78 | -# else |
79 | -# define __hidden_dot_weak1(original, alias) |
80 | -# endif |
81 | -# endif |
82 | -# define hidden_weak(name) \ |
83 | - __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name) \ |
84 | - __hidden_dot_weak1 (__GI_##name, name))); |
85 | -# define hidden_data_weak(name) \ |
86 | - __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name))); |
87 | -# else |
88 | -# define hidden_weak(name) hidden_def (name) |
89 | -# endif |
90 | +# define __hidden_ver1(local, internal, name) \ |
91 | + extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ |
92 | + extern __typeof (name) __EI_##name \ |
93 | + __attribute__((alias (__hidden_asmname (#local)))) |
94 | +# define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name); |
95 | +# define hidden_data_ver(local, name) hidden_ver(local, name) |
96 | +# define hidden_def(name) __hidden_ver1(__GI_##name, name, name); |
97 | +# define hidden_data_def(name) hidden_def(name) |
98 | +# define hidden_weak(name) \ |
99 | + __hidden_ver1(__GI_##name, name, name) __attribute__((weak)); |
100 | +# define hidden_data_weak(name) hidden_weak(name) |
101 | # else |
102 | /* For assembly, we need to do the opposite of what we do in C: |
103 | in assembly gcc __REDIRECT stuff is not in place, so functions |