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

Error: 64-bit mode not supported on 'pentium4' #20274

Closed
Hello71 opened this issue Oct 1, 2024 · 4 comments · Fixed by #20278
Closed

Error: 64-bit mode not supported on 'pentium4' #20274

Hello71 opened this issue Oct 1, 2024 · 4 comments · Fixed by #20278

Comments

@Hello71
Copy link
Contributor

Hello71 commented Oct 1, 2024

Building OpenJ9 OpenJDK with binutils 2.42+ fails with:

[ 26%] Building ASM object runtime/util/CMakeFiles/j9util.dir/fpusup.s.o
cd /tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/util && /usr/bin/x86_64-pc-linux-gnu-gcc -DIPv6_FUNCTION_SUPPORT -DJ9HAMMER -DLINUX -DOPENJ9_BUILD -D_AMD64_ -D_FILE_OFFSET_BITS=64 -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/util -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/util/. -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/oti -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/include -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/include_core -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/include -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/include -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/omr -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/nls -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/base/vlhgc -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/. -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/omr/gc -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/base -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/base/segregated -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/base/standard -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/startup -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/stats -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/structs -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/verbose -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/omr/gc/verbose/handler_standard -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_modron_standard -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_realtime -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_trace -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_vlhgc -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_stats/. -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_include -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_glue_java -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_base -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_stats -I/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/openj9/runtime/gc_structs -pthread -fno-strict-aliasing -m64 -fPIC -o CMakeFiles/j9util.dir/fpusup.s.o -c /tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/util/fpusup.s
/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/util/fpusup.s: Assembler messages:
/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm/runtime/util/fpusup.s:111: Error: 64bit mode not supported on `pentium4'.
make[6]: *** [runtime/util/CMakeFiles/j9util.dir/build.make:1170: runtime/util/CMakeFiles/j9util.dir/fpusup.s.o] Error 1
make[6]: *** Waiting for unfinished jobs....
make[6]: Leaving directory '/tmp/portage/dev-java/openj9-openjdk-21.0.46.1/work/openj9-openjdk-jdk21-openj9-0.46.1/build/linux-x86_64-server-release/vm'

MASM .xmm "Enables assembly of Streaming SIMD Extension instructions.", whereas gas .arch "enables a warning when gas detects an instruction that is not supported on the CPU specified". So based on the documentation, the behavior is opposite: MASM is a lower limit, gas is an upper limit. Since pentium4 cannot support any 64-bit instructions, it is rejected.

https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=1d07cfb4406ee1dd336dd63cd5af7e8534892be7

Removing the .arch directive from xhelpers.m4 allows the build to complete. There's more in runtime/makelib/masm2gas.pl and the same in OMR, but those don't seem to be used in the normal build. In principle, it could also be output in 32-bit mode only.

Copy link

github-actions bot commented Oct 1, 2024

Issue Number: 20274
Status: Open
Recommended Components: comp:build, comp:vm, comp:test
Recommended Assignees: keithc-ca, jasonfengj9, babsingh

@pshipton
Copy link
Member

pshipton commented Oct 1, 2024

@tajila @keithc-ca fyi

@keithc-ca
Copy link
Contributor

I encountered that and simply removed that line to build with gcc 13.2. There are other changes that I found necessary, but I haven't verified that those are safe for all versions.

@keithc-ca keithc-ca self-assigned this Oct 1, 2024
@keithc-ca keithc-ca changed the title Error: 64bit mode not supported on `pentium4'. Error: 64-bit mode not supported on 'pentium4' Oct 1, 2024
Copy link

github-actions bot commented Oct 1, 2024

Issue Number: 20274
Status: Closed
Actual Components: comp:vm, userRaised
Actual Assignees: No one :(
PR Assignees: keithc-ca

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants