JDK-8237753 : 32-bit builds are broken after JDK-8230594
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 15
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2020-01-23
  • Updated: 2020-06-17
  • Resolved: 2020-01-23
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 15
15 b08Fixed
Related Reports
Relates :  
Description
JDK-8230594 introduced use of:

  void add_target_count(int count) { Atomic::add(&_pending_threads, count); }

That's an atomic add on int64_t value. This fails to compile on 32-bit (ARM) with:

src/hotspot/share/runtime/atomic.hpp:741: error: undefined reference to 'long long Atomic::PlatformAdd<8u>::add_and_fetch<long long, long long>(long long volatile*, long long, atomic_memory_order) const'
collect2: error: ld returned 1 exit status


Comments
Counter was modified to be of type int32_t.
17-06-2020

URL: https://hg.openjdk.java.net/jdk/jdk/rev/d4821c2dc343 User: pchilanomate Date: 2020-01-23 04:58:57 +0000
23-01-2020

We forgot about this restriction on 64-bit atomic ops: // Atomic operations on int64 types are not available on all 32-bit // platforms. If atomic ops on int64 are defined here they must only // be used from code that verifies they are available at runtime and // can provide an alternative action if not - see supports_cx8() for // a means to test availability. We may have to change the _pending_threads variable to be uint32_t instead.
23-01-2020