aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2018-12-14 14:02:54 +0000
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2019-01-30 18:03:36 +0000
commit956cc47c5614b0d50bf538e3dcc88c81560fa64c (patch)
tree3b4cbf2ed6892542e1ee4e9c2b35b0fddeee1412
parentb5eba2d8c050b39943918057283470959a5d18c3 (diff)
downloadgdb-956cc47c5614b0d50bf538e3dcc88c81560fa64c.zip
gdb-956cc47c5614b0d50bf538e3dcc88c81560fa64c.tar.gz
gdb-956cc47c5614b0d50bf538e3dcc88c81560fa64c.tar.bz2
[PR gdb/23985] Fix libinproctrace.so build
The IPA objects currently may use gnulib replacement apis, which is wrong: gnulib is not linked into the produced dso and it cannot be because it is not built with -fPIC -fvisibility=hidden. The gnulib replacement detection is broken under cross compilation: for targets other than *-gnu*, replacements are enabled that depend on execution time detection. This causes unnecessary build failure when the target has proper support for the replaced api. This fix tries to undo the replacements, which is tricky because the gnulib headers are still used for various compile time fixups and there is no simple knob in gnulib to only turn the replacements off. Without this workaround gdb fails to cross build to non-gnu targets: ld: tracepoint-ipa.o: in function `gdb_agent_helper_thread(void*)': gdb/gdbserver/tracepoint.c:7221: undefined reference to `rpl_strerror' ... Makefile:434: recipe for target 'libinproctrace.so' failed gdb/gdbserver/ChangeLog: PR gdb/23985 * Makefile.in (IPAGENT_CFLAGS): Add UNDO_GNULIB_CFLAGS. (UNDO_GNULIB_CFLAGS): Undo gnulib replacements.
-rw-r--r--gdb/gdbserver/ChangeLog6
-rw-r--r--gdb/gdbserver/Makefile.in6
2 files changed, 12 insertions, 0 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index a244c4f..be9a263 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-30 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ PR gdb/23985
+ * Makefile.in (IPAGENT_CFLAGS): Add UNDO_GNULIB_CFLAGS.
+ (UNDO_GNULIB_CFLAGS): Undo gnulib replacements.
+
2019-01-25 Tom Tromey <tom@tromey.com>
* Makefile.in (INCLUDE_CFLAGS): Don't add -I for common.
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 8cffe3dd..f5fc550 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -544,9 +544,15 @@ regdat_sh = $(srcdir)/../regformats/regdat.sh
UST_CFLAGS = $(ustinc) -DCONFIG_UST_GDB_INTEGRATION
+# Undo gnulib replacements for the IPA shared library build.
+# The gnulib headers are still needed, but gnulib is not linked
+# into the IPA lib so replacement apis don't work.
+UNDO_GNULIB_CFLAGS = -Drpl_strerror=strerror
+
# Note, we only build the IPA if -fvisibility=hidden is supported in
# the first place.
IPAGENT_CFLAGS = $(INTERNAL_CFLAGS) $(UST_CFLAGS) \
+ $(UNDO_GNULIB_CFLAGS) \
-fPIC -DIN_PROCESS_AGENT \
-fvisibility=hidden