Tested on hppa64-hp-hpux11.11. Committed to trunk. Dave ---
hppa64: Fix linking of libgcc on HP-UX with GNU ld 2026-05-11 John David Anglin <[email protected]> libgcc/ChangeLog: * config.host (hppa*64*-hp-hpux11*): Handle linking with GNU ld. * config/pa/libgcc-hpux.ver: New file. * config/pa/t-slibgcc-gld: New file. * config/pa/t-slibgcc-hpux (SHLIB_LDFLAGS, INSTALL_SHLIB, SHLIB_MKMAP, SHLIB_MAPFILES): Define. diff --git a/libgcc/config.host b/libgcc/config.host index f97340481a0..cb4c512ada3 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -709,7 +709,11 @@ hppa*64*-*-hpux11*) else tmake_file="$tmake_file pa/t-slibgcc-dwarf-ver" fi - tmake_file="$tmake_file pa/t-slibgcc-hpux t-slibgcc-hpux" + if test $with_gnu_ld = yes; then + tmake_file="$tmake_file t-slibgcc-libgcc pa/t-slibgcc-gld" + else + tmake_file="$tmake_file pa/t-slibgcc-hpux" + fi tmake_file="$tmake_file pa/t-softfp-sfdftf t-softfp" tm_file="$tm_file pa/pa64-hpux-lib.h" extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \ diff --git a/libgcc/config/pa/libgcc-hpux.ver b/libgcc/config/pa/libgcc-hpux.ver new file mode 100644 index 00000000000..ea90538d12e --- /dev/null +++ b/libgcc/config/pa/libgcc-hpux.ver @@ -0,0 +1,45 @@ +# Copyright (C) 2025-2026 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +GCC_HPUX_12.0.0 { + __clz_tab + _U_Qfcmp + _U_Qfcnvfxt_quad_to_sgl + _U_Qfeq + _U_Qfne + _U_Qfgt + _U_Qfge + _U_Qflt + _U_Qfle + _U_Qfltgt + _U_Qfunle + _U_Qfunlt + _U_Qfunge + _U_Qfungt + _U_Qfuneq + _U_Qfunord + _U_Qford + _U_Qfcomp + _U_Qfneg + _U_Qfcopysign + __U_Qfcnvfxt_quad_to_sgl + _U_Qfcnvfxt_quad_to_usgl + _U_Qfcnvxf_usgl_to_quad + _U_Qfcnvfxt_quad_to_udbl + _U_Qfcnvxf_udbl_to_quad +} diff --git a/libgcc/config/pa/t-slibgcc-gld b/libgcc/config/pa/t-slibgcc-gld new file mode 100644 index 00000000000..585a903797a --- /dev/null +++ b/libgcc/config/pa/t-slibgcc-gld @@ -0,0 +1,32 @@ +# Copyright (C) 2001-2026 Free Software Foundation, Inc. +# +# This file is part of GCC. +# +# GCC is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GCC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# <http://www.gnu.org/licenses/>. + +# Build a shared libgcc library with the GNU linker on PA. + +SHLIB_EXT = .sl +SHLIB_SOLINK = @shlib_base_name@$(SHLIB_EXT) +SHLIB_SONAME = @shlib_base_name@.$(SHLIB_SOVERSION) +SHLIB_LC = + +SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \ + -Wl,--version-script=$(SHLIB_MAP) + +INSTALL_SHLIB = $(INSTALL_DATA) -m 555 + +SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk +SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/pa/libgcc-hpux.ver diff --git a/libgcc/config/pa/t-slibgcc-hpux b/libgcc/config/pa/t-slibgcc-hpux index 4508db2f241..2e3410e54e3 100644 --- a/libgcc/config/pa/t-slibgcc-hpux +++ b/libgcc/config/pa/t-slibgcc-hpux @@ -22,3 +22,10 @@ SHLIB_EXT = .sl SHLIB_SOLINK = @shlib_base_name@$(SHLIB_EXT) SHLIB_SONAME = @shlib_base_name@.$(SHLIB_SOVERSION) SHLIB_LC = + +SHLIB_LDFLAGS = -Wl,+h,$(SHLIB_SONAME) + +INSTALL_SHLIB = $(INSTALL_DATA) -m 555 + +SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk +SHLIB_MAPFILES = libgcc-std.ver
signature.asc
Description: PGP signature
