[aarch64-port-dev ] Build failure: invalid register name for ‘r_exchange_value’
Aleksey Shipilev
shade at redhat.com
Sun Dec 24 15:51:10 UTC 2017
On 12/24/2017 04:33 PM, Aleksey Shipilev wrote:
> On 12/08/2017 06:54 PM, Andrew Haley wrote:
>> On 07/12/17 15:00, Aleksey Shipilev wrote:
>>> /pool/buildbot/slaves/sobornost/jdk8u-rh-int/build/hotspot/src/os_cpu/linux_aarch64/vm/atomic_linux_aarch64.inline.hpp:
>>> In member function ‘void AccessFlags::atomic_set_bits(jint)’:
>>> /pool/buildbot/slaves/sobornost/jdk8u-rh-int/build/hotspot/src/os_cpu/linux_aarch64/vm/atomic_linux_aarch64.inline.hpp:128:18:
>>> error: invalid register name for ‘r_exchange_value’
>>> register jint r_exchange_value asm("w0") = exchange_value;
>>
>> w0 is a legitimate register name. This is a bug in GCC. You can
>> try "x0" to see what happens.
>
> Indeed. The configure log identifies the smoking gun: while the builds is configured with aarch64
> target, it still tries to use x86_64 compiler:
>
> configure: Using x86_64-linux-gnu-gcc-6 (Debian 6.3.0-18) 6.3.0 C compiler version 6.3.0 (located at
> /usr/bin/x86_64-linux-gnu-gcc-6)
> checking for aarch64-linux-gnu-/usr/bin/x86_64-linux-gnu-gcc-6... /usr/bin/x86_64-linux-gnu-gcc-6
>
> ...
>
> A new configuration has been successfully created in
> /pool/buildbot/slaves/sobornost/jdk8u-rh-int/build/build/linux-aarch64-normal-server-fastdebug
> using configure arguments '--with-jtreg=jtreg/ --with-cacerts-file=/etc/ssl/certs/java/cacerts
> --with-freetype-include=/usr/include/freetype2/ --with-extra-cflags=-Wno-deprecated-declarations
> -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-shift-negative-value -Wno-deprecated
> --with-debug-level=fastdebug --openjdk-target=aarch64-linux-gnu
> --with-freetype-lib=/usr/lib/aarch64-linux-gnu/'.
>
> Configuration summary:
> * Debug level: fastdebug
> * JDK variant: normal
> * JVM variants: server
> * OpenJDK target: OS: linux, CPU architecture: aarch64, address length: 64
>
> Tools summary:
> * Boot JDK: openjdk version "1.8.0_151" OpenJDK Runtime Environment (build
> 1.8.0_151-8u151-b12-1~deb9u1-b12) OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode) (at
> /usr/lib/jvm/java-8-openjdk-amd64)
> * C Compiler: x86_64-linux-gnu-gcc-6 (Debian 6.3.0-18) 6.3.0 version 6.3.0 (at
> /usr/bin/x86_64-linux-gnu-gcc-6)
> * C++ Compiler: x86_64-linux-gnu-g++-6 (Debian 6.3.0-18) 6.3.0 version 6.3.0 (at
> /usr/bin/x86_64-linux-gnu-g++-6)
>
> This seems to only affect jdk8 builds on Debian 9 and GCC 6.3.0. Maybe there is some easy patch missing?
Prepending the explicit CC/CXX to configure seems to work:
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ sh ./configure ...
-Aleksey
More information about the aarch64-port-dev
mailing list