[PATCH 4/5] x86-64: further tighten convert-load-reloc checking
H.J. Lu
hjl.tools@gmail.com
Tue Feb 4 10:10:04 GMT 2025
On Tue, Feb 4, 2025 at 6:04 PM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 03.02.2025 23:41, H.J. Lu wrote:
> > On Mon, Feb 3, 2025 at 7:41 PM Jan Beulich <jbeulich@suse.com> wrote:
> >>
> >> REX2.M affects what insn we're actually dealing with, so we better check
> >> this to avoid transforming (future) insns we must not touch.
> >>
> >> --- a/bfd/elf64-x86-64.c
> >> +++ b/bfd/elf64-x86-64.c
> >> @@ -2282,14 +2282,14 @@ elf_x86_64_convert_load_reloc (bfd *abfd
> >> if (to_reloc_pc32)
> >> return true;
> >>
> >> - if (opcode == 0x85)
> >> + if (opcode == 0x85 && !(rex2 & (REX2_M << 4)))
> >> {
> >> /* Convert "test %reg, foo@GOTPCREL(%rip)" to
> >> "test $foo, %reg". */
> >> modrm = 0xc0 | (modrm & 0x38) >> 3;
> >> opcode = 0xf7;
> >> }
> >> - else if ((opcode | 0x38) == 0x3b)
> >> + else if ((opcode | 0x38) == 0x3b && !(rex2 & (REX2_M << 4)))
> >> {
> >> /* Convert "binop foo@GOTPCREL(%rip), %reg" to
> >> "binop $foo, %reg". */
> >>
> >
> > Please add a testcase to show it makes a difference.
>
> Hmm, not sure how such a testcase would look like. At least some of
> the involved opcodes have no meaning (yet) with REX2. But maybe I
> can construct something. Still I view it as unreasonable that such
> obvious omissions in earlier changes can't be corrected without
> investing a lot of time in trying to make up a situation where
> things would fail. Once again: Proof of _no failure_ should have
> been added when these optimizations were introduced. And that proof
> should have been extended when APX support was added. What you're
> effectively doing is to ask me to cover for earlier omissions.
>
> Jan
Again. No test, no issue, no change.
--
H.J.
More information about the Binutils
mailing list