intl: always picify

libintl is included in several shared libraries (at least
libinproctrace.so and libctf.so): unconditionally picify with code
borrowed from libiberty configure.  (It's not performance-critical, so
don't bother making separate PIC and non-PIC libraries like libiberty
does.)

intl/ChangeLog
2021-02-02  Nick Alcock  <nick.alcock@oracle.com>

	* aclocal.m4: include picflag.m4.
	* configure.ac (PICFLAG): Add and substitute.
	* Makefile.in (PICFLAG): New.
	(COMPILE): Use it.
	* configure: Regenerate.
This commit is contained in:
Nick Alcock 2021-02-02 15:39:26 +00:00
parent adda0248ed
commit 53d4244ec0
5 changed files with 102 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2021-02-02 Nick Alcock <nick.alcock@oracle.com>
* aclocal.m4: include picflag.m4.
* configure.ac (PICFLAG): Add and substitute.
* Makefile.in (PICFLAG): New.
(COMPILE): Use it.
* configure: Regenerate.
2020-04-16 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/92008

View File

@ -49,8 +49,9 @@ CFLAGS = @CFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
DEFS = -DHAVE_CONFIG_H
PICFLAG = @PICFLAG@
COMPILE = $(CC) -c $(CPPFLAGS) $(CFLAGS) $(DEFS) $(DEFS-$@) $(INCLUDES)
COMPILE = $(CC) -c $(CPPFLAGS) $(CFLAGS) $(PICFLAG) $(DEFS) $(DEFS-$@) $(INCLUDES)
HEADERS = \
gmo.h \

1
intl/aclocal.m4 vendored
View File

@ -26,6 +26,7 @@ m4_include([../config/lib-link.m4])
m4_include([../config/lib-prefix.m4])
m4_include([../config/nls.m4])
m4_include([../config/override.m4])
m4_include([../config/picflag.m4])
m4_include([../config/po.m4])
m4_include([../config/progtest.m4])
m4_include([../config/stdint_h.m4])

86
intl/configure vendored
View File

@ -624,6 +624,7 @@ ac_subst_vars='LTLIBOBJS
LIBOBJS
BISON3_NO
BISON3_YES
PICFLAG
INCINTL
LIBINTL_DEP
MAINT
@ -6793,6 +6794,91 @@ case $USE_INCLUDED_LIBINTL in
;;
esac
# intl is sometimes linked into shared libraries even without --enable-shared
# (e.g. gdbsupport's inprocess agent): so always PICify, just in case.
case "${host}" in
# PIC is the default on some targets or must not be used.
*-*-darwin*)
# For darwin, common symbols are not allowed in MH_DYLIB files
case "${CFLAGS}" in
# If we are using a compiler supporting mdynamic-no-pic
# and the option has been tested as safe to add, then cancel
# it here, since the code generated is incompatible with shared
# libs.
*-mdynamic-no-pic*) PICFLAG='-fno-common -mno-dynamic-no-pic' ;;
*) PICFLAG=-fno-common ;;
esac
;;
alpha*-dec-osf5*)
# PIC is the default.
;;
hppa*64*-*-hpux*)
# PIC is the default for 64-bit PA HP-UX.
;;
i[34567]86-*-cygwin* | x86_64-*-cygwin*)
;;
i[34567]86-*-mingw* | x86_64-*-mingw*)
;;
i[34567]86-*-interix[3-9]*)
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
# Instead, we relocate shared libraries at runtime.
;;
i[34567]86-*-nto-qnx*)
# QNX uses GNU C++, but need to define -shared option too, otherwise
# it will coredump.
PICFLAG='-fPIC -shared'
;;
i[34567]86-pc-msdosdjgpp*)
# DJGPP does not support shared libraries at all.
;;
ia64*-*-hpux*)
# On IA64 HP-UX, PIC is the default but the pic flag
# sets the default TLS model and affects inlining.
PICFLAG=-fPIC
;;
mips-sgi-irix6*)
# PIC is the default.
;;
rs6000-ibm-aix* | powerpc-ibm-aix*)
# All AIX code is PIC.
;;
# Some targets support both -fPIC and -fpic, but prefer the latter.
# FIXME: Why?
i[34567]86-*-* | x86_64-*-*)
PICFLAG=-fpic
;;
# FIXME: Override -fPIC default in libgcc only?
sh-*-linux* | sh[2346lbe]*-*-linux*)
PICFLAG=-fpic
;;
# FIXME: Simplify to sh*-*-netbsd*?
sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
sh64-*-netbsd* | sh64l*-*-netbsd*)
PICFLAG=-fpic
;;
# Default to -fPIC unless specified otherwise.
*)
PICFLAG=-fPIC
;;
esac
# If the user explicitly uses -fpic/-fPIC, keep that.
case "${CFLAGS}" in
*-fpic*)
PICFLAG=-fpic
;;
*-fPIC*)
PICFLAG=-fPIC
;;
esac
BISON3_YES='#'
BISON3_NO=
if test "$INTLBISON" != :; then

View File

@ -47,6 +47,11 @@ case $USE_INCLUDED_LIBINTL in
;;
esac
# intl is sometimes linked into shared libraries even without --enable-shared
# (e.g. gdbsupport's inprocess agent): so always PICify, just in case.
GCC_PICFLAG
AC_SUBST(PICFLAG)
BISON3_YES='#'
BISON3_NO=
if test "$INTLBISON" != :; then