+2015-01-19 Alan Modra <amodra@gmail.com>
+
+ PR 17165
+ * elf-bfd.h (ELF_COMMON_DEF_P): Note that this might be true for
+ linker script assignments too.
+ * elflink.c (elf_gc_sweep_symbol): Don't drop ELF_COMMON_DEF syms.
+ (bfd_elf_gc_mark_dynamic_ref_symbol): Similarly.
+
2015-01-19 Alan Modra <amodra@gmail.com>
* elf32-bfin.c (bfin_bfd_reloc_type_lookup): Correct loop iteration
_bfd_elf_symbol_refs_local_p (H, INFO, 1)
/* Common symbols that are turned into definitions don't have the
- DEF_REGULAR flag set, so they might appear to be undefined. */
+ DEF_REGULAR flag set, so they might appear to be undefined.
+ Symbols defined in linker scripts also don't have DEF_REGULAR set. */
#define ELF_COMMON_DEF_P(H) \
(!(H)->def_regular \
&& !(H)->def_dynamic \
if (!h->mark
&& (((h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
- && !(h->def_regular
+ && !((h->def_regular || ELF_COMMON_DEF_P (h))
&& h->root.u.def.section->gc_mark))
|| h->root.type == bfd_link_hash_undefined
|| h->root.type == bfd_link_hash_undefweak))
if ((h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
&& (h->ref_dynamic
- || (h->def_regular
+ || ((h->def_regular || ELF_COMMON_DEF_P (h))
&& ELF_ST_VISIBILITY (h->other) != STV_INTERNAL
&& ELF_ST_VISIBILITY (h->other) != STV_HIDDEN
&& (!info->executable
+2015-01-19 Alan Modra <amodra@gmail.com>
+
+ PR 17165
+ * ldlang.c (lang_process): Run lang_common before lang_gc_sections.
+
2015-01-14 Jiong Wang <jiong.wang@arm.com>
* ld-arm/elf32-reject.s: New testcase.
lang_do_assignments (lang_mark_phase_enum);
expld.phase = lang_first_phase_enum;
- /* Remove unreferenced sections if asked to. */
- lang_gc_sections ();
-
/* Size up the common data. */
lang_common ();
+ /* Remove unreferenced sections if asked to. */
+ lang_gc_sections ();
+
/* Update wild statements. */
update_wild_statements (statement_list.head);
+2015-01-19 Alan Modra <amodra@gmail.com>
+
+ * ld-gc/pr14265.d,
+ * ld-cris/tls-gc-68.d,
+ * ld-cris/tls-gc-69.d,
+ * ld-cris/tls-gc-70.d,
+ * ld-cris/tls-gc-71.d,
+ * ld-cris/tls-gc-75.d,
+ * ld-cris/tls-gc-76.d,
+ * ld-cris/tls-gc-79.d,
+ * ld-mmix/bpo-10.d,
+ * ld-mmix/bpo-11.d: Update.
+
2015-01-16 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* ld-s390/tlsbin.dd: The nopr register operand is optional and not
SYMBOL TABLE:
0+80074 l d \.text 0+ \.text
0+82078 l d \.got 0+ \.got
-0+82084 l \.got 0+ __bss_start
-0+82084 l \.got 0+ _edata
0+82078 l O \.got 0+ _GLOBAL_OFFSET_TABLE_
-0+820a0 l \.got 0+ _end
0+80074 g \.text 0+ _start
+0+82084 g \.got 0+ __bss_start
+0+82084 g \.got 0+ _edata
+0+820a0 g \.got 0+ _end
Contents of section \.text:
80074 41b20+ .*
SYMBOL TABLE:
0+80074 l d \.text 0+ \.text
0+82078 l d \.got 0+ \.got
-0+82084 l \.got 0+ __bss_start
-0+82084 l \.got 0+ _edata
0+82078 l O \.got 0+ _GLOBAL_OFFSET_TABLE_
-0+820a0 l \.got 0+ _end
0+80074 g \.text 0+ _start
+0+82084 g \.got 0+ __bss_start
+0+82084 g \.got 0+ _edata
+0+820a0 g \.got 0+ _end
Contents of section .text:
80074 41b20+ .*
SYMBOL TABLE:
0+80074 l d \.text 0+ \.text
0+82078 l d \.got 0+ \.got
-0+82084 l \.got 0+ __bss_start
-0+82084 l \.got 0+ _edata
0+82078 l O \.got 0+ _GLOBAL_OFFSET_TABLE_
-0+820a0 l \.got 0+ _end
0+80074 g \.text 0+ _start
+0+82084 g \.got 0+ __bss_start
+0+82084 g \.got 0+ _edata
+0+820a0 g \.got 0+ _end
Contents of section \.text:
80074 41b20+ .*
DYNAMIC SYMBOL TABLE:
0+18e l d \.text 0+ \.text
0+2194 l d \.tdata 0+ \.tdata
-0+2280 l D \.got 0+ __bss_start
-0+2280 l D \.got 0+ _edata
-0+2280 l D \.got 0+ _end
0+18e g DF \.text 0+2 _init
+0+2280 g D \.got 0+ __bss_start
0+ g D .tdata 0+80 tls128
+0+2280 g D \.got 0+ _edata
+0+2280 g D \.got 0+ _end
DYNAMIC RELOCATION RECORDS \(none\)
#...
SYMBOL TABLE:
0+80074 l d \.text 0+ \.text
0+82078 l d \.got 0+ \.got
-0+82084 l \.got 0+ __bss_start
-0+82084 l \.got 0+ _edata
0+82078 l O \.got 0+ _GLOBAL_OFFSET_TABLE_
-0+820a0 l \.got 0+ _end
0+80074 g \.text 0+ _start
+0+82084 g \.got 0+ __bss_start
+0+82084 g \.got 0+ _edata
+0+820a0 g \.got 0+ _end
Contents of section \.text:
80074 41b20+ .*
0+ l df \*ABS\* 0+ .*
0+82090 l O \.data 0+4 gc76var
0+ l df \*ABS\* 0+ .*
-0+82094 l \.data 0+ __bss_start
-0+82094 l \.data 0+ _edata
0+82080 l O \.got 0+ _GLOBAL_OFFSET_TABLE_
-0+820a0 l \.data 0+ _end
0+80074 g \.text 0+ _start
+0+82094 g \.data 0+ __bss_start
+0+82094 g \.data 0+ _edata
+0+820a0 g \.data 0+ _end
0+80078 g F \.text 0+6 gc76fn
Contents of section \.text:
SYMBOL TABLE:
0+80074 l d \.text 0+ \.text
0+82078 l d \.got 0+ \.got
-0+82084 l \.got 0+ __bss_start
-0+82084 l \.got 0+ _edata
0+82078 l O \.got 0+ _GLOBAL_OFFSET_TABLE_
-0+820a0 l \.got 0+ _end
0+80074 g \.text 0+ _start
+0+82084 g \.got 0+ __bss_start
+0+82084 g \.got 0+ _edata
+0+820a0 g \.got 0+ _end
Contents of section \.text:
80074 41b20+ .*
#nm: --format=bsd --numeric-sort
#...
-[0-9a-f]+[ ]d[ ]_*foo1_start
+[0-9a-f]+[ ][dD][ ]_*foo1_start
[0-9a-f]+[ ]D[ ]_*foo1
-[0-9a-f]+[ ]d[ ]_*foo1_end
-[0-9a-f]+[ ]d[ ]_*foo2_start
+[0-9a-f]+[ ][dD][ ]_*foo1_end
+[0-9a-f]+[ ][dD][ ]_*foo2_start
[0-9a-f]+[ ]D[ ]_*foo2
-[0-9a-f]+[ ]d[ ]_*foo2_end
+[0-9a-f]+[ ][dD][ ]_*foo2_end
#...
0+ l df \*ABS\* 0+ .*
0+ l \.init 0+ _start
0+ l df \*ABS\* 0+ .*
-2000000000000000 l \.init 0+ __bss_start
-2000000000000000 l \.init 0+ _edata
-2000000000000000 l \.init 0+ _end
0+4 l \.init 0+ _start\.
+2000000000000000 g \.init 0+ __bss_start
+2000000000000000 g \.init 0+ _edata
+2000000000000000 g \.init 0+ _end
Contents of section \.init:
0000 e37704a6 .*
0+ l df \*ABS\* 0+ .*
0+ l \.init 0+ _start
0+ l df \*ABS\* 0+ .*
-2000000000000000 l \.text 0+ __bss_start
-2000000000000000 l \.text 0+ _edata
-2000000000000000 l \.text 0+ _end
0+10 l \.text 0+ _start\.
0+14 g \.text 0+ x
0+10 g \.text 0+ x2
+2000000000000000 g \.text 0+ __bss_start
+2000000000000000 g \.text 0+ _edata
+2000000000000000 g \.text 0+ _end
Contents of section \.init:
0000 00000000 0000003d 00000000 0000003a .*