https://sourceware.org/bugzilla/show_bug.cgi?id=33263
Bug ID: 33263
Summary: Assertion failure when linking AArch64 code with
-Bsymbolic
Product: binutils
Version: 2.44
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ld
Assignee: unassigned at sourceware dot org
Reporter: kartatz at amanoteam dot com
Target Milestone: ---
Created attachment 16236
--> https://sourceware.org/bugzilla/attachment.cgi?id=16236&action=edit
compiled object and generated assembly files for hwasan_dynamic_shadow.cpp
I'm trying to build a GCC cross-compiler targeting Android AArch64. Currently,
BFD is able to link almost all target libraries, with the exception of hwasan
(from libsanitizer), which fails with the following output:
```
libtool: link: /tmp/gcc-releases-gcc-15/build/./gcc/xgcc -shared-libgcc <...>
-fPIC -DPIC -shared -nostdlib <...> .libs/hwasan_dynamic_shadow.o <...>
-Wl,-soname -Wl,libhwasan.so -o .libs/libhwasan.so
/tmp/pino/aarch64-unknown-linux-android/bin/ld.bfd: BFD (GNU Binutils) 2.44
assertion fail ../../bfd/elfnn-aarch64.c:10072
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:564: libhwasan.la] Error 1
```
I then tracked the assertion failure to this specific hwasan_dynamic_shadow.o
object file:
```
$ aarch64-unknown-linux-android-ld -shared -Bsymbolic ./hwasan_dynamic_shadow.o
aarch64-unknown-linux-android-ld: BFD (GNU Binutils) 2.44 assertion fail
../../bfd/elfnn-aarch64.c:10072
```
After some testing, I found that compiling the GCC libraries with -fno-plt
makes the assertion failure trigger more often. Specifically, it leads to the
same assertion failure when linking libatomic and also now triggers a "double
free or corruption" error from glibc:
```
libtool: link: /tmp/gcc-releases-gcc-15/build/./gcc/xgcc -shared-libgcc <...>
-fPIC -DPIC -shared -nostdlib <...> .libs/hwasan_dynamic_shadow.o <...>
-fno-plt -Wl,-soname -Wl,libhwasan.so -o .libs/libhwasan.so
/tmp/pino/aarch64-unknown-linux-android/bin/ld.bfd: BFD (GNU Binutils) 2.44
assertion fail ../../bfd/elfnn-aarch64.c:10072
double free or corruption (!prev)
collect2: fatal error: ld terminated with signal 6 [Aborted], core dumped
compilation terminated.
```
--
You are receiving this mail because:
You are on the CC list for the bug.