From 481fe810e480dc19f9950511a1aebb37d39aa051 Mon Sep 17 00:00:00 2001 From: Walter Lee Date: Sat, 25 Feb 2012 22:40:48 +0000 Subject: [PATCH] Fix regression from change http://sourceware.org/ml/binutils-cvs/2012-01/msg00049.html . The code needs to check that the symbol is not a local symbol before accessing a non-local-symbol field. * tc-tilepro.c (emit_tilepro_instruction): Check if symbol is non-local before checking sy_value. * tc-tilegx.c (emit_tilegx_instruction): Ditto. --- gas/ChangeLog | 6 ++++++ gas/config/tc-tilegx.c | 3 ++- gas/config/tc-tilepro.c | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 5e5f50b36e3..6e6f70a5bae 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2012-02-25 Walter Lee + + * tc-tilepro.c (emit_tilepro_instruction): Check if symbol is + non-local before checking sy_value. + * tc-tilegx.c (emit_tilegx_instruction): Ditto. + 2012-02-25 Walter Lee * tc-tilepro.c (O_tls_le): Define operator. diff --git a/gas/config/tc-tilegx.c b/gas/config/tc-tilegx.c index eda36c0d18c..b2d94205be1 100644 --- a/gas/config/tc-tilegx.c +++ b/gas/config/tc-tilegx.c @@ -715,7 +715,8 @@ emit_tilegx_instruction (tilegx_bundle_bits bits, /* Now that we've changed the reloc, change ha16(x) into x, etc. */ - if (operand_exp->X_add_symbol->sy_value.X_md) + if (!operand_exp->X_add_symbol->sy_flags.sy_local_symbol + && operand_exp->X_add_symbol->sy_value.X_md) { /* HACK: We used X_md to mark this symbol as a fake wrapper around a real expression. To unwrap it, we just grab its diff --git a/gas/config/tc-tilepro.c b/gas/config/tc-tilepro.c index 0b378c2f197..733a628f209 100644 --- a/gas/config/tc-tilepro.c +++ b/gas/config/tc-tilepro.c @@ -631,7 +631,8 @@ emit_tilepro_instruction (tilepro_bundle_bits bits, /* Now that we've changed the reloc, change ha16(x) into x, etc. */ - if (operand_exp->X_add_symbol->sy_value.X_md) + if (!operand_exp->X_add_symbol->sy_flags.sy_local_symbol + && operand_exp->X_add_symbol->sy_value.X_md) { /* HACK: We used X_md to mark this symbol as a fake wrapper around a real expression. To unwrap it, we just grab its -- 2.30.2