diff options
author | Jan Beulich <jbeulich@suse.com> | 2024-10-29 08:08:29 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2024-10-29 08:08:29 +0100 |
commit | c1a4b47e2a3016ae9144f701319c529b340dec75 (patch) | |
tree | 7c425c4571f3dbd07511ad0188d2b540c31b110f /gas | |
parent | gas: constify md_{short,long}opts and md_longopts_size (diff) | |
download | binutils-gdb-c1a4b47e2a3016ae9144f701319c529b340dec75.tar.gz binutils-gdb-c1a4b47e2a3016ae9144f701319c529b340dec75.tar.bz2 binutils-gdb-c1a4b47e2a3016ae9144f701319c529b340dec75.zip |
gas: make fix_new_exp()'s "exp" parameter const
This really should be only an input; in particular it looks bogus that
O_add expressions are even altered. That altering and the recursion are
even pointless: Once expanding what the inner call would do (with
O_symbol) it becomes clear that this is no different than the default
case. Simplify the code accordingly, retaining the comment.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/write.c | 18 | ||||
-rw-r--r-- | gas/write.h | 2 |
2 files changed, 4 insertions, 16 deletions
diff --git a/gas/write.c b/gas/write.c index 18cf18fc830..853a9a012b7 100644 --- a/gas/write.c +++ b/gas/write.c @@ -238,7 +238,7 @@ fixS * fix_new_exp (fragS *frag, /* Which frag? */ unsigned long where, /* Where in that frag? */ unsigned long size, /* 1, 2, or 4 usually. */ - expressionS *exp, /* Expression. */ + const expressionS *exp, /* Expression. */ int pcrel, /* TRUE if PC-relative relocation. */ RELOC_ENUM r_type /* Relocation type. */) { @@ -255,20 +255,6 @@ fix_new_exp (fragS *frag, /* Which frag? */ as_bad (_("register value used as expression")); break; - case O_add: - /* This comes up when _GLOBAL_OFFSET_TABLE_+(.-L0) is read, if - the difference expression cannot immediately be reduced. */ - { - symbolS *stmp = make_expr_symbol (exp); - - exp->X_op = O_symbol; - exp->X_op_symbol = 0; - exp->X_add_symbol = stmp; - exp->X_add_number = 0; - - return fix_new_exp (frag, where, size, exp, pcrel, r_type); - } - case O_symbol_rva: add = exp->X_add_symbol; off = exp->X_add_number; @@ -290,6 +276,8 @@ fix_new_exp (fragS *frag, /* Which frag? */ off = exp->X_add_number; break; + case O_add: /* This comes up when _GLOBAL_OFFSET_TABLE_+(.-L0) is read, if + the difference expression cannot immediately be reduced. */ default: add = make_expr_symbol (exp); break; diff --git a/gas/write.h b/gas/write.h index 8e1b279a398..6cdd734cf0e 100644 --- a/gas/write.h +++ b/gas/write.h @@ -187,7 +187,7 @@ extern fixS *fix_new (fragS *, unsigned long, unsigned long, symbolS *, extern fixS *fix_at_start (fragS *, unsigned long, symbolS *, offsetT, int, bfd_reloc_code_real_type); extern fixS *fix_new_exp (fragS *, unsigned long, unsigned long, - expressionS *, int, bfd_reloc_code_real_type); + const expressionS *, int, bfd_reloc_code_real_type); extern void write_print_statistics (FILE *); extern void as_bad_subtract (fixS *); |