diff options
author | James Clarke <jrtc27@jrtc27.com> | 2017-11-08 15:13:53 -0800 |
---|---|---|
committer | Cary Coutant <ccoutant@gmail.com> | 2017-11-08 15:13:53 -0800 |
commit | 333d0055f6f162c334c36f1946b6fcdb5c92b681 (patch) | |
tree | e2f634ea32928beaa5801afc966ea07f5e5520cc /gold/testsuite/pr22266_script.t | |
parent | 08228b11557016f6f12d537ebff5f169fdf9bc6c (diff) | |
download | gdb-333d0055f6f162c334c36f1946b6fcdb5c92b681.zip gdb-333d0055f6f162c334c36f1946b6fcdb5c92b681.tar.gz gdb-333d0055f6f162c334c36f1946b6fcdb5c92b681.tar.bz2 |
Fix problems with -r.
The fix committed for PR gold/19291 ended up breaking other cases. The
commit added adjustment code to write_local_symbols, but in many cases
compute_final_local_value_internal had already subtracted the output
section's address. To fix this, all other adjustments are now removed, so
only the one in write_local_symbols is left.
gold/
PR gold/22266
* object.cc (Sized_relobj_file::compute_final_local_value_internal):
Drop relocatable parameter and stop adjusting output value based on
it.
(Sized_relobj_file::compute_final_local_value): Stop passing
relocatable to compute_final_local_value_internal.
(Sized_relobj_file::do_finalize_local_symbols): Ditto.
* object.h (Sized_relobj_file::compute_final_local_value_internal):
Drop relocatable parameter.
Diffstat (limited to 'gold/testsuite/pr22266_script.t')
-rw-r--r-- | gold/testsuite/pr22266_script.t | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gold/testsuite/pr22266_script.t b/gold/testsuite/pr22266_script.t new file mode 100644 index 0000000..a9bc364 --- /dev/null +++ b/gold/testsuite/pr22266_script.t @@ -0,0 +1,23 @@ +/* Linker script to undo -split-sections and merge all sections together when + * linking relocatable object files for GHCi. + * ld -r normally retains the individual sections, which is what you would want + * if the intention is to eventually link into a binary with --gc-sections, but + * it doesn't have a flag for directly doing what we want. */ +SECTIONS +{ + .text : { + *(.text*) + } + .rodata.cst16 : { + *(.rodata.cst16*) + } + .data.rel.ro : { + *(.data.rel.ro*) + } + .data : { + *(.data*) + } + .bss : { + *(.bss*) + } +} |