[BUG] Clang linker crash (use-after-free?)
- Dominant language
- No language data
- Stars
- 2.3k
- Forks
- 310
- PR merge metrics
- No merged PRs in 30d
Description
### Description
I found the Clang linker crashing when trying to compile a flat binary for ARM. So I made a minimal test case to reproduce the issue.
As the log said "PLEASE submit a bug report", I'm submitting it.
Use this `entry.s`:
```
.data
.global _start
_start:
.long _start(GOT_PREL)
```
And this linker script `test.ld`:
```
ENTRY(_start)
SECTIONS {
.data : { *(.data) }
.shstrtab : { *(.shstrtab) }
/DISCARD/ : { *(*) }
}
```
And here's the commands and the output:
```
$ /path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang entry.s -c -o entry.o
$ /path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang -nostartfiles -nodefaultlibs -nostdlib -Wl,-T,test.ld entry.o -o test.elf
PLEASE submit a bug report to https://github.com/android-ndk/ndk/issues and include the crash backtrace.
Stack dump:
0. Program arguments: /path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld -pie -EL --warn-shared-textrel -z now -z relro -z max-page-size=4096 -X --hash-style=gnu --hash-style=both --enable-new-dtags --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /system/bin/linker -o test.elf -L/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/lib64/clang/14.0.6/lib/linux/arm -L/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/arm-linux-androideabi/21 -L/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/arm-linux-androideabi -L/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib/../lib -L/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/lib -T test.ld entry.o
#0 0x0000000002a047d8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x2a047d8)
#1 0x0000000002a03940 llvm::sys::RunSignalHandlers() (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x2a03940)
#2 0x0000000002a04c2a (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x2a04c2a)
#3 0x00007fc051f74520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000000000232dee9 (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x232dee9)
#5 0x000000000233d6a4 (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x233d6a4)
#6 0x000000000231e10c (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x231e10c)
#7 0x0000000002319f58 void lld::elf::writeResult >() (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x2319f58)
#8 0x00000000023198a1 void lld::elf::LinkerDriver::link >(llvm::opt::InputArgList&) (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x23198a1)
#9 0x00000000022e09e5 lld::elf::LinkerDriver::linkerMain(llvm::ArrayRef) (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x22e09e5)
#10 0x00000000022dfde5 lld::elf::link(llvm::ArrayRef, llvm::raw_ostream&, llvm::raw_ostream&, bool, bool) (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x22dfde5)
#11 0x00000000018faf85 (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x18faf85)
#12 0x00000000026fb392 main (/path_censored/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/ld+0x26fb392)
```
### Affected versions
r25
### Canary version
_No response_
### Host OS
Linux
### Host OS version
Ubuntu 22.04
### Affected ABIs
armeabi-v7a
### Build system
Other (specify below)
### Other build system
none
### minSdkVersion
none
### Device API level
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.