https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119680
Bug ID: 119680
Summary: [15 Regression] Bootstrap fails with --enable-host-pie
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: bootstrap
Assignee: unassigned at gcc dot gnu.org
Reporter: rguenth at gcc dot gnu.org
Target Milestone: ---
We now link libbacktrace.a into collect2 via LIBDEPS where I get the following:
[ 275s] g++ -pie -fmessage-length=0 -grecord-gcc-switches -O2
-funwind-tables
-fasynchronous-unwind-tables -fstack-clash-protection -g -DIN_GCC
-DCROSS_D
IRECTORY_STRUCTURE -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W
-
Wall -Wno-error=narrowing -Wwrite-strings -Wcast-qual
-Wmissing-format-attribute
-Wconditionally-supported -Woverloaded-virtual -pedantic -Wno-long-long
-Wno-va
riadic-macros -Wno-overlength-strings -DHAVE_CONFIG_H -pie -static-libstdc++
-s
tatic-libgcc -o Tcollect2 \
[ 275s] collect2.o collect2-aix.o vec.o ggc-none.o collect-utils.o
file-
find.o hash-table.o selftest.o libcommon.a ../libcpp/libcpp.a
../libbacktrace/
.libs/libbacktrace.a ../libiberty/pic/libiberty.a
../libdecnumber/libdecnumber.a
[ 275s]
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld
: ../libbacktrace/.libs/libbacktrace.a(backtrace.o): relocation R_X86_64_32
agai
nst `.text' can not be used when making a PIE object; recompile with -fPIE
[ 275s]
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld
: failed to set dynamic section sizes: bad value
[ 275s] collect2: error: ld returned 1 exit status
[ 275s] make[2]: *** [Makefile:2587: collect2] Error 1
It seems while we have elaborate setup for libiberty:
# Use the "pic" build of libiberty if --enable-host-shared or
--enable-host-pie,
# unless we are building for mingw.
LIBIBERTY_PICDIR=$(if $(findstring mingw,$(target)),,pic)
ifneq ($(enable_host_shared)$(enable_host_pie),)
LIBIBERTY = ../libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
else
LIBIBERTY = ../libiberty/libiberty.a
endif
ifeq ($(enable_host_shared),yes)
BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/$(LIBIBERTY_PICDIR)/libiberty.a
else
BUILD_LIBIBERTY = $(build_libobjdir)/libiberty/libiberty.a
endif
we lack any such for libbacktrace. I'm not sure why we now end up using
libbacktrace.a from collect2 or whether apart from collect2 sth else is
affected as well. We don't build a PIC host libbacktrace.