Description
My build of LLVM main on FreeBSD AArch64 fails:
[ 20%] Linking CXX shared library /usr/obj/llvm/llvm-17/lib/clang/17/lib/aarch64-unknown-freebsd13.2/libclang_rt.ubsan_standalone.so
ld: error: CMakeFiles/RTUbsan_standalone.aarch64.dir/ubsan_signals_standalone.cpp.o:(function __ubsan::InitializeDeadlySignals(): .text._ZN7__ubsan23InitializeDeadlySignalsEv+0x78): improper alignment for relocation R_AARCH64_LD64_GOT_LO12_NC: 0x5E73C is not aligned to 8 bytes
The problem is apparently this line of assembly:
ldr x2, [x2, :got_lo12:sigaction]
This is an 8 byte load and the relocation expects it to be aligned to 8 bytes. Earlier in the file I see in the .text
segment
.set sigaction, __interceptor_trampoline_sigaction
.globl __interceptor_trampoline_sigaction
.type __interceptor_trampoline_sigaction,@function
__interceptor_trampoline_sigaction:
.cfi_startproc
b __interceptor_sigaction
.cfi_endproc
.Ltmp1:
.size __interceptor_trampoline_sigaction, .Ltmp1-__interceptor_trampoline_sigaction
There is no explicit alignment and the function happens to land at an odd multiple of 4 bytes.
Compile the attached file with
clang++ --target=aarch64-unknown-freebsd13.2 -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -O3 -std=c++17 -march=armv8-a -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fno-stack-protector -fno-sanitize=safe-stack -fvisibility=hidden -fno-lto -gline-tables-only -Wno-gnu -Wno-variadic-macros -Wno-c99-extensions -nostdinc++ -fno-rtti -S ubsan_signals_standalone.ii
Metadata
Metadata
Assignees
Type
Projects
Status
Done