RFR: 8253167: ARM32 builds fail after JDK-8247910

Kim Barrett kbarrett at openjdk.java.net
Fri Sep 18 21:06:45 UTC 2020


Please review this fix for a build failure for arm32.

nconstexpr functions cannot contain asm statements (until C++20), even if
not executed by a constexpr invocation. This means assert (for example)
can't be used in a constexpr function on arm32, because of the
implementation of the BREAKPOINT macro as an asm statement for linux-arm.

The current arm32 implementation is from JDK-8077648: "ARM: BREAKPOINT is
wrong for thumb", which is a Confidential bug about Oracle's old closed
source arm32 port. That port was open sourced by JDK-8168503: "JEP 297:
Unified arm32/arm64 Port". The discussion of JDK-8077648 suggested making
the arm32 port be like nearly all others. That is, have BREAKPOINT expand to
a call to ::breakpoint(), with any empty body for that function and a
comment that one should use a debugger to set a breakpoint there.

This change takes that alternative approach.

The same problem likely exists for win32, which also implements BREAKPOINT
as an asm statement. However, I don't have the infrastructure to do a win32
build to demonstrate that. But I'm making a similar change there on spec.

Note that the Windows implementation of ::breakpoint() ultimately calls the
DebugBreak Win32 library function. That should work for the windows-x86 port
too.

I don't know why we have that difference of some platforms having an
affirmative platform-specific breakpoint operation in place while others
require a debugger to set one, but that difference already exists. This
change does move arm32 from the former to the latter camp though. I'm
guessing that won't matter; if it does then we'll need to conditionalize the
body of ::breakpoint().

There may be some further cleanup that could be done after this change.
We don't really need the BREAKPOINT macro anymore, and could just
use ::breakpoint() directly.  But I think that's out of scope for dealing
with the build failure(s).

Testing:
build linux-arm.
tier1 for Oracle supported platforms.

-------------

Commit messages:
 - remove BREAKPOINT variants

Changes: https://git.openjdk.java.net/jdk/pull/259/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=259&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8253167
  Stats: 19 lines in 2 files changed: 0 ins; 18 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/259.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/259/head:pull/259

PR: https://git.openjdk.java.net/jdk/pull/259


More information about the hotspot-dev mailing list