-
Notifications
You must be signed in to change notification settings - Fork 170
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
Bootstrap comparison failure: gcc/rust/rust-lex.o differs #3424
Comments
Does the compiler still bootstrap with rust disabled? I'd think |
Thanks for the suggestion! I will try a build with rust disabled. |
Yes. With rust disabled, it bootstraps successfully. So the problem is very specific to
Then do you have any clue about how this could happen? Thanks! |
After running diffoscope, I find a very obvious difference in plain text apart from other differences: $ readelf --wide --decompress --string-dump=.gnu.lto_.opts rust-lex.2.o
String dump of section '.gnu.lto_.opts':
[ 0] '-fno-openmp' '-fno-openacc' '-fcf-protection=none' '-g' '-mabi=lp64d' '-misa-spec=20191213' '-mtls-dialect=trad' '-march=rv64imafdc_zicsr_zifencei' '-O2' '-O2' '-flto=jobserver' '-frandom-seed=1' '-fasynchronous-unwind-tables' '-fno-PIE' '-fno-plt' '-fexceptions' '-fstack-clash-protection' '-fno-omit-frame-pointer' '-fno-checking' '-flto=jobserver' '-frandom-seed=1' $ readelf --wide --decompress --string-dump=.gnu.lto_.opts rust-lex.3.o
String dump of section '.gnu.lto_.opts':
[ 0] '-fno-openmp' '-fno-openacc' '-fcf-protection=none' '-g' '-mabi=lp64d' '-misa-spec=20191213' '-mtls-dialect=trad' '-march=rv64imafdc_zicsr_zifencei' '-O2' '-O2' '-fchecking=1' '-flto=jobserver' '-frandom-seed=1' '-fasynchronous-unwind-tables' '-fno-PIE' '-fno-plt' '-fexceptions' '-fstack-clash-protection' '-fno-omit-frame-pointer' '-fchecking=1' '-flto=jobserver' '-frandom-seed=1' There are commandline-like strings embedded in Stage 2 has But Stage 3 has And grepping through the build log, the options used to build stage 2 and 3 are indeed different:
|
https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html While I don't know what could be causing the issue, I'm not sure that's it -- it looks like that's only supposed to affect code generation if |
What does |
Yes, you are right. It appears that gcc strips the lto opts before comparing them so this difference doesn't matter. (with
|
From the output of diffoscope: https://repos.kxxt.dev/temp/diff.htm The most different section is The diff of disasm of this section is too big to read:
|
Summary
I am building gcc 14.2.1+r730+gc061ad5a36ba-1 with gcc 14.2.1+r134+gab884fffe3fc-2 for Arch Linux RISC-V
A bootstrap comparison failure occurred for
gcc/rust/rust-lex.o
.Build script: https://paste.rs/578r4
Build logs:
gcc-14.2.1+r730+gc061ad5a36ba-1-riscv64-prepare.log
gcc-14.2.1+r730+gc061ad5a36ba-1-riscv64-build.log
Two rust-lex.o from stage 2 and stage 3:
rust-lex.zip
Reproducer
Does the code make use of any (1.49) nightly feature ?
Godbolt link
No response
Actual behavior
Expected behavior
The compiler successfully bootstraps itself.
GCC Version
c061ad5a36ba0c07d3d9d82a85aebb887def759d
The text was updated successfully, but these errors were encountered: