From be0d3bbbcdbdba83f74d8ad1be6c4c759255af0b Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 6 May 2019 14:38:24 +0930 Subject: [PATCH] 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. --- gas/ChangeLog | 5 +++++ gas/symbols.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 640fee13c8e..ec211534c9e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2019-05-06 Alan Modra + + * symbols.c (symbol_relc_make_sym): Do not access sym->sy_value + directly. + 2019-05-06 Alan Modra * config/tc-ppc.c (ppc_fix_adjustable): Exclude all GOT and PLT diff --git a/gas/symbols.c b/gas/symbols.c index 97867954fdd..10d7b1c273e 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. */ -- 2.30.2