Skip to content

Conversation

@broudy3
Copy link
Contributor

@broudy3 broudy3 commented May 29, 2023

Changed encoding in .cfi_personality in .macro NESTED_ENTRY from value 0x1C to value 0x1B.

When old encoding 0x1C is used in .cfi_personality :

  • Clang/LLVM version 15/16 generates relocation R_RISCV_64 to symbol UnhandledExceptionHandlerUnix in file asmhelpers.S.o section .rela.eh_frame.
  • LLD linker version 16 reports linking error about this:
ld.lld-16: error: relocation R_RISCV_64 cannot be used against symbol 'UnhandledExceptionHandlerUnix'; recompile with -fPIC
>>> defined in runtime/artifacts/obj/coreclr/linux.riscv64.Debug/vm/wks/CMakeFiles/cee_wks_core.dir/__/exceptionhandling.cpp.o
>>> referenced by runtime/artifacts/obj/coreclr/linux.riscv64.Debug/vm/wks/CMakeFiles/cee_wks_core.dir/__/riscv64/asmhelpers.S.o:(.eh_frame+0x11D6F6)
  • LLD linker version 15, does not report error, instead it creates a invalid binary libcoreclr.so - first relocation in .rela.dyn points to some random code and 8 bytes from this code are replaced with address of UnhandledExceptionHandlerUnix, this corrupts the code and likely leads to application crash

When encoding 0x1B is used in .cfi_personality :

  • Clang/LLVM version 15/16 (and also gcc I tested) generates relocation R_RISCV_32_PCREL to symbol UnhandledExceptionHandlerUnix in file asmhelpers.S.o section .rela.eh_frame.
  • linking with LLD 15/16 is without error and compiled binary libcoreclr.so does not contain the problematic relocation which corrupts the code.

@ghost ghost added area-PAL-coreclr community-contribution Indicates that the PR has been added by a community member labels May 29, 2023
@broudy3
Copy link
Contributor Author

broudy3 commented May 29, 2023

@dotnet-policy-service agree

@jkotas jkotas added the arch-riscv Related to the RISC-V architecture label May 29, 2023
Copy link
Member

@jkotas jkotas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@jkotas jkotas merged commit 1393d9f into dotnet:main May 29, 2023
@clamp03
Copy link
Member

clamp03 commented May 30, 2023

Thank you

@ghost ghost locked as resolved and limited conversation to collaborators Jun 29, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

arch-riscv Related to the RISC-V architecture area-PAL-coreclr community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants