diff options
author | Alan Modra <amodra@gmail.com> | 2015-01-17 21:33:43 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2015-01-19 21:26:30 +1030 |
commit | c4621b339e6f3153649898b254685f72df8c013d (patch) | |
tree | 4072fc9a77851dc3acf41c40b3452db137a2c7a5 /ld | |
parent | 740bdc67c057ee8012327420848eb134e1db4211 (diff) | |
download | gdb-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/ChangeLog | 5 | ||||
-rw-r--r-- | ld/ldlang.c | 6 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-cris/tls-gc-68.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-cris/tls-gc-69.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-cris/tls-gc-70.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-cris/tls-gc-71.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-cris/tls-gc-75.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-cris/tls-gc-76.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-cris/tls-gc-79.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-gc/pr14265.d | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-mmix/bpo-10.d | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-mmix/bpo-11.d | 6 |
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 .* |