bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/27763] New: x86-64 RIP-relative address with labels wraps aroun


From: andrey.vihrov at gmail dot com
Subject: [Bug gas/27763] New: x86-64 RIP-relative address with labels wraps around signed 32-bit integer
Date: Wed, 21 Apr 2021 18:12:19 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=27763

            Bug ID: 27763
           Summary: x86-64 RIP-relative address with labels wraps around
                    signed 32-bit integer
           Product: binutils
           Version: 2.36.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: andrey.vihrov at gmail dot com
  Target Milestone: ---

Consider the following source:

  movq test(%rip), %rax
  .set test, . + 0xF0000000

When assembled and then disassembled with "objdump -d", this gives

  0:    48 8b 05 00 00 00 f0    mov    -0x10000000(%rip),%rax

The relative address wraps around and results in a negative displacement.

This affects expressions with labels, such as (test + 1) and (test -
0x1E0000000), but not simply 0xF0000000, which is correctly rejected with

  Error: 0xf0000000 out range of signed 32bit displacement

Expressions not smaller than 2^32, such as (test + 0xF0000000), are also
correctly rejected:

  Error: value of 8053063680 too large for field of 4 bytes at 3

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]