RFR: 8256831: MIPS Zero builds fail with undefined __atomic_compare_exchange_8

Magnus Ihse Bursie ihse at openjdk.java.net
Mon Nov 23 11:30:55 UTC 2020


On Sun, 22 Nov 2020 14:40:12 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

> If you try to build `linux-mipsel-zero-fastdebug`, this happens:
> 
> 
> 
> 
> 
> 
> 
> I think it relates to [JDK-8253970](https://bugs.openjdk.java.net/browse/JDK-8253970) that introduced `atomic_compare_exchange` on those paths, but maybe the issue exists for longer. 
> 
> Various other reports for build failures like this suggest the binary should link with `libatomic`. GCC's `libatomic` is the library that provides runtime support for atomics not supported in hardware, which seems to include 8-byte CAS for MIPS, but not any other OpenJDK platform.
> 
> The alternative would be to massage the otherwise generic Zero code to unimplement the 8-byte CAS.
> 
> Attention @DamonFool, who must be running into this problem for their MIPS builds?
> 
> Testing:
>  - [x] Linux mipsel Zero fastdebug build (together with JDK-8256829 fix)

This is incorrect. The `-l` prefix indicates a library to link with. As such, it belongs to LIBS, not LDFLAGS. 

I'm not sure if we still have a global LIBS variable that is added to all compile lines. We used to have since Solaris Studio required `-lc` for every non-trivial file, but it might have been purged with the Solaris platform. 

Otherwise this looks like something that belong in LIBJVM LIBS. In fact, if it is *only* needed for the hotspot build, it is really where it belong. And even if it's needed in an additional library or two, it should be added on those places. Only if like more or less all libraries require this should it be added as a global flag.

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

Changes requested by ihse (Reviewer).

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



More information about the build-dev mailing list