[PATCH libaio] Link against libgcc to avoid unresolved symbols
authorGuillem Jover <guillem@debian.org>
Fri, 28 Sep 2018 10:15:54 +0000 (13:15 +0300)
committerPeter Michael Green <plugwash@raspbian.org>
Mon, 15 Nov 2021 00:13:31 +0000 (00:13 +0000)
commite3d26a8e2b9b6ec5bd0f1577af4d439a38e0950b
tree10a0e8442e52f100a42b34bfb674f87d09c4bb9d
parent4865f9f8a4a9855103c6568e0ac309f073f33e3c
[PATCH libaio] Link against libgcc to avoid unresolved symbols

We need to link agaisnt -lgcc, on at least hppa, PPC and ARC.
That's because in some corner-cases like compilation with -Os
on ARC and PPC so-called millicode (basically function prologue and
epilogue) implemented in libgcc.a is used. So we end up with
GLOBAL UNDEFINED symbol in libaio.so and then on linkage of the final
applicaiton LD fails to proceed saying:
--------------------------->8----------------------
hidden symbol '__ld_r13_to_r15_ret' in .../libgcc.a(_millicodethunk_ret.o) is referenced by DSO
--------------------------->8----------------------

Also it looks like in general it is not the best idea to use either
"-nostartfiles" or "-nostdlib" when linking shared libs because
default construtor/destructor functions won't be executed, see
"5.2. Library constructor and destructor functions" in [1]

So let's stop passing "-nostdlib" and "-nostartfiles" and get required
stuff built-in libaio.

Initial patch taken from Debian [2].

Fixes build failures in Buildroot like blktrace [3], lvm2 [4].

[1] http://tldp.org/HOWTO/Program-Library-HOWTO/miscellaneous.html
[2] https://sources.debian.org/patches/libaio/0.3.111-1/01_link_libs.patch/
[3] http://autobuild.buildroot.net/results/17461209755038a30118d76acb4f43469a22a139/
[4] http://autobuild.buildroot.net/results/a5dfc87f94b97135e5cc84f6a876114891ed9dd9/

Signed-off-by: Guillem Jover <guillem@debian.org>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Gbp-Pq: Topic upstream
Gbp-Pq: Name 0001-Link-against-libgcc-to-avoid-unresolved-symbols.patch
src/Makefile