[gdb/build] Fix gdbserver build with -fsanitize=address
When doing a gdbserver build with CFLAGS/CXXFLAGS/LDFLAGS=-fsanitize=address
we run into:
...
ld: ../libiberty/libiberty.a(safe-ctype.o):
relocation R_X86_64_32 against `.data' can not be used when making a
shared object; recompile with -fPIC
collect2: error: ld returned 1 exit status
make[1]: *** [libinproctrace.so] Error 1
...
This started with commit 9664849417
"gdbsupport: make use of safe-ctype
functions from libiberty", which introduced a dependency of libinproctrace.so
on libiberty.
Fix this in gdbserver/Makefile.in by using a setup similar to what is done in
gcc-repo/src/libcc1/Makefile.am, such that ../libiberty/noasan/libiberty.a is
used instead.
Build on x86_64-linux, both with and without -fsanitize=address.
gdbserver/ChangeLog:
2021-01-07 Tom de Vries <tdevries@suse.de>
* Makefile.in (LIBIBERTY_NORMAL, LIBIBERTY_NOASAN, LIBIBERTY_PIC):
(LIBIBERTY_FOR_SHLIB): New var.
(LIBIBERTY): Set using $(LIBIBERTY_NORMAL).
(IPA_LIB): Use LIBIBERTY_FOR_SHLIB instead of LIBIBERTY in target rule.
This commit is contained in:
parent
aa881ecde4
commit
78e4948694
2 changed files with 18 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2021-01-07 Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
|
* Makefile.in (LIBIBERTY_NORMAL, LIBIBERTY_NOASAN, LIBIBERTY_PIC):
|
||||||
|
(LIBIBERTY_FOR_SHLIB): New var.
|
||||||
|
(LIBIBERTY): Set using $(LIBIBERTY_NORMAL).
|
||||||
|
(IPA_LIB): Use LIBIBERTY_FOR_SHLIB instead of LIBIBERTY in target rule.
|
||||||
|
|
||||||
2021-01-04 Simon Marchi <simon.marchi@efficios.com>
|
2021-01-04 Simon Marchi <simon.marchi@efficios.com>
|
||||||
|
|
||||||
* debug.cc (debug_print_depth): New.
|
* debug.cc (debug_print_depth): New.
|
||||||
|
|
|
@ -103,7 +103,16 @@ INCLUDE_DIR = ${srcdir}/../include
|
||||||
INCLUDE_DEP = $$(INCLUDE_DIR)
|
INCLUDE_DEP = $$(INCLUDE_DIR)
|
||||||
|
|
||||||
LIBIBERTY_BUILDDIR = ../libiberty
|
LIBIBERTY_BUILDDIR = ../libiberty
|
||||||
LIBIBERTY = $(LIBIBERTY_BUILDDIR)/libiberty.a
|
LIBIBERTY_NORMAL = $(LIBIBERTY_BUILDDIR)/libiberty.a
|
||||||
|
LIBIBERTY_NOASAN = $(LIBIBERTY_BUILDDIR)/noasan/libiberty.a
|
||||||
|
LIBIBERTY_PIC = $(LIBIBERTY_BUILDDIR)/pic/libiberty.a
|
||||||
|
LIBIBERTY_FOR_SHLIB = \
|
||||||
|
$(if $(wildcard $(LIBIBERTY_NOASAN)),\
|
||||||
|
$(LIBIBERTY_NOASAN),\
|
||||||
|
$(if $(wildcard $(LIBIBERTY_PIC)),\
|
||||||
|
$(LIBIBERTY_PIC),\
|
||||||
|
$(LIBIBERTY_NORMAL)))
|
||||||
|
LIBIBERTY = $(LIBIBERTY_NORMAL)
|
||||||
|
|
||||||
GDBSUPPORT_BUILDDIR = ../gdbsupport
|
GDBSUPPORT_BUILDDIR = ../gdbsupport
|
||||||
GDBSUPPORT = $(GDBSUPPORT_BUILDDIR)/libgdbsupport.a
|
GDBSUPPORT = $(GDBSUPPORT_BUILDDIR)/libgdbsupport.a
|
||||||
|
@ -395,7 +404,7 @@ $(IPA_LIB): $(sort $(IPA_OBJS)) ${CDEPS}
|
||||||
$(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \
|
$(ECHO_CXXLD) $(CC_LD) -shared -fPIC -Wl,--soname=$(IPA_LIB) \
|
||||||
-Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
|
-Wl,--no-undefined $(INTERNAL_CFLAGS) $(INTERNAL_LDFLAGS) \
|
||||||
$(CXXFLAGS) \
|
$(CXXFLAGS) \
|
||||||
-o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY) -ldl -pthread
|
-o $(IPA_LIB) ${IPA_OBJS} $(LIBIBERTY_FOR_SHLIB) -ldl -pthread
|
||||||
|
|
||||||
# Put the proper machine-specific files first, so M-. on a machine
|
# Put the proper machine-specific files first, so M-. on a machine
|
||||||
# specific routine gets the one for the correct machine.
|
# specific routine gets the one for the correct machine.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue