offset_in_range() question
H.J. Lu
hjl.tools@gmail.com
Mon Jul 13 13:11:58 GMT 2020
More information about the Binutils mailing list
Mon Jul 13 13:11:58 GMT 2020
- Previous message (by thread): offset_in_range() question
- Next message (by thread): offset_in_range() question
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Jul 13, 2020 at 5:50 AM Jan Beulich <jbeulich@suse.com> wrote: > > H.J., > > the dependency on presence of an address size override, when the > function is also used on immediate operands, struck me as being > a possible source for problems. On 2009-09-15 you've made two > changes to the construct in question, but I wonder whether even > back then this code wasn't already dead. When, after quite a bit > of playing, I couldn't come up with any immediate that this > would go wrong on, I thought I'll give a try to removing that > code altogether. And indeed - no fallout. Looking more closely > then suggested that respective logic in optimize_imm() and > optimize_disp() are already arranging for values to never need > further massaging here. > > Do you agree that the code could be removed (see patch below in > case of any uncertainty about what block of code I mean), or are > you aware of things that might break this way? > > As an aside, I don't think the handling of out-of-range > immediates is quite correct, but I'll get to this in more detail > after thinking some more on possible solutions. > > Jan > > --- a/gas/config/tc-i386.c > +++ b/gas/config/tc-i386.c > @@ -2539,14 +2539,6 @@ offset_in_range (offsetT val, int size) > default: abort (); > } > > -#ifdef BFD64 > - /* If BFD64, sign extend val for 32bit address mode. */ > - if (flag_code != CODE_64BIT > - || i.prefix[ADDR_PREFIX]) > - if ((val & ~(((addressT) 2 << 31) - 1)) == 0) > - val = (val ^ ((addressT) 1 << 31)) - ((addressT) 1 << 31); > -#endif > - This code came from commit 3e73aa7c956514ce5bd5fa6320fb239229ac8a7b Author: Jan Hubicka <jh@suse.cz> Date: Wed Dec 20 13:24:13 2000 +0000 * tc-i386.h (i386_target_format): Define even for ELFs. My changes only enabled it when BFD64 is defined. If this code dead, please replace it with abort for now. Thanks. > if ((val & ~mask) != 0 && (val & ~mask) != ~mask) > { > char buf1[40], buf2[40]; -- H.J.
- Previous message (by thread): offset_in_range() question
- Next message (by thread): offset_in_range() question
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list