aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2015-01-17 21:33:43 +1030
committerAlan Modra <amodra@gmail.com>2015-01-19 21:26:30 +1030
commitc4621b339e6f3153649898b254685f72df8c013d (patch)
tree4072fc9a77851dc3acf41c40b3452db137a2c7a5 /ld
parent740bdc67c057ee8012327420848eb134e1db4211 (diff)
downloadgdb-c4621b339e6f3153649898b254685f72df8c013d.zip
gdb-c4621b339e6f3153649898b254685f72df8c013d.tar.gz
gdb-c4621b339e6f3153649898b254685f72df8c013d.tar.bz2
Fix garbage collection of common symbols
Running lang_common before garbage collection means slightly less work in garbage collection code, since common symbols should no longer appear there. It does have the side effect of keeping linker script symbols (at least those defined outside of sections) global too, hence some testsuite churn. bfd/ PR 17165 * elf-bfd.h (ELF_COMMON_DEF): 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. ld/ PR 17165 * ldlang.c (lang_process): Run lang_common before lang_gc_sections. ld/testsuite/ * 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.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/ldlang.c6
-rw-r--r--ld/testsuite/ChangeLog13
-rw-r--r--ld/testsuite/ld-cris/tls-gc-68.d6
-rw-r--r--ld/testsuite/ld-cris/tls-gc-69.d6
-rw-r--r--ld/testsuite/ld-cris/tls-gc-70.d6
-rw-r--r--ld/testsuite/ld-cris/tls-gc-71.d6
-rw-r--r--ld/testsuite/ld-cris/tls-gc-75.d6
-rw-r--r--ld/testsuite/ld-cris/tls-gc-76.d6
-rw-r--r--ld/testsuite/ld-cris/tls-gc-79.d6
-rw-r--r--ld/testsuite/ld-gc/pr14265.d8
-rw-r--r--ld/testsuite/ld-mmix/bpo-10.d6
-rw-r--r--ld/testsuite/ld-mmix/bpo-11.d6
13 files changed, 52 insertions, 34 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index c7847a1..e9c3ed3 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,8 @@
+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.
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 9f3d209..0c72333 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -6701,12 +6701,12 @@ lang_process (void)
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);
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 4f59af8..d08ff1a 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,16 @@
+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
diff --git a/ld/testsuite/ld-cris/tls-gc-68.d b/ld/testsuite/ld-cris/tls-gc-68.d
index 6d3121b..b7fc374 100644
--- a/ld/testsuite/ld-cris/tls-gc-68.d
+++ b/ld/testsuite/ld-cris/tls-gc-68.d
@@ -21,11 +21,11 @@ private flags = 0:
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+ .*
diff --git a/ld/testsuite/ld-cris/tls-gc-69.d b/ld/testsuite/ld-cris/tls-gc-69.d
index 482088c..c4c51b7 100644
--- a/ld/testsuite/ld-cris/tls-gc-69.d
+++ b/ld/testsuite/ld-cris/tls-gc-69.d
@@ -22,11 +22,11 @@ private flags = 0:
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+ .*
diff --git a/ld/testsuite/ld-cris/tls-gc-70.d b/ld/testsuite/ld-cris/tls-gc-70.d
index 83b4c0b..6ab8f24 100644
--- a/ld/testsuite/ld-cris/tls-gc-70.d
+++ b/ld/testsuite/ld-cris/tls-gc-70.d
@@ -22,11 +22,11 @@ private flags = 0:
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+ .*
diff --git a/ld/testsuite/ld-cris/tls-gc-71.d b/ld/testsuite/ld-cris/tls-gc-71.d
index b580fd3..9d87500 100644
--- a/ld/testsuite/ld-cris/tls-gc-71.d
+++ b/ld/testsuite/ld-cris/tls-gc-71.d
@@ -17,11 +17,11 @@
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\)
#...
diff --git a/ld/testsuite/ld-cris/tls-gc-75.d b/ld/testsuite/ld-cris/tls-gc-75.d
index 472f889..c2d5df4 100644
--- a/ld/testsuite/ld-cris/tls-gc-75.d
+++ b/ld/testsuite/ld-cris/tls-gc-75.d
@@ -24,11 +24,11 @@ private flags = 0:
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+ .*
diff --git a/ld/testsuite/ld-cris/tls-gc-76.d b/ld/testsuite/ld-cris/tls-gc-76.d
index 97edbef..2bcf25c 100644
--- a/ld/testsuite/ld-cris/tls-gc-76.d
+++ b/ld/testsuite/ld-cris/tls-gc-76.d
@@ -25,11 +25,11 @@ SYMBOL TABLE:
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:
diff --git a/ld/testsuite/ld-cris/tls-gc-79.d b/ld/testsuite/ld-cris/tls-gc-79.d
index 424bfb0..f4916d3 100644
--- a/ld/testsuite/ld-cris/tls-gc-79.d
+++ b/ld/testsuite/ld-cris/tls-gc-79.d
@@ -22,11 +22,11 @@ private flags = 0:
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+ .*
diff --git a/ld/testsuite/ld-gc/pr14265.d b/ld/testsuite/ld-gc/pr14265.d
index 04af982..f78297b 100644
--- a/ld/testsuite/ld-gc/pr14265.d
+++ b/ld/testsuite/ld-gc/pr14265.d
@@ -4,10 +4,10 @@
#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
#...
diff --git a/ld/testsuite/ld-mmix/bpo-10.d b/ld/testsuite/ld-mmix/bpo-10.d
index 1bc6269..1cb7d61 100644
--- a/ld/testsuite/ld-mmix/bpo-10.d
+++ b/ld/testsuite/ld-mmix/bpo-10.d
@@ -15,10 +15,10 @@ SYMBOL TABLE:
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 .*
diff --git a/ld/testsuite/ld-mmix/bpo-11.d b/ld/testsuite/ld-mmix/bpo-11.d
index 7f47450..9b38be8 100644
--- a/ld/testsuite/ld-mmix/bpo-11.d
+++ b/ld/testsuite/ld-mmix/bpo-11.d
@@ -17,12 +17,12 @@ SYMBOL TABLE:
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 .*