Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8253167: ARM32 builds fail after JDK-8247910 #259

Closed
wants to merge 1 commit into from

Conversation

@kimbarrett
Copy link

@kimbarrett kimbarrett commented Sep 18, 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.


Progress

  • Change must not contain extraneous whitespace
  • Commit message must refer to an issue
  • Change must be properly reviewed

Issues

  • JDK-8253167: ARM32 builds fail after JDK-8247910
  • JDK-8213483: ARM32: runtime/ErrorHandling/ShowRegistersOnAssertTest.java jtreg test fail

Reviewers

Download

$ git fetch https://git.openjdk.java.net/jdk pull/259/head:pull/259
$ git checkout pull/259

@bridgekeeper
Copy link

@bridgekeeper bridgekeeper bot commented Sep 18, 2020

👋 Welcome back kbarrett! A progress list of the required criteria for merging this PR into master will be added to the body of your pull request. There are additional pull request commands available for use with this pull request.

@openjdk
Copy link

@openjdk openjdk bot commented Sep 18, 2020

@kimbarrett The following label will be automatically applied to this pull request: hotspot.

When this pull request is ready to be reviewed, an RFR email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label (add|remove) "label" command.

@openjdk openjdk bot added the hotspot label Sep 18, 2020
@kimbarrett kimbarrett changed the title remove BREAKPOINT variants 8253167: ARM32 builds fail after JDK-8247910 Sep 18, 2020
@kimbarrett kimbarrett marked this pull request as ready for review Sep 18, 2020
@openjdk openjdk bot added the rfr label Sep 18, 2020
@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 18, 2020

Webrevs

Copy link
Contributor

@coleenp coleenp left a comment

Looks good!

@openjdk
Copy link

@openjdk openjdk bot commented Sep 18, 2020

@kimbarrett This change now passes all automated pre-integration checks. In addition to the automated checks, the change must also fulfill all project specific requirements

After integration, the commit message will be:

8253167: ARM32 builds fail after JDK-8247910
8213483: ARM32: runtime/ErrorHandling/ShowRegistersOnAssertTest.java jtreg test fail

Removed platform-dependent definitions of BREAKPOINT as asm(breakpoint instruction).

Reviewed-by: coleenp, mikael, bulasevich
  • If you would like to add a summary, use the /summary command.
  • To credit additional contributors, use the /contributor command.
  • To add additional solved issues, use the /issue command.

Since the source branch of this PR was last updated there have been 8 commits pushed to the master branch:

  • cc7521c: 8252199: Reimplement support of Type 1 fonts without MappedByteBuffer
  • 3d88d38: 8252070: Some platform-specific BLIT optimizations are not effective
  • 83b0537: 8253291: bug7072653.java still failed "Popup window height ... is wrong"
  • d27835b: 8249142: java/awt/FontClass/CreateFont/DeleteFont.sh is unstable
  • 1438ce0: 8252188: Crash in OrINode::Ideal(PhaseGVN*, bool)+0x8b9
  • 224a30f: 8252311: AArch64: save two words in itable lookup stub
  • 22f7af7: 8253317: The "com/apple/eawt" is missed in the "othervm.dirs" config option
  • f55dd9d: 8251548: Remove unnecessary explicit initialization of volatile variables in security-libs code

As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid automatic rebasing, please merge master into your branch, and then specify the current head hash when integrating, like this: /integrate cc7521c452ad47a9a0bfca23168ac1ff0aff3343.

➡️ To integrate this PR with the above commit message to the master branch, type /integrate in a new comment.

@openjdk openjdk bot added the ready label Sep 18, 2020
vidmik
vidmik approved these changes Sep 18, 2020
@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 20, 2020

Mailing list message from Boris Ulasevich on hotspot-dev:

Hi,

Yes, the change is Ok.
It will fix JDK-8213483 by the way.
Thanks for doing this!

regards,
Boris

On Sat, Sep 19, 2020 at 12:07 AM Kim Barrett <kbarrett at openjdk.java.net> wrote:

@kimbarrett
Copy link
Author

@kimbarrett kimbarrett commented Sep 21, 2020

/reviewer credit bulasevich
/issue add 8213483

@openjdk
Copy link

@openjdk openjdk bot commented Sep 21, 2020

@kimbarrett
Reviewer bulasevich successfully credited.

@openjdk
Copy link

@openjdk openjdk bot commented Sep 21, 2020

@kimbarrett
Adding additional issue to issue list: 8213483: ARM32: runtime/ErrorHandling/ShowRegistersOnAssertTest.java jtreg test fail.

@mlbridge
Copy link

@mlbridge mlbridge bot commented Sep 21, 2020

Mailing list message from Kim Barrett on hotspot-dev:

On Sep 20, 2020, at 10:17 AM, Boris Ulasevich <boris.ulasevich at bell-sw.com> wrote:

Hi,

Yes, the change is Ok.
It will fix JDK-8213483 by the way.
Thanks for doing this!

regards,
Boris

Thanks.

@kimbarrett
Copy link
Author

@kimbarrett kimbarrett commented Sep 21, 2020

/summary Removed platform-dependent definitions of BREAKPOINT as asm(breakpoint instruction).

@openjdk
Copy link

@openjdk openjdk bot commented Sep 21, 2020

@kimbarrett Setting summary to Removed platform-dependent definitions of BREAKPOINT as asm(breakpoint instruction).

@kimbarrett
Copy link
Author

@kimbarrett kimbarrett commented Sep 21, 2020

/integrate

@openjdk openjdk bot closed this Sep 21, 2020
@openjdk openjdk bot added integrated and removed ready rfr labels Sep 21, 2020
@openjdk
Copy link

@openjdk openjdk bot commented Sep 21, 2020

@kimbarrett Since your change was applied there have been 8 commits pushed to the master branch:

  • cc7521c: 8252199: Reimplement support of Type 1 fonts without MappedByteBuffer
  • 3d88d38: 8252070: Some platform-specific BLIT optimizations are not effective
  • 83b0537: 8253291: bug7072653.java still failed "Popup window height ... is wrong"
  • d27835b: 8249142: java/awt/FontClass/CreateFont/DeleteFont.sh is unstable
  • 1438ce0: 8252188: Crash in OrINode::Ideal(PhaseGVN*, bool)+0x8b9
  • 224a30f: 8252311: AArch64: save two words in itable lookup stub
  • 22f7af7: 8253317: The "com/apple/eawt" is missed in the "othervm.dirs" config option
  • f55dd9d: 8251548: Remove unnecessary explicit initialization of volatile variables in security-libs code

Your commit was automatically rebased without conflicts.

Pushed as commit bca9e55.

💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored.

@kimbarrett kimbarrett deleted the assert_asm branch Sep 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
3 participants