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/object.h | |
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/object.h')
-rw-r--r-- | gold/object.h | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/gold/object.h b/gold/object.h index 508e79c..c6c4927 100644 --- a/gold/object.h +++ b/gold/object.h @@ -2772,8 +2772,7 @@ class Sized_relobj_file : public Sized_relobj<size, big_endian> // LV_IN points to a local symbol value containing the input value. // LV_OUT points to a local symbol value storing the final output value, // which must not be a merged symbol value since before calling this - // method to avoid memory leak. RELOCATABLE indicates whether we are - // linking a relocatable output. OUT_SECTIONS is an array of output + // method to avoid memory leak. OUT_SECTIONS is an array of output // sections. OUT_OFFSETS is an array of offsets of the sections. SYMTAB // points to a symbol table. // @@ -2785,7 +2784,6 @@ class Sized_relobj_file : public Sized_relobj<size, big_endian> compute_final_local_value_internal(unsigned int r_sym, const Symbol_value<size>* lv_in, Symbol_value<size>* lv_out, - bool relocatable, const Output_sections& out_sections, const std::vector<Address>& out_offsets, const Symbol_table* symtab); |