Magellan Linux

Annotation of /trunk/gcc/patches/gcc-3.4.4-linkonce-1.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 169 - (hide annotations) (download)
Tue May 8 21:36:54 2007 UTC (17 years ago) by niro
File size: 12526 byte(s)
-moved to patches subdir

1 niro 169 Submitted By: Jim Gifford (patches at jg555 dot com)
2     Date: 2004-11-05
3     Initial Package Version: 3.4.3
4     Origin: Jim Gifford
5     Upstream Status: Delayed till 3.4.4
6     Description: Fixes linkone/comdat issue
7    
8     diff -Naur gcc-3.4.3.orig/gcc/config/alpha/alpha.c gcc-3.4.3/gcc/config/alpha/alpha.c
9     --- gcc-3.4.3.orig/gcc/config/alpha/alpha.c 2004-09-30 17:45:48.000000000 +0000
10     +++ gcc-3.4.3/gcc/config/alpha/alpha.c 2004-11-05 17:08:46.220272104 +0000
11     @@ -10169,6 +10169,8 @@
12     # define TARGET_SECTION_TYPE_FLAGS unicosmk_section_type_flags
13     # undef TARGET_ASM_UNIQUE_SECTION
14     # define TARGET_ASM_UNIQUE_SECTION unicosmk_unique_section
15     +#undef TARGET_ASM_FUNCTION_RODATA_SECTION
16     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
17     # undef TARGET_ASM_GLOBALIZE_LABEL
18     # define TARGET_ASM_GLOBALIZE_LABEL hook_void_FILEptr_constcharptr
19     #endif
20     diff -Naur gcc-3.4.3.orig/gcc/config/arm/pe.h gcc-3.4.3/gcc/config/arm/pe.h
21     --- gcc-3.4.3.orig/gcc/config/arm/pe.h 2004-02-24 14:25:22.000000000 +0000
22     +++ gcc-3.4.3/gcc/config/arm/pe.h 2004-11-05 17:08:46.225271344 +0000
23     @@ -97,6 +97,7 @@
24     #define MULTIPLE_SYMBOL_SPACES
25    
26     #define TARGET_ASM_UNIQUE_SECTION arm_pe_unique_section
27     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
28    
29     #define SUPPORTS_ONE_ONLY 1
30    
31     diff -Naur gcc-3.4.3.orig/gcc/config/avr/avr.c gcc-3.4.3/gcc/config/avr/avr.c
32     --- gcc-3.4.3.orig/gcc/config/avr/avr.c 2004-09-28 01:13:55.000000000 +0000
33     +++ gcc-3.4.3/gcc/config/avr/avr.c 2004-11-05 17:56:54.764146688 +0000
34     @@ -229,6 +229,8 @@
35     #define TARGET_ASM_FUNCTION_EPILOGUE avr_output_function_epilogue
36     #undef TARGET_ATTRIBUTE_TABLE
37     #define TARGET_ATTRIBUTE_TABLE avr_attribute_table
38     +#undef TARGET_ASM_FUNCTION_RODATA_SECTION
39     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
40     #undef TARGET_INSERT_ATTRIBUTES
41     #define TARGET_INSERT_ATTRIBUTES avr_insert_attributes
42     #undef TARGET_SECTION_TYPE_FLAGS
43     diff -Naur gcc-3.4.3.orig/gcc/config/darwin.h gcc-3.4.3/gcc/config/darwin.h
44     --- gcc-3.4.3.orig/gcc/config/darwin.h 2004-09-11 20:32:17.000000000 +0000
45     +++ gcc-3.4.3/gcc/config/darwin.h 2004-11-05 17:08:46.300259944 +0000
46     @@ -686,6 +686,9 @@
47     #undef TARGET_ASM_SELECT_RTX_SECTION
48     #define TARGET_ASM_SELECT_RTX_SECTION machopic_select_rtx_section
49    
50     +#undef TARGET_ASM_FUNCTION_RODATA_SECTION
51     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
52     +
53     #define ASM_DECLARE_UNRESOLVED_REFERENCE(FILE,NAME) \
54     do { \
55     if (FILE) { \
56     diff -Naur gcc-3.4.3.orig/gcc/config/i386/cygming.h gcc-3.4.3/gcc/config/i386/cygming.h
57     --- gcc-3.4.3.orig/gcc/config/i386/cygming.h 2004-06-08 06:30:13.000000000 +0000
58     +++ gcc-3.4.3/gcc/config/i386/cygming.h 2004-11-05 17:08:46.304259336 +0000
59     @@ -255,6 +255,7 @@
60    
61     extern void i386_pe_unique_section (TREE, int);
62     #define TARGET_ASM_UNIQUE_SECTION i386_pe_unique_section
63     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
64    
65     #define SUPPORTS_ONE_ONLY 1
66    
67     diff -Naur gcc-3.4.3.orig/gcc/config/i386/i386-interix.h gcc-3.4.3/gcc/config/i386/i386-interix.h
68     --- gcc-3.4.3.orig/gcc/config/i386/i386-interix.h 2004-01-31 06:18:20.000000000 +0000
69     +++ gcc-3.4.3/gcc/config/i386/i386-interix.h 2004-11-05 17:08:46.307258880 +0000
70     @@ -344,6 +344,7 @@
71    
72     extern void i386_pe_unique_section (tree, int);
73     #define TARGET_ASM_UNIQUE_SECTION i386_pe_unique_section
74     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
75    
76     #define SUPPORTS_ONE_ONLY 1
77     #endif /* 0 */
78     diff -Naur gcc-3.4.3.orig/gcc/config/ip2k/ip2k.c gcc-3.4.3/gcc/config/ip2k/ip2k.c
79     --- gcc-3.4.3.orig/gcc/config/ip2k/ip2k.c 2004-01-31 06:18:25.000000000 +0000
80     +++ gcc-3.4.3/gcc/config/ip2k/ip2k.c 2004-11-05 17:08:46.352252040 +0000
81     @@ -98,6 +98,9 @@
82     #undef TARGET_ASM_UNIQUE_SECTION
83     #define TARGET_ASM_UNIQUE_SECTION unique_section
84    
85     +#undef TARGET_ASM_FUNCTION_RODATA_SECTION
86     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
87     +
88     #undef TARGET_ATTRIBUTE_TABLE
89     #define TARGET_ATTRIBUTE_TABLE ip2k_attribute_table
90    
91     diff -Naur gcc-3.4.3.orig/gcc/config/mcore/mcore.c gcc-3.4.3/gcc/config/mcore/mcore.c
92     --- gcc-3.4.3.orig/gcc/config/mcore/mcore.c 2004-01-31 06:18:29.000000000 +0000
93     +++ gcc-3.4.3/gcc/config/mcore/mcore.c 2004-11-05 17:08:46.384247176 +0000
94     @@ -165,6 +165,8 @@
95     #define TARGET_ATTRIBUTE_TABLE mcore_attribute_table
96     #undef TARGET_ASM_UNIQUE_SECTION
97     #define TARGET_ASM_UNIQUE_SECTION mcore_unique_section
98     +#undef TARGET_ASM_FUNCTION_RODATA_SECTION
99     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
100     #undef TARGET_ENCODE_SECTION_INFO
101     #define TARGET_ENCODE_SECTION_INFO mcore_encode_section_info
102     #undef TARGET_STRIP_NAME_ENCODING
103     diff -Naur gcc-3.4.3.orig/gcc/config/rs6000/xcoff.h gcc-3.4.3/gcc/config/rs6000/xcoff.h
104     --- gcc-3.4.3.orig/gcc/config/rs6000/xcoff.h 2004-01-31 06:18:34.000000000 +0000
105     +++ gcc-3.4.3/gcc/config/rs6000/xcoff.h 2004-11-05 17:08:46.000000000 +0000
106     @@ -172,6 +172,7 @@
107     #define TARGET_ASM_SELECT_SECTION rs6000_xcoff_select_section
108     #define TARGET_ASM_SELECT_RTX_SECTION rs6000_xcoff_select_rtx_section
109     #define TARGET_ASM_UNIQUE_SECTION rs6000_xcoff_unique_section
110     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
111     #define TARGET_STRIP_NAME_ENCODING rs6000_xcoff_strip_name_encoding
112     #define TARGET_SECTION_TYPE_FLAGS rs6000_xcoff_section_type_flags
113    
114     diff -Naur gcc-3.4.3.orig/gcc/doc/tm.texi gcc-3.4.3/gcc/doc/tm.texi
115     --- gcc-3.4.3.orig/gcc/doc/tm.texi 2004-10-13 14:16:27.000000000 +0000
116     +++ gcc-3.4.3/gcc/doc/tm.texi 2004-11-05 17:08:46.503229088 +0000
117     @@ -6003,6 +6003,15 @@
118     Whatever the actual target object format, this is often good enough.
119     @end deftypefn
120    
121     +@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_RODATA_SECTION (tree @var{decl})
122     +Switches to a readonly data section associated with
123     +@samp{DECL_SECTION_NAME (@var{decl})}.
124     +The default version of this function switches to @code{.gnu.linkonce.r.name}
125     +section if function's section is @code{.gnu.linkonce.t.name}, to
126     +@code{.rodata.name} if function is in @code{.text.name} section
127     +and otherwise switches to the normal readonly data section.
128     +@end deftypefn
129     +
130     @deftypefn {Target Hook} void TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode @var{mode}, rtx @var{x}, unsigned HOST_WIDE_INT @var{align})
131     Switches to the appropriate section for output of constant pool entry
132     @var{x} in @var{mode}. You can assume that @var{x} is some kind of
133     diff -Naur gcc-3.4.3.orig/gcc/final.c gcc-3.4.3/gcc/final.c
134     --- gcc-3.4.3.orig/gcc/final.c 2004-01-18 22:39:57.000000000 +0000
135     +++ gcc-3.4.3/gcc/final.c 2004-11-05 17:08:46.542223160 +0000
136     @@ -1881,7 +1881,7 @@
137     {
138     int log_align;
139    
140     - readonly_data_section ();
141     + targetm.asm_out.function_rodata_section (current_function_decl);
142    
143     #ifdef ADDR_VEC_ALIGN
144     log_align = ADDR_VEC_ALIGN (NEXT_INSN (insn));
145     diff -Naur gcc-3.4.3.orig/gcc/output.h gcc-3.4.3/gcc/output.h
146     --- gcc-3.4.3.orig/gcc/output.h 2004-01-18 22:39:57.000000000 +0000
147     +++ gcc-3.4.3/gcc/output.h 2004-11-05 17:08:46.549222096 +0000
148     @@ -500,6 +500,8 @@
149     unsigned HOST_WIDE_INT, int);
150     extern void default_unique_section (tree, int);
151     extern void default_unique_section_1 (tree, int, int);
152     +extern void default_function_rodata_section (tree);
153     +extern void default_no_function_rodata_section (tree);
154     extern void default_select_rtx_section (enum machine_mode, rtx,
155     unsigned HOST_WIDE_INT);
156     extern void default_elf_select_rtx_section (enum machine_mode, rtx,
157     diff -Naur gcc-3.4.3.orig/gcc/target-def.h gcc-3.4.3/gcc/target-def.h
158     --- gcc-3.4.3.orig/gcc/target-def.h 2004-08-23 18:02:40.000000000 +0000
159     +++ gcc-3.4.3/gcc/target-def.h 2004-11-05 17:08:46.553221488 +0000
160     @@ -78,6 +78,10 @@
161     #define TARGET_ASM_UNIQUE_SECTION default_unique_section
162     #endif
163    
164     +#ifndef TARGET_ASM_FUNCTION_RODATA_SECTION
165     +#define TARGET_ASM_FUNCTION_RODATA_SECTION default_function_rodata_section
166     +#endif
167     +
168     #ifndef TARGET_ASM_SELECT_RTX_SECTION
169     #define TARGET_ASM_SELECT_RTX_SECTION default_select_rtx_section
170     #endif
171     @@ -201,6 +205,7 @@
172     TARGET_ASM_SELECT_SECTION, \
173     TARGET_ASM_SELECT_RTX_SECTION, \
174     TARGET_ASM_UNIQUE_SECTION, \
175     + TARGET_ASM_FUNCTION_RODATA_SECTION, \
176     TARGET_ASM_CONSTRUCTOR, \
177     TARGET_ASM_DESTRUCTOR, \
178     TARGET_ASM_OUTPUT_MI_THUNK, \
179     diff -Naur gcc-3.4.3.orig/gcc/target.h gcc-3.4.3/gcc/target.h
180     --- gcc-3.4.3.orig/gcc/target.h 2004-08-23 18:02:41.000000000 +0000
181     +++ gcc-3.4.3/gcc/target.h 2004-11-05 17:08:46.558220728 +0000
182     @@ -118,6 +118,10 @@
183     for SELECT_SECTION. */
184     void (* unique_section) (tree, int);
185    
186     + /* Tell assembler to switch to the readonly data section associated
187     + with function DECL. */
188     + void (* function_rodata_section) (tree);
189     +
190     /* Output a constructor for a symbol with a given priority. */
191     void (* constructor) (rtx, int);
192    
193     diff -Naur gcc-3.4.3.orig/gcc/testsuite/g++.old-deja/g++.other/comdat4-aux.cc gcc-3.4.3/gcc/testsuite/g++.old-deja/g++.other/comdat4-aux.cc
194     --- gcc-3.4.3.orig/gcc/testsuite/g++.old-deja/g++.other/comdat4-aux.cc 1970-01-01 00:00:00.000000000 +0000
195     +++ gcc-3.4.3/gcc/testsuite/g++.old-deja/g++.other/comdat4-aux.cc 2004-11-05 17:08:46.560220424 +0000
196     @@ -0,0 +1,40 @@
197     +extern void
198     +bar (int x);
199     +
200     +inline void
201     +foo (int i)
202     +{
203     + switch (i)
204     + {
205     + case 3:
206     + case 5:
207     + case 6:
208     + case 9:
209     + case 15:
210     + bar (1);
211     + break;
212     + case 2:
213     + case 4:
214     + case 7:
215     + case 10:
216     + case 11:
217     + case 12:
218     + bar (2);
219     + break;
220     + case 0:
221     + case 1:
222     + case 8:
223     + case 13:
224     + case 16:
225     + bar (3);
226     + break;
227     + case 14:
228     + bar (4);
229     + break;
230     + default:
231     + bar (5);
232     + break;
233     + }
234     +}
235     +
236     +void *fooaddr2 = (void *) foo;
237     diff -Naur gcc-3.4.3.orig/gcc/testsuite/g++.old-deja/g++.other/comdat4.C gcc-3.4.3/gcc/testsuite/g++.old-deja/g++.other/comdat4.C
238     --- gcc-3.4.3.orig/gcc/testsuite/g++.old-deja/g++.other/comdat4.C 1970-01-01 00:00:00.000000000 +0000
239     +++ gcc-3.4.3/gcc/testsuite/g++.old-deja/g++.other/comdat4.C 2004-11-05 17:08:46.562220120 +0000
240     @@ -0,0 +1,57 @@
241     +// PR c++/16276
242     +// { dg-do link }
243     +// { dg-additional-sources " comdat4-aux.cc" }
244     +// { dg-options "-O2" }
245     +
246     +extern void
247     +bar (int x);
248     +
249     +inline void
250     +foo (int i)
251     +{
252     + switch (i)
253     + {
254     + case 3:
255     + case 5:
256     + case 6:
257     + case 9:
258     + case 15:
259     + bar (1);
260     + break;
261     + case 2:
262     + case 4:
263     + case 7:
264     + case 10:
265     + case 11:
266     + case 12:
267     + bar (2);
268     + break;
269     + case 0:
270     + case 1:
271     + case 8:
272     + case 13:
273     + case 16:
274     + bar (3);
275     + break;
276     + case 14:
277     + bar (4);
278     + break;
279     + default:
280     + bar (5);
281     + break;
282     + }
283     +}
284     +
285     +void *fooaddr = (void *) foo;
286     +
287     +void
288     +bar (int x)
289     +{
290     + __asm __volatile ("" : : "r" (x));
291     +}
292     +
293     +int
294     +main (void)
295     +{
296     + return 0;
297     +}
298     diff -Naur gcc-3.4.3.orig/gcc/varasm.c gcc-3.4.3/gcc/varasm.c
299     --- gcc-3.4.3.orig/gcc/varasm.c 2004-10-31 09:10:03.000000000 +0000
300     +++ gcc-3.4.3/gcc/varasm.c 2004-11-05 17:08:46.603213888 +0000
301     @@ -535,6 +535,53 @@
302     text_section ();
303     }
304    
305     +/* Switch to read-only data section associated with function DECL. */
306     +
307     +void
308     +default_function_rodata_section (tree decl)
309     +{
310     + if (decl != NULL_TREE && DECL_SECTION_NAME (decl))
311     + {
312     + const char *name = TREE_STRING_POINTER (DECL_SECTION_NAME (decl));
313     +
314     + /* For .gnu.linkonce.t.foo we want to use .gnu.linkonce.r.foo. */
315     + if (DECL_ONE_ONLY (decl) && strncmp (name, ".gnu.linkonce.t.", 16) == 0)
316     + {
317     + size_t len = strlen (name) + 1;
318     + char *rname = alloca (len);
319     +
320     + memcpy (rname, name, len);
321     + rname[14] = 'r';
322     + named_section_flags (rname, SECTION_LINKONCE);
323     + return;
324     + }
325     + /* For .text.foo we want to use .rodata.foo. */
326     + else if (flag_function_sections && flag_data_sections
327     + && strncmp (name, ".text.", 6) == 0)
328     + {
329     + size_t len = strlen (name) + 1;
330     + char *rname = alloca (len + 2);
331     +
332     + memcpy (rname, ".rodata", 7);
333     + memcpy (rname + 7, name + 5, len - 5);
334     + named_section_flags (rname, 0);
335     + return;
336     + }
337     + }
338     +
339     + readonly_data_section ();
340     +}
341     +
342     +/* Switch to read-only data section associated with function DECL
343     + for targets where that section should be always the single
344     + readonly data section. */
345     +
346     +void
347     +default_no_function_rodata_section (tree decl ATTRIBUTE_UNUSED)
348     +{
349     + readonly_data_section ();
350     +}
351     +
352     /* Switch to section for variable DECL. RELOC is the same as the
353     argument to SELECT_SECTION. */
354    

Properties

Name Value
svn:executable *