1
0
Files
gcc-14/debian/patches/ada-link-lib.diff
Konstantin Demin c2c1923c7b initial import from Debian
version: 14.3.0-5
commit: bee30ab0fff2fd6af94c62376c8aa4221bb831e0
2025-08-11 15:00:09 +03:00

169 lines
6.2 KiB
Diff

Description: adapt libgnat build for Debian
Don't include a runtime link path (-rpath), when linking binaries.
.
Build the shared libraries on hppa-linux (see #786692 below).
TODO: ask the reporter (no porterbox) to attempt a rebuild without this
chunk, now that we diverge less from upstream.
.
Instead of building libada as a target library only, build it as
both a host and, if different, target library.
.
Compile with -gnatn for efficiency.
Double-check the link since Debian moves some symbols.
.
Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl}
at build time, but we do not want to Build-Depend: guile.
# export QUILT_PATCHES=debian/patches
# quilt pop $this.diff
# quilt add src/Makefile.in
# (cd src && autogen Makefile.def)
# quilt refresh --no-timestamps --no-index -pab
# quilt push -a
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786692
Forwarded: not-needed
Author: Ludovic Brenta <lbrenta@debian.org>
Author: Nicolas Boulenguez <nicolas@debian.org>
Author: Matthias Klose <doko@debian.org>
--- a/src/gcc/ada/gcc-interface/config-lang.in
+++ b/src/gcc/ada/gcc-interface/config-lang.in
@@ -44,7 +44,7 @@ if test "x$cross_compiling/$build/$host"
fi
target_libs="target-libada"
-lang_dirs="gnattools"
+lang_dirs="libada gnattools"
# Ada is not enabled by default for the time being.
build_by_default=no
--- a/src/gcc/ada/link.c
+++ b/src/gcc/ada/link.c
@@ -107,9 +107,9 @@ const char *__gnat_default_libgcc_subdir
|| defined (__NetBSD__) || defined (__OpenBSD__) \
|| defined (__QNX__)
const char *__gnat_object_file_option = "-Wl,@";
-const char *__gnat_run_path_option = "-Wl,-rpath,";
-char __gnat_shared_libgnat_default = STATIC;
-char __gnat_shared_libgcc_default = STATIC;
+const char *__gnat_run_path_option = "";
+char __gnat_shared_libgnat_default = SHARED;
+char __gnat_shared_libgcc_default = SHARED;
int __gnat_link_max = 8192;
unsigned char __gnat_objlist_file_supported = 1;
const char *__gnat_object_library_extension = ".a";
@@ -129,9 +129,9 @@ const char *__gnat_default_libgcc_subdir
#elif defined (__linux__) || defined (__GLIBC__)
const char *__gnat_object_file_option = "-Wl,@";
-const char *__gnat_run_path_option = "-Wl,-rpath,";
-char __gnat_shared_libgnat_default = STATIC;
-char __gnat_shared_libgcc_default = STATIC;
+const char *__gnat_run_path_option = "";
+char __gnat_shared_libgnat_default = SHARED;
+char __gnat_shared_libgcc_default = SHARED;
int __gnat_link_max = 8192;
unsigned char __gnat_objlist_file_supported = 1;
const char *__gnat_object_library_extension = ".a";
--- a/src/libada/Makefile.in
+++ b/src/libada/Makefile.in
@@ -79,10 +79,11 @@ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,
# by recursive make invocations in gcc/ada/Makefile.in
LIBADA_FLAGS_TO_PASS = \
"MAKEOVERRIDES=" \
- "LDFLAGS=$(LDFLAGS)" \
+ "LDFLAGS=$(LDFLAGS) -Wl,--no-allow-shlib-undefined \
+ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \
"LN_S=$(LN_S)" \
"SHELL=$(SHELL)" \
- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
+ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \
"GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
"GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
"PICFLAG_FOR_TARGET=$(PICFLAG)" \
--- a/src/Makefile.def
+++ b/src/Makefile.def
@@ -413,6 +413,7 @@ dependencies = { module=all-libcpp; on=a
dependencies = { module=all-fixincludes; on=all-libiberty; };
+dependencies = { module=all-target-libada; on=all-gcc; };
dependencies = { module=all-gnattools; on=all-target-libada; };
dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; };
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -68711,6 +68711,7 @@ configure-target-libgo: maybe-all-target
@endif gcc-bootstrap
@unless gcc-bootstrap
+all-target-libada: maybe-all-gcc
all-gnattools: maybe-all-target-libstdc++-v3
configure-libcc1: maybe-configure-gcc
all-libcc1: maybe-all-gcc
--- a/src/configure.ac
+++ b/src/configure.ac
@@ -143,6 +143,11 @@ host_libs="gettext libiberty opcodes bfd
# If --enable-gold is used, "gold" may replace "ld".
host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gm2tools gotools c++tools"
+case "${target}" in
+ hppa64-*linux*) ;;
+ *) target_libiberty="target-libiberty";;
+esac
+
# these libraries are built for the target environment, and are built after
# the host libraries and the host tools (which may be a cross compiler)
# Note that libiberty is not a target library.
@@ -162,6 +167,7 @@ target_libraries="target-libgcc \
target-libffi \
target-libobjc \
target-libada \
+ ${target_libiberty} \
target-libgm2 \
target-libgo \
target-libgrust \
--- a/src/gcc/ada/gcc-interface/Make-lang.in
+++ b/src/gcc/ada/gcc-interface/Make-lang.in
@@ -43,7 +43,7 @@ RMDIR = rm -rf
# Extra flags to pass to recursive makes.
-COMMON_ADAFLAGS= -gnatpg
+COMMON_ADAFLAGS= -gnatpgn
ifeq ($(TREECHECKING),)
CHECKING_ADAFLAGS=
else
@@ -267,7 +267,9 @@ GCC_LINKERFLAGS = $(filter-out -Werror -
GCC_LDFLAGS = $(filter-out -static-libgcc, $(LDFLAGS))
else
# Strip -Werror during linking for the LTO bootstrap
-GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS))
+GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) \
+ -Wl,--no-allow-shlib-undefined -Wl,--no-copy-dt-needed-entries \
+ -Wl,--no-undefined
GCC_LDFLAGS = $(LDFLAGS)
endif
--- a/src/gcc/testsuite/lib/gnat.exp
+++ b/src/gcc/testsuite/lib/gnat.exp
@@ -115,6 +115,7 @@ proc gnat_target_compile { source dest t
global TOOL_OPTIONS
global gnat_target_current
global TEST_ALWAYS_FLAGS
+ global ld_library_path
# dg-require-effective-target tests must be compiled as C.
if [ string match "*.c" $source ] then {
@@ -144,6 +145,11 @@ proc gnat_target_compile { source dest t
# Always log so compilations can be repeated manually.
verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude"
verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude"
+
+ if { ! [ string match "*/libada/adalib*" $ld_library_path ] } {
+ append ld_library_path ":$rtsdir/adalib"
+ set_ld_library_path_env_vars
+ }
}
lappend options "compiler=$GNAT_UNDER_TEST -q -f"