source: patches/binutils-2.17-branch_update-2.patch@ d86525a

clfs-1.2 clfs-2.1 clfs-3.0.0-systemd clfs-3.0.0-sysvinit systemd sysvinit
Last change on this file since d86525a was 1b97e2d, checked in by Jim Gifford <clfs@…>, 18 years ago

Update Binutils Branch Update Patch

  • Property mode set to 100644
File size: 21.8 KB
RevLine 
[1b97e2d]1Submitted By: Jim Gifford jim at linuxfromscratch dot org>
2Orginally Submitted By: Robert Connolly <robert at linuxfromscratch dot org>
3Date: 2007-01-12
[c4678fd]4Initial Package Version: 2.17
5Upstream Status: From Upstream
6Origin: cvs -z 9 -d :pserver:anoncvs@sourceware.org:/cvs/src co \
7 -rbinutils-2_17-branch binutils
8Description: This is the binutils-2_17-branch (bug fix branch) update,
9compared from binutils-2.17-release and binutils-2_17-branch with all
10the fluff removed (CVS entries, maintainer files, etc). This patch
11should be updated periodically.
12
[1b97e2d]13diff -Naur binutils-2.17.orig/bfd/bfd-in2.h binutils-2.17/bfd/bfd-in2.h
14--- binutils-2.17.orig/bfd/bfd-in2.h 2006-03-25 16:38:42.000000000 -0800
15+++ binutils-2.17/bfd/bfd-in2.h 2006-07-18 19:37:04.000000000 -0700
[c4678fd]16@@ -643,6 +643,12 @@
17 DYN_NO_NEEDED = 8
18 };
19
20+enum notice_asneeded_action {
21+ notice_as_needed,
22+ notice_not_needed,
23+ notice_needed
24+};
25+
26 extern bfd_boolean bfd_elf_record_link_assignment
27 (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
28 bfd_boolean);
[1b97e2d]29diff -Naur binutils-2.17.orig/bfd/bfd-in.h binutils-2.17/bfd/bfd-in.h
30--- binutils-2.17.orig/bfd/bfd-in.h 2006-03-16 04:20:15.000000000 -0800
31+++ binutils-2.17/bfd/bfd-in.h 2006-07-18 19:37:04.000000000 -0700
[c4678fd]32@@ -636,6 +636,12 @@
33 DYN_NO_NEEDED = 8
34 };
35
36+enum notice_asneeded_action {
37+ notice_as_needed,
38+ notice_not_needed,
39+ notice_needed
40+};
41+
42 extern bfd_boolean bfd_elf_record_link_assignment
43 (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
44 bfd_boolean);
[1b97e2d]45diff -Naur binutils-2.17.orig/bfd/ChangeLog binutils-2.17/bfd/ChangeLog
46--- binutils-2.17.orig/bfd/ChangeLog 2006-06-23 11:18:16.000000000 -0700
47+++ binutils-2.17/bfd/ChangeLog 2006-12-11 06:52:38.000000000 -0800
48@@ -1,3 +1,30 @@
49+2006-12-11 Eric Botcazou <ebotcazou@adacore.com>
50+
51+ * elflink.c (bfd_elf_gc_sections): Also search for corresponding
52+ sections with .gnu.linkonce.t. prefix.
53+
[c4678fd]54+2006-08-08 Nick Clifton <nickc@redhat.com>
55+
56+ PR binutils/2724
57+ * coffcode.h (coff_new_section_hook): Only modify the section
58+ symbol of sections which were created by the user.
59+
60+2006-07-19 Alan Modra <amodra@bigpond.net.au>
61+
62+ * bfd-in.h (enum notice_asneeded_action): Define.
63+ * bfd-in2.h: Regenerate.
64+ * elflink.c (elf_link_add_object_symbols): Call linker "notice"
65+ function with NULL name for as-needed handling.
66+
67+2006-07-12 Matthew R. Dempsky <mrd@alkemio.org>
68+
69+ * cpu-m68k.c (bfd_m68k_compatible): Handle CPU32.
70+
71+2006-06-23 Daniel Jacobowitz <dan@codesourcery.com>
72+
73+ * Makefile.am: Clear RELEASE.
74+ * Makefile.in: Regenerated.
75+
76 2006-06-23 Daniel Jacobowitz <dan@codesourcery.com>
77
78 * configure.in: Update version to 2.17.
[1b97e2d]79diff -Naur binutils-2.17.orig/bfd/coffcode.h binutils-2.17/bfd/coffcode.h
80--- binutils-2.17.orig/bfd/coffcode.h 2005-10-25 10:40:09.000000000 -0700
81+++ binutils-2.17/bfd/coffcode.h 2006-08-08 01:19:57.000000000 -0700
[c4678fd]82@@ -1546,9 +1546,6 @@
83 static bfd_boolean
84 coff_new_section_hook (bfd * abfd, asection * section)
85 {
86- combined_entry_type *native;
87- bfd_size_type amt;
88-
89 section->alignment_power = COFF_DEFAULT_SECTION_ALIGNMENT_POWER;
90
91 #ifdef RS6000COFF_C
92@@ -1560,27 +1557,34 @@
93 section->alignment_power = bfd_xcoff_data_align_power (abfd);
94 #endif
95
96- /* Allocate aux records for section symbols, to store size and
97- related info.
98-
99- @@ The 10 is a guess at a plausible maximum number of aux entries
100- (but shouldn't be a constant). */
101- amt = sizeof (combined_entry_type) * 10;
102- native = bfd_zalloc (abfd, amt);
103- if (native == NULL)
104- return FALSE;
105-
106- /* We don't need to set up n_name, n_value, or n_scnum in the native
107- symbol information, since they'll be overridden by the BFD symbol
108- anyhow. However, we do need to set the type and storage class,
109- in case this symbol winds up getting written out. The value 0
110- for n_numaux is already correct. */
111-
112- native->u.syment.n_type = T_NULL;
113- native->u.syment.n_sclass = C_STAT;
114+ /* PR binutils/2724: Only real sections have a symbol that
115+ has the coff_symbol_type structure allocated for it. */
116+ if (! bfd_is_const_section (section))
117+ {
118+ combined_entry_type *native;
119+ bfd_size_type amt;
120+
121+ /* Allocate aux records for section symbols, to store size and
122+ related info.
123+
124+ @@ The 10 is a guess at a plausible maximum number of aux entries
125+ (but shouldn't be a constant). */
126+ amt = sizeof (combined_entry_type) * 10;
127+ native = bfd_zalloc (abfd, amt);
128+ if (native == NULL)
129+ return FALSE;
130
131- coffsymbol (section->symbol)->native = native;
132+ /* We don't need to set up n_name, n_value, or n_scnum in the native
133+ symbol information, since they'll be overridden by the BFD symbol
134+ anyhow. However, we do need to set the type and storage class,
135+ in case this symbol winds up getting written out. The value 0
136+ for n_numaux is already correct. */
137+ native->u.syment.n_type = T_NULL;
138+ native->u.syment.n_sclass = C_STAT;
139
140+ coffsymbol (section->symbol)->native = native;
141+ }
142+
143 coff_set_custom_section_alignment (abfd, section,
144 coff_section_alignment_table,
145 coff_section_alignment_table_size);
[1b97e2d]146diff -Naur binutils-2.17.orig/bfd/cpu-m68k.c binutils-2.17/bfd/cpu-m68k.c
147--- binutils-2.17.orig/bfd/cpu-m68k.c 2006-03-25 02:24:27.000000000 -0800
148+++ binutils-2.17/bfd/cpu-m68k.c 2006-07-12 05:55:21.000000000 -0700
[c4678fd]149@@ -202,6 +202,9 @@
150 if (a->mach <= bfd_mach_m68060 && b->mach <= bfd_mach_m68060)
151 /* Merge m68k machine. */
152 return a->mach > b->mach ? a : b;
153+ else if (a->mach == bfd_mach_cpu32 && b->mach == bfd_mach_cpu32)
154+ /* CPU32 is compatible with itself. */
155+ return a;
156 else if (a->mach >= bfd_mach_mcf_isa_a_nodiv
157 && b->mach >= bfd_mach_mcf_isa_a_nodiv)
158 {
[1b97e2d]159diff -Naur binutils-2.17.orig/bfd/elflink.c binutils-2.17/bfd/elflink.c
160--- binutils-2.17.orig/bfd/elflink.c 2006-05-22 08:06:36.000000000 -0700
161+++ binutils-2.17/bfd/elflink.c 2006-12-11 06:52:39.000000000 -0800
[c4678fd]162@@ -3496,6 +3496,13 @@
163 if (alloc_mark == NULL)
164 goto error_free_vers;
165
166+ /* Make a special call to the linker "notice" function to
167+ tell it that we are about to handle an as-needed lib. */
168+ if (!(*info->callbacks->notice) (info, NULL, abfd, NULL,
169+ notice_as_needed))
170+ return FALSE;
171+
172+
173 /* Clone the symbol table and sym hashes. Remember some
174 pointers into the symbol table, and dynamic symbol count. */
175 old_hash = (char *) old_tab + tabsize;
176@@ -4169,6 +4176,12 @@
177 }
178 }
179
180+ /* Make a special call to the linker "notice" function to
181+ tell it that symbols added for crefs may need to be removed. */
182+ if (!(*info->callbacks->notice) (info, NULL, abfd, NULL,
183+ notice_not_needed))
184+ return FALSE;
185+
186 free (old_tab);
187 objalloc_free_block ((struct objalloc *) htab->root.table.memory,
188 alloc_mark);
189@@ -4179,6 +4192,9 @@
190
191 if (old_tab != NULL)
192 {
193+ if (!(*info->callbacks->notice) (info, NULL, abfd, NULL,
194+ notice_needed))
195+ return FALSE;
196 free (old_tab);
197 old_tab = NULL;
198 }
[1b97e2d]199@@ -9239,7 +9255,8 @@
200 if (bfd_get_flavour (sub) != bfd_target_elf_flavour)
201 continue;
[c4678fd]202
[1b97e2d]203- /* Keep .gcc_except_table.* if the associated .text.* is
204+ /* Keep .gcc_except_table.* if the associated .text.* (or the
205+ associated .gnu.linkonce.t.* if .text.* doesn't exist) is
206 marked. This isn't very nice, but the proper solution,
207 splitting .eh_frame up and using comdat doesn't pan out
208 easily due to needing special relocs to handle the
209@@ -9255,12 +9272,23 @@
210 asection *fn_text;
[c4678fd]211
[1b97e2d]212 len = strlen (o->name + 18) + 1;
213- fn_name = bfd_malloc (len + 6);
214+ fn_name = bfd_malloc (len + 16);
215 if (fn_name == NULL)
216 return FALSE;
217+
218+ /* Try the first prefix. */
219 memcpy (fn_name, ".text.", 6);
220 memcpy (fn_name + 6, o->name + 18, len);
221 fn_text = bfd_get_section_by_name (sub, fn_name);
222+
223+ /* Try the second prefix. */
224+ if (fn_text == NULL)
225+ {
226+ memcpy (fn_name, ".gnu.linkonce.t.", 16);
227+ memcpy (fn_name + 16, o->name + 18, len);
228+ fn_text = bfd_get_section_by_name (sub, fn_name);
229+ }
230+
231 free (fn_name);
232 if (fn_text == NULL || !fn_text->gc_mark)
233 continue;
234diff -Naur binutils-2.17.orig/bfd/version.h binutils-2.17/bfd/version.h
235--- binutils-2.17.orig/bfd/version.h 2006-06-23 11:14:41.000000000 -0700
236+++ binutils-2.17/bfd/version.h 2007-01-11 15:00:19.000000000 -0800
[c4678fd]237@@ -1,3 +1,3 @@
238-#define BFD_VERSION_DATE 20060623
[1b97e2d]239+#define BFD_VERSION_DATE 20070112
[c4678fd]240 #define BFD_VERSION @bfd_version@
241 #define BFD_VERSION_STRING @bfd_version_string@
[1b97e2d]242diff -Naur binutils-2.17.orig/binutils/ChangeLog binutils-2.17/binutils/ChangeLog
243--- binutils-2.17.orig/binutils/ChangeLog 2006-06-12 06:05:03.000000000 -0700
244+++ binutils-2.17/binutils/ChangeLog 2006-08-15 05:01:21.000000000 -0700
[c4678fd]245@@ -1,3 +1,8 @@
246+2006-08-15 Nick Clifton <nickc@redhat.com>
247+
248+ PR binutils/3039
249+ * wrstabs.c (stab_tag_type): Initialize 'size'.
250+
251 2006-06-07 Joseph S. Myers <joseph@codesourcery.com>
252
253 * po/Make-in (pdf, ps): New dummy targets.
[1b97e2d]254diff -Naur binutils-2.17.orig/binutils/wrstabs.c binutils-2.17/binutils/wrstabs.c
255--- binutils-2.17.orig/binutils/wrstabs.c 2006-03-16 04:20:16.000000000 -0800
256+++ binutils-2.17/binutils/wrstabs.c 2006-08-15 05:01:21.000000000 -0700
[c4678fd]257@@ -1869,7 +1869,7 @@
258 {
259 struct stab_write_handle *info = (struct stab_write_handle *) p;
260 long index;
261- unsigned int size;
262+ unsigned int size = 0;
263
264 index = stab_get_struct_index (info, name, id, kind, &size);
265 if (index < 0)
[1b97e2d]266diff -Naur binutils-2.17.orig/configure.in binutils-2.17/configure.in
267--- binutils-2.17.orig/configure.in 2006-06-23 11:19:53.000000000 -0700
268+++ binutils-2.17/configure.in 2006-04-06 14:49:25.000000000 -0700
[c4678fd]269@@ -130,7 +130,7 @@
270 # know that we are building the simulator.
271 # binutils, gas and ld appear in that order because it makes sense to run
272 # "make check" in that particular order.
273-host_tools="byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
274+host_tools="texinfo byacc flex bison binutils gas ld fixincludes gcc sid sim gdb make patch prms send-pr gprof etc expect dejagnu ash bash bzip2 m4 autoconf automake libtool diff rcs fileutils shellutils time textutils wdiff find uudecode hello tar gzip indent recode release sed utils guile perl gawk findutils gettext zip fastjar gnattools"
275
276 # libgcj represents the runtime libraries only used by gcj.
277 libgcj="target-libffi \
[1b97e2d]278diff -Naur binutils-2.17.orig/gas/ChangeLog binutils-2.17/gas/ChangeLog
279--- binutils-2.17.orig/gas/ChangeLog 2006-06-12 06:05:03.000000000 -0700
280+++ binutils-2.17/gas/ChangeLog 2006-07-18 19:06:08.000000000 -0700
[c4678fd]281@@ -1,3 +1,8 @@
282+2006-07-19 Mat Hostetter <mat@lcs.mit.edu>
283+
284+ * symbols.c (report_op_error): Fix pasto. Don't use as_bad_where
285+ when file and line unknown.
286+
287 2006-06-07 Joseph S. Myers <joseph@codesourcery.com>
288
289 * po/Make-in (pdf, ps): New dummy targets.
[1b97e2d]290diff -Naur binutils-2.17.orig/gas/symbols.c binutils-2.17/gas/symbols.c
291--- binutils-2.17.orig/gas/symbols.c 2006-01-09 09:14:40.000000000 -0800
292+++ binutils-2.17/gas/symbols.c 2006-07-18 19:06:08.000000000 -0700
[c4678fd]293@@ -928,13 +928,11 @@
294 && seg_right != undefined_section)
295 {
296 if (right)
297- as_bad_where (file, line,
298- _("invalid sections for operation on `%s' and `%s' setting `%s'"),
299- S_GET_NAME (left), S_GET_NAME (right), S_GET_NAME (symp));
300+ as_bad (_("invalid sections for operation on `%s' and `%s' setting `%s'"),
301+ S_GET_NAME (left), S_GET_NAME (right), S_GET_NAME (symp));
302 else
303- as_bad_where (file, line,
304- _("invalid section for operation on `%s' setting `%s'"),
305- S_GET_NAME (left), S_GET_NAME (symp));
306+ as_bad (_("invalid section for operation on `%s' setting `%s'"),
307+ S_GET_NAME (left), S_GET_NAME (symp));
308 }
309 }
310 }
[1b97e2d]311diff -Naur binutils-2.17.orig/ld/ChangeLog binutils-2.17/ld/ChangeLog
312--- binutils-2.17.orig/ld/ChangeLog 2006-06-12 06:07:28.000000000 -0700
313+++ binutils-2.17/ld/ChangeLog 2006-07-18 19:37:05.000000000 -0700
[c4678fd]314@@ -1,3 +1,20 @@
315+2006-07-19 Alan Modra <amodra@bigpond.net.au>
316+
317+ * ld.h (handle_asneeded_cref): Declare.
318+ * ldcref.c: Include objalloc.h.
319+ (old_table, old_tab, alloc_mark): New variables.
320+ (tabsize, entsize, refsize, old_symcount): Likewise.
321+ (add_cref): Use bfd_hash_allocate for refs.
322+ (handle_asneeded_cref): New function.
323+ * ldmain.c (notice): Call handle_asneeded_cref for NULL name.
324+
325+2006-07-04 Daniel Jacobowitz <dan@codesourcery.com>
326+
327+ Backport:
328+ 2006-05-19 Alan Modra <amodra@bigpond.net.au>
329+ * ldlang.c (lang_size_sections_1): Don't check mem regions for
330+ os->ignored sections.
331+
332 2006-06-12 Fred Fish <fnf@specifix.com>
333
334 * emulparams/elf32bmip.sh (OTHER_SECTIONS): Keep the
[1b97e2d]335diff -Naur binutils-2.17.orig/ld/ldcref.c binutils-2.17/ld/ldcref.c
336--- binutils-2.17.orig/ld/ldcref.c 2006-03-16 04:20:16.000000000 -0800
337+++ binutils-2.17/ld/ldcref.c 2006-07-18 19:37:05.000000000 -0700
[c4678fd]338@@ -27,6 +27,7 @@
339 #include "sysdep.h"
340 #include "bfdlink.h"
341 #include "libiberty.h"
342+#include "objalloc.h"
343
344 #include "ld.h"
345 #include "ldmain.h"
346@@ -101,6 +102,15 @@
347
348 static size_t cref_symcount;
349
350+/* Used to take a snapshot of the cref hash table when starting to
351+ add syms from an as-needed library. */
352+static struct bfd_hash_entry **old_table;
353+static unsigned int old_size;
354+static void *old_tab;
355+static void *alloc_mark;
356+static size_t tabsize, entsize, refsize;
357+static size_t old_symcount;
358+
359 /* Create an entry in a cref hash table. */
360
361 static struct bfd_hash_entry *
362@@ -165,7 +175,9 @@
363
364 if (r == NULL)
365 {
366- r = xmalloc (sizeof *r);
367+ r = bfd_hash_allocate (&cref_table.root, sizeof *r);
368+ if (r == NULL)
369+ einfo (_("%X%P: cref alloc failed: %E\n"));
370 r->next = h->refs;
371 h->refs = r;
372 r->abfd = abfd;
373@@ -182,6 +194,123 @@
374 r->def = TRUE;
375 }
376
377+/* Called before loading an as-needed library to take a snapshot of
378+ the cref hash table, and after we have loaded or found that the
379+ library was not needed. */
380+
381+bfd_boolean
382+handle_asneeded_cref (bfd *abfd ATTRIBUTE_UNUSED,
383+ enum notice_asneeded_action act)
384+{
385+ unsigned int i;
386+
387+ if (!cref_initialized)
388+ return TRUE;
389+
390+ if (act == notice_as_needed)
391+ {
392+ char *old_ent, *old_ref;
393+
394+ for (i = 0; i < cref_table.root.size; i++)
395+ {
396+ struct bfd_hash_entry *p;
397+ struct cref_hash_entry *c;
398+ struct cref_ref *r;
399+
400+ for (p = cref_table.root.table[i]; p != NULL; p = p->next)
401+ {
402+ entsize += cref_table.root.entsize;
403+ c = (struct cref_hash_entry *) p;
404+ for (r = c->refs; r != NULL; r = r->next)
405+ refsize += sizeof (struct cref_hash_entry);
406+ }
407+ }
408+
409+ tabsize = cref_table.root.size * sizeof (struct bfd_hash_entry *);
410+ old_tab = xmalloc (tabsize + entsize + refsize);
411+
412+ alloc_mark = bfd_hash_allocate (&cref_table.root, 1);
413+ if (alloc_mark == NULL)
414+ return FALSE;
415+
416+ memcpy (old_tab, cref_table.root.table, tabsize);
417+ old_ent = (char *) old_tab + tabsize;
418+ old_ref = (char *) old_ent + entsize;
419+ old_table = cref_table.root.table;
420+ old_size = cref_table.root.size;
421+ old_symcount = cref_symcount;
422+
423+ for (i = 0; i < cref_table.root.size; i++)
424+ {
425+ struct bfd_hash_entry *p;
426+ struct cref_hash_entry *c;
427+ struct cref_ref *r;
428+
429+ for (p = cref_table.root.table[i]; p != NULL; p = p->next)
430+ {
431+ memcpy (old_ent, p, cref_table.root.entsize);
432+ old_ent = (char *) old_ent + cref_table.root.entsize;
433+ c = (struct cref_hash_entry *) p;
434+ for (r = c->refs; r != NULL; r = r->next)
435+ {
436+ memcpy (old_ref, r, sizeof (struct cref_hash_entry));
437+ old_ref = (char *) old_ref + sizeof (struct cref_hash_entry);
438+ }
439+ }
440+ }
441+ return TRUE;
442+ }
443+
444+ if (act == notice_not_needed)
445+ {
446+ char *old_ent, *old_ref;
447+
448+ if (old_tab == NULL)
449+ {
450+ /* The only way old_tab can be NULL is if the cref hash table
451+ had not been initialised when notice_as_needed. */
452+ bfd_hash_table_free (&cref_table.root);
453+ cref_initialized = FALSE;
454+ return TRUE;
455+ }
456+
457+ old_ent = (char *) old_tab + tabsize;
458+ old_ref = (char *) old_ent + entsize;
459+ cref_table.root.table = old_table;
460+ cref_table.root.size = old_size;
461+ memcpy (cref_table.root.table, old_tab, tabsize);
462+ cref_symcount = old_symcount;
463+
464+ for (i = 0; i < cref_table.root.size; i++)
465+ {
466+ struct bfd_hash_entry *p;
467+ struct cref_hash_entry *c;
468+ struct cref_ref *r;
469+
470+ for (p = cref_table.root.table[i]; p != NULL; p = p->next)
471+ {
472+ memcpy (p, old_ent, cref_table.root.entsize);
473+ old_ent = (char *) old_ent + cref_table.root.entsize;
474+ c = (struct cref_hash_entry *) p;
475+ for (r = c->refs; r != NULL; r = r->next)
476+ {
477+ memcpy (r, old_ref, sizeof (struct cref_hash_entry));
478+ old_ref = (char *) old_ref + sizeof (struct cref_hash_entry);
479+ }
480+ }
481+ }
482+
483+ objalloc_free_block ((struct objalloc *) cref_table.root.memory,
484+ alloc_mark);
485+ }
486+ else if (act != notice_needed)
487+ return FALSE;
488+
489+ free (old_tab);
490+ old_tab = NULL;
491+ return TRUE;
492+}
493+
494 /* Copy the addresses of the hash table entries into an array. This
495 is called via cref_hash_traverse. We also fill in the demangled
496 name. */
[1b97e2d]497diff -Naur binutils-2.17.orig/ld/ld.h binutils-2.17/ld/ld.h
498--- binutils-2.17.orig/ld/ld.h 2005-09-30 04:42:04.000000000 -0700
499+++ binutils-2.17/ld/ld.h 2006-07-18 19:37:05.000000000 -0700
[c4678fd]500@@ -1,6 +1,6 @@
501 /* ld.h -- general linker header file
502 Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
503- 2001, 2002, 2003, 2004, 2005
504+ 2001, 2002, 2003, 2004, 2005, 2006
505 Free Software Foundation, Inc.
506
507 This file is part of GLD, the Gnu Linker.
508@@ -282,6 +282,7 @@
509
510 extern int yyparse (void);
511 extern void add_cref (const char *, bfd *, asection *, bfd_vma);
512+extern bfd_boolean handle_asneeded_cref (bfd *, enum notice_asneeded_action);
513 extern void output_cref (FILE *);
514 extern void check_nocrossrefs (void);
515 extern void ld_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
[1b97e2d]516diff -Naur binutils-2.17.orig/ld/ldlang.c binutils-2.17/ld/ldlang.c
517--- binutils-2.17.orig/ld/ldlang.c 2006-06-12 06:05:04.000000000 -0700
518+++ binutils-2.17/ld/ldlang.c 2006-07-04 06:29:24.000000000 -0700
[c4678fd]519@@ -4207,7 +4207,8 @@
520 /* If a loadable section is using the default memory
521 region, and some non default memory regions were
522 defined, issue an error message. */
523- if (!IGNORE_SECTION (os->bfd_section)
524+ if (!os->ignored
525+ && !IGNORE_SECTION (os->bfd_section)
526 && ! link_info.relocatable
527 && check_regions
528 && strcmp (os->region->name,
[1b97e2d]529diff -Naur binutils-2.17.orig/ld/ldmain.c binutils-2.17/ld/ldmain.c
530--- binutils-2.17.orig/ld/ldmain.c 2006-04-06 11:52:45.000000000 -0700
531+++ binutils-2.17/ld/ldmain.c 2006-07-18 19:37:05.000000000 -0700
[c4678fd]532@@ -1511,6 +1511,13 @@
533 asection *section,
534 bfd_vma value)
535 {
536+ if (name == NULL)
537+ {
538+ if (command_line.cref || nocrossref_list != NULL)
539+ return handle_asneeded_cref (abfd, value);
540+ return TRUE;
541+ }
542+
543 if (! info->notice_all
544 || (info->notice_hash != NULL
545 && bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE) != NULL))
[1b97e2d]546diff -Naur binutils-2.17.orig/ld/testsuite/ChangeLog binutils-2.17/ld/testsuite/ChangeLog
547--- binutils-2.17.orig/ld/testsuite/ChangeLog 2006-06-12 06:44:33.000000000 -0700
548+++ binutils-2.17/ld/testsuite/ChangeLog 2006-07-12 05:55:21.000000000 -0700
[c4678fd]549@@ -1,3 +1,17 @@
550+2006-07-12 Richard Sandiford <richard@codesourcery.com>
551+
552+ * ld-m68k/merge-ok-1c.d: New test.
553+ * ld-m68k/m68k.exp: Run it.
554+
555+2006-07-04 Daniel Jacobowitz <dan@codesourcery.com>
556+
557+ Backport:
558+ 2006-05-19 Alan Modra <amodra@bigpond.net.au>
559+ * ld-scripts/empty-orphan.d: Update again.
560+
561+ * ld-scripts/empty-orphan.t: Discard .reginfo.
562+ * ld-scripts/empty-orphan.d: Update.
563+
564 2006-06-12 Daniel Jacobowitz <dan@codesourcery.com>
565
566 Backport:
[1b97e2d]567diff -Naur binutils-2.17.orig/ld/testsuite/ld-m68k/m68k.exp binutils-2.17/ld/testsuite/ld-m68k/m68k.exp
568--- binutils-2.17.orig/ld/testsuite/ld-m68k/m68k.exp 2006-03-25 02:24:27.000000000 -0800
569+++ binutils-2.17/ld/testsuite/ld-m68k/m68k.exp 2006-07-12 05:55:21.000000000 -0700
[c4678fd]570@@ -53,3 +53,4 @@
571 run_dump_test "merge-error-1e"
572 run_dump_test "merge-ok-1a"
573 run_dump_test "merge-ok-1b"
574+run_dump_test "merge-ok-1c"
[1b97e2d]575diff -Naur binutils-2.17.orig/ld/testsuite/ld-m68k/merge-ok-1c.d binutils-2.17/ld/testsuite/ld-m68k/merge-ok-1c.d
576--- binutils-2.17.orig/ld/testsuite/ld-m68k/merge-ok-1c.d 1969-12-31 16:00:00.000000000 -0800
577+++ binutils-2.17/ld/testsuite/ld-m68k/merge-ok-1c.d 2006-07-12 05:55:21.000000000 -0700
[c4678fd]578@@ -0,0 +1,6 @@
579+#source: merge-error-1a.s -march=cpu32
580+#source: merge-error-1b.s -march=cpu32
581+#ld: -r
582+#objdump: -p
583+#...
584+private flags = 810000: \[cpu32\]
[1b97e2d]585diff -Naur binutils-2.17.orig/ld/testsuite/ld-scripts/empty-orphan.d binutils-2.17/ld/testsuite/ld-scripts/empty-orphan.d
586--- binutils-2.17.orig/ld/testsuite/ld-scripts/empty-orphan.d 2005-03-17 08:20:39.000000000 -0800
587+++ binutils-2.17/ld/testsuite/ld-scripts/empty-orphan.d 2006-07-04 06:29:24.000000000 -0700
[c4678fd]588@@ -1,3 +1,6 @@
589 #source: empty-orphan.s
590 #ld: -T empty-orphan.t
591-#error: no memory region specified for loadable section
592+#readelf: -l --wide
593+#...
594+ +LOAD +[x0-9a-f]+ [x0]+70000000 [x0]+70000000 [x0]+(2|4|8|10|20|40|80) .*
595+#pass
[1b97e2d]596diff -Naur binutils-2.17.orig/ld/testsuite/ld-scripts/empty-orphan.t binutils-2.17/ld/testsuite/ld-scripts/empty-orphan.t
597--- binutils-2.17.orig/ld/testsuite/ld-scripts/empty-orphan.t 2005-03-17 08:20:39.000000000 -0800
598+++ binutils-2.17/ld/testsuite/ld-scripts/empty-orphan.t 2006-07-04 06:29:24.000000000 -0700
[c4678fd]599@@ -17,5 +17,6 @@
600 .text : { *(.text) } > text_mem : text_phdr
601 .data : { *(.data) } > data_mem : data_phdr
602 .bss : { *(.bss) } > data_mem : data_phdr
603+ /DISCARD/ : { *(.reginfo) }
604 /* .orphan_data is an orphan */
605 }
Note: See TracBrowser for help on using the repository browser.