[binutils-gdb] sym->sy_value is not valid for struct local_symbol

Alan Modra amodra@sourceware.org
Mon May 6 06:54:00 GMT 2019


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=be0d3bbbcdbdba83f74d8ad1be6c4c759255af0b

commit be0d3bbbcdbdba83f74d8ad1be6c4c759255af0b
Author: Alan Modra <amodra@gmail.com>
Date:   Mon May 6 14:38:24 2019 +0930

    sym->sy_value is not valid for struct local_symbol
    
    Fixes this mep-elf error:
    gas/elf/dwarf2-19.s: Error: Unknown expression operator (enum 0)
    gas/elf/dwarf2-19.s: Error: cannot convert expression symbol .L2 to complex relocation
    
    	* symbols.c (symbol_relc_make_sym): Do not access sym->sy_value
    	directly.

Diff:
---
 gas/ChangeLog | 5 +++++
 gas/symbols.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 640fee1..ec21153 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,10 @@
 2019-05-06  Alan Modra  <amodra@gmail.com>
 
+	* symbols.c (symbol_relc_make_sym): Do not access sym->sy_value
+	directly.
+
+2019-05-06  Alan Modra  <amodra@gmail.com>
+
 	* config/tc-ppc.c (ppc_fix_adjustable): Exclude all GOT and PLT
 	relocs, and VLE sdarel relocs.
 	* testsuite/gas/ppc/power4.d: Adjust.
diff --git a/gas/symbols.c b/gas/symbols.c
index 9786795..10d7b1c 100644
--- a/gas/symbols.c
+++ b/gas/symbols.c
@@ -3288,7 +3288,7 @@ symbol_relc_make_sym (symbolS * sym)
      is defined as an expression or a plain value.  */
   if (   S_GET_SEGMENT (sym) == expr_section
       || S_GET_SEGMENT (sym) == absolute_section)
-    return symbol_relc_make_expr (& sym->sy_value);
+    return symbol_relc_make_expr (symbol_get_value_expression (sym));
 
   /* This may be a "fake symbol", referring to ".".
      Write out a special null symbol to refer to this position.  */



More information about the Binutils-cvs mailing list