diff options
author | Cary Coutant <ccoutant@google.com> | 2014-07-08 22:34:27 -0700 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2014-07-08 22:52:37 -0700 |
commit | e051745c838bf29e564fb2665339f97c8383b9e8 (patch) | |
tree | f95cb0a6f37660cfa33bacef128b335f4dc678e3 /gold/ChangeLog | |
parent | ecf3e831f71257e8ff7bf794f394f23b26d75137 (diff) | |
download | gdb-e051745c838bf29e564fb2665339f97c8383b9e8.zip gdb-e051745c838bf29e564fb2665339f97c8383b9e8.tar.gz gdb-e051745c838bf29e564fb2665339f97c8383b9e8.tar.bz2 |
Fix --defsym to copy symbol attributes.
Alan Modra committed a patch to Gnu ld to fix a problem encountered on
PPC where the --defsym option wasn't copying the st_other bits to the
newly-defined symbol.
https://sourceware.org/ml/binutils/2014-07/msg00094.html
Gold has the same problem, and additionally wasn't copying the symbol type.
This patch fixes both problems, by copying the symbol type, visibility, and
the remaining st_other bits to the new symbol for --defsym=sym1=sym2
assignments.
gold/
* expression.cc (struct Expression::Expression_eval_info): Add
new fields type_pointer, vis_pointer, and nonvis_pointer.
(Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and
nonvis_pointer parameters. Adjust all calls.
(Symbol_expression::value): Update type, visibility, and nonvis bits
in caller.
* script.cc (Symbol_assignment::sized_finalize): Update type,
visibility, and remaining st_other bits for new symbol.
* script.h: (Expression::eval_maybe_dot): Add type_pointer,
vis_pointer, and nonvis_pointer parameters.
* symtab.h (Symbol::set_type): New method.
* testsuite/Makefile.am (defsym_test): New test.
* testsuite/Makefile.in: Regenerate.
* testsuite/defsym_test.c: New file.
* testsuite/defsym_test.sh: New file.
Diffstat (limited to 'gold/ChangeLog')
-rw-r--r-- | gold/ChangeLog | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 0bd14e4..60d7471 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,5 +1,24 @@ 2014-07-08 Cary Coutant <ccoutant@google.com> + * expression.cc (struct Expression::Expression_eval_info): Add + new fields type_pointer, vis_pointer, and nonvis_pointer. + (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and + nonvis_pointer parameters. Adjust all calls. + (Symbol_expression::value): Update type, visibility, and nonvis bits + in caller. + * script.cc (Symbol_assignment::sized_finalize): Update type, + visibility, and remaining st_other bits for new symbol. + * script.h: (Expression::eval_maybe_dot): Add type_pointer, + vis_pointer, and nonvis_pointer parameters. + * symtab.h (Symbol::set_type): New method. + + * testsuite/Makefile.am (defsym_test): New test. + * testsuite/Makefile.in: Regenerate. + * testsuite/defsym_test.c: New file. + * testsuite/defsym_test.sh: New file. + +2014-07-08 Cary Coutant <ccoutant@google.com> + PR gold/15639 * dynobj.h (Sized_dynobj::base_read_symbols): New method. * dynobj.cc (Sized_dynobj::do_read_symbols): Move body to... |