Repository navigation
R64: tell rucc its target and explain the 7.2.8 config differences - #192
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #8. This gets the R64 row building with rucc and makes
rk config-diffon 7.2.8 clean.rucc picks its target from the name it is run as, but the shim runs it by its real path, so on riscv64 it was compiling for the host. On a cross row rk now adds
--target=<cross triple>to the persona when the compiler is rucc, the way clang is told. The shim strips it before handing a call to gcc for bring up, andflags.rsandprobes.rsdrop it when they compare commands and probes, the same as the other persona flags.The remaining config differences on R64 are now in
config-divergences.toml, all coming from the reference being Ubuntu 24.04's gcc 13.3 while the persona is gcc 14.2:CC_HAS_MIN_FUNCTION_ALIGNMENTandCC_HAS_SANE_FUNCTION_ALIGNMENT, since-fmin-function-alignmentcame in gcc 14GCC_SUPPORTS_DYNAMIC_FTRACEand the ftrace symbols that follow it (HAVE_DYNAMIC_FTRACE*,HAVE_FUNCTION_TRACER,HAVE_FUNCTION_GRAPH_TRACER,FUNCTION_TRACER,STACK_TRACER), which need that flag on riscv64 with compressed instructionsTOOLCHAIN_HAS_ZA*andRISCV_ISA_ZABHA, since gcc 13.3 refuses Zacas and Zabha in-marchand rucc takes them and assembles the instructionsREADME, rows.toml and plan 10.4 no longer say R64 is waiting for a back end.
Tested on server3 with rucc at tamnd/rucc 3d3b570 (which has the riscv64 atomics from tamnd/rucc#3923):
rk build 7.2.8 --row R64 --fragment testwith rucc buildsImagerk config-diffgives 18 symbols differ, 18 explained and 0 notrk test --kinds boot,smokepasses 10 of 10 like gcc, and--kinds kunitpasses 33 of 33 like gcc, with no splats only in the rucc logcargo test --releasepasses