bug-binutils
[Top][All Lists]
Advanced

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

[Bug gas/27129] New: [aarch64] broken logical immediate operations in ND


From: d_garry at mail dot ru
Subject: [Bug gas/27129] New: [aarch64] broken logical immediate operations in NDEBUG builds
Date: Wed, 30 Dec 2020 09:01:28 +0000

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

            Bug ID: 27129
           Summary: [aarch64] broken logical immediate operations in
                    NDEBUG builds
           Product: binutils
           Version: 2.36 (HEAD)
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: d_garry at mail dot ru
  Target Milestone: ---

When -NDEBUG is defined during build, it transforms "assert(anything)" into
something like "(void*)(0)" - at least in Linux, as defined in <assert.h>:

ifdef  NDEBUG
...
# define assert(expr)       (__ASSERT_VOID_CAST (0))
...
endif

Thus in case when any function is about to be called from assert, it will be
silently ignored. Example (see opcodes/aarch64-asm.c:555):

   /* The constraint check should have guaranteed this wouldn't happen.  */
   assert (aarch64_logical_immediate_p (imm, esize, &value));

If -NDEBUG-ged, aarch64_logical_immediate_p() simply won't be called, making
aarch64 logical operations (e.g. AND opcode) work incorrectly.

Seems that regression occured in commit 535b785fb0.

-- 
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]