aboutsummaryrefslogtreecommitdiff
path: root/gold/script.h
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2014-07-08 22:34:27 -0700
committerCary Coutant <ccoutant@google.com>2014-07-08 22:52:37 -0700
commite051745c838bf29e564fb2665339f97c8383b9e8 (patch)
treef95cb0a6f37660cfa33bacef128b335f4dc678e3 /gold/script.h
parentecf3e831f71257e8ff7bf794f394f23b26d75137 (diff)
downloadgdb-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/script.h')
-rw-r--r--gold/script.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gold/script.h b/gold/script.h
index 49b3776..99bba08 100644
--- a/gold/script.h
+++ b/gold/script.h
@@ -34,6 +34,7 @@
#include <string>
#include <vector>
+#include "elfcpp.h"
#include "script-sections.h"
namespace gold
@@ -111,6 +112,7 @@ class Expression
bool is_dot_available, uint64_t dot_value,
Output_section* dot_section,
Output_section** result_section, uint64_t* result_alignment,
+ elfcpp::STT* type, elfcpp::STV* vis, unsigned char* nonvis,
bool is_section_dot_assignment);
// Print the expression to the FILE. This is for debugging.