2011-08-23 01:51:24 +08:00
|
|
|
# _GCC_PICFLAG(FLAG, DISPATCH)
|
|
|
|
# ----------------------------
|
|
|
|
# Store PIC flag corresponding to DISPATCH triplet in FLAG.
|
|
|
|
# Explit use of -fpic in CFLAGS corresponding to FLAG overrides default.
|
|
|
|
AC_DEFUN([_GCC_PICFLAG], [
|
|
|
|
|
|
|
|
case "${$2}" in
|
|
|
|
# PIC is the default on some targets or must not be used.
|
|
|
|
*-*-darwin*)
|
2015-06-25 03:43:02 +08:00
|
|
|
# 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
|
2016-12-18 14:36:40 +08:00
|
|
|
# libs.
|
2015-06-25 03:43:02 +08:00
|
|
|
*-mdynamic-no-pic*) $1='-fno-common -mno-dynamic-no-pic' ;;
|
|
|
|
*) $1=-fno-common ;;
|
|
|
|
esac
|
2011-08-23 01:51:24 +08:00
|
|
|
;;
|
|
|
|
alpha*-dec-osf5*)
|
|
|
|
# PIC is the default.
|
|
|
|
;;
|
|
|
|
hppa*64*-*-hpux*)
|
|
|
|
# PIC is the default for 64-bit PA HP-UX.
|
|
|
|
;;
|
2013-04-30 20:40:42 +08:00
|
|
|
i[[34567]]86-*-cygwin* | x86_64-*-cygwin*)
|
|
|
|
;;
|
|
|
|
i[[34567]]86-*-mingw* | x86_64-*-mingw*)
|
2011-08-23 01:51:24 +08:00
|
|
|
;;
|
2012-05-29 23:58:15 +08:00
|
|
|
i[[34567]]86-*-interix[[3-9]]*)
|
2011-08-23 01:51:24 +08:00
|
|
|
# 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.
|
|
|
|
$1='-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.
|
|
|
|
$1=-fPIC
|
|
|
|
;;
|
2023-01-04 10:52:55 +08:00
|
|
|
loongarch*-*-*)
|
|
|
|
$1=-fpic
|
|
|
|
;;
|
2011-08-23 01:51:24 +08:00
|
|
|
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-*-*)
|
|
|
|
$1=-fpic
|
|
|
|
;;
|
|
|
|
# FIXME: Override -fPIC default in libgcc only?
|
|
|
|
sh-*-linux* | sh[[2346lbe]]*-*-linux*)
|
|
|
|
$1=-fpic
|
|
|
|
;;
|
Deprecate a.out support for NetBSD targets.
As discussed previously, a.out support is now quite deprecated, and in
some cases removed, in both Binutils itself and NetBSD, so this legacy
default makes little sense. `netbsdelf*` and `netbsdaout*` still work
allowing the user to be explicit about there choice. Additionally, the
configure script warns about the change as Nick Clifton requested.
One possible concern was the status of NetBSD on NS32K, where only a.out
was supported. But per [1] NetBSD has removed support, and if it were to
come back, it would be with ELF. The binutils implementation is
therefore marked obsolete, per the instructions in the last message.
With that patch and this one applied, I have confirmed the following:
--target=i686-unknown-netbsd
--target=i686-unknown-netbsdelf
builds completely
--target=i686-unknown-netbsdaout
properly fails because target is deprecated.
--target=vax-unknown-netbsdaout builds completely except for gas, where
the target is deprecated.
[1]: https://mail-index.netbsd.org/tech-toolchain/2021/07/19/msg004025.html
---
bfd/config.bfd | 43 +++++++++++++--------
bfd/configure.ac | 5 +--
binutils/testsuite/binutils-all/nm.exp | 2 +-
binutils/testsuite/lib/binutils-common.exp | 7 +---
config/picflag.m4 | 4 +-
gas/configure.tgt | 9 +++--
gas/testsuite/gas/arm/blx-bl-convert.d | 2 +-
gas/testsuite/gas/arm/blx-local-thumb.d | 2 +-
gas/testsuite/gas/sh/basic.exp | 2 +-
gdb/configure.host | 34 +++++++----------
gdb/configure.tgt | 2 +-
gdb/testsuite/gdb.asm/asm-source.exp | 6 +--
intl/configure | 2 +-
ld/configure.tgt | 44 +++++++++++-----------
ld/testsuite/ld-arm/arm-elf.exp | 4 +-
ld/testsuite/ld-elf/elf.exp | 2 +-
ld/testsuite/ld-elf/shared.exp | 4 +-
libiberty/configure | 4 +-
2021-08-11 20:17:54 +08:00
|
|
|
sh*-*-netbsd*)
|
2011-08-23 01:51:24 +08:00
|
|
|
$1=-fpic
|
|
|
|
;;
|
|
|
|
# Default to -fPIC unless specified otherwise.
|
|
|
|
*)
|
|
|
|
$1=-fPIC
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
# If the user explicitly uses -fpic/-fPIC, keep that.
|
|
|
|
case "${m4_bpatsubsts($1, PICFLAG, CFLAGS)}" in
|
|
|
|
*-fpic*)
|
|
|
|
$1=-fpic
|
|
|
|
;;
|
|
|
|
*-fPIC*)
|
|
|
|
$1=-fPIC
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
])
|
|
|
|
|
|
|
|
# GCC_PICFLAG
|
|
|
|
# -----------
|
|
|
|
# Store host PIC flag in PICFLAG.
|
|
|
|
AC_DEFUN([GCC_PICFLAG], [
|
|
|
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
|
|
|
_GCC_PICFLAG([PICFLAG], [host])])
|
|
|
|
|
|
|
|
# GCC_PICFLAG_FOR_TARGET
|
|
|
|
# ----------------------
|
|
|
|
# Store target PIC flag in PICFLAG_FOR_TARGET.
|
|
|
|
AC_DEFUN([GCC_PICFLAG_FOR_TARGET], [
|
|
|
|
AC_REQUIRE([AC_CANONICAL_TARGET])
|
|
|
|
_GCC_PICFLAG([PICFLAG_FOR_TARGET], [target])])
|