[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