mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
60b42421e9
This patch implements the --enable-host-pie configure option which makes the compiler executables PIE. This can be used to enhance protection against ROP attacks, and can be viewed as part of a wider trend to harden binaries. Co-Authored by: Iain Sandoe <iain@sandoe.co.uk> * configure.ac (--enable-host-pie): New check. Set PICFLAG after this check. intl/ * configure.ac (--enable-host-shared): Don't set PICFLAG here. (--enable-host-pie): New check. Set PICFLAG after this check. libdecnumber/ * configure.ac (--enable-host-shared): Don't set PICFLAG here. (--enable-host-pie): New check. Set PICFLAG after this check. zlib/ * configure.ac (--enable-host-shared): Don't set PICFLAG here. (--enable-host-pie): New check. Set PICFLAG after this check.
99 lines
2.8 KiB
Plaintext
99 lines
2.8 KiB
Plaintext
AC_INIT
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
AC_CONFIG_SRCDIR(gettext.c)
|
|
AC_CONFIG_HEADER(config.h)
|
|
AC_CONFIG_MACRO_DIR(../config)
|
|
AM_GNU_GETTEXT_VERSION(0.12.1)
|
|
AM_GNU_GETTEXT([], [need-ngettext])
|
|
|
|
# This replaces the extensive use of DEFS in the original Makefile.in.
|
|
AC_DEFINE(IN_LIBINTL, 1, [Define because this is libintl.])
|
|
AC_DEFINE(IN_LIBRARY, 1, [Define because this is a library.])
|
|
AC_DEFINE(DEPENDS_ON_LIBICONV, 1, [Define because we depend on libiconv.])
|
|
AC_DEFINE(ENABLE_RELOCATABLE, 1, [Define to enable relocation.])
|
|
AC_DEFINE(NO_XMALLOC, 1, [Define if there is no xmalloc.])
|
|
AC_DEFINE(set_relocation_prefix, libintl_set_relocation_prefix,
|
|
[Define this entry point correctly.])
|
|
AC_DEFINE(relocate, libintl_relocate,
|
|
[Define this entry point correctly.])
|
|
|
|
MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing
|
|
AC_CHECK_PROGS([ACLOCAL], [aclocal], [$MISSING aclocal])
|
|
AC_CHECK_PROGS([AUTOCONF], [autoconf], [$MISSING autoconf])
|
|
AC_CHECK_PROGS([AUTOHEADER], [autoheader], [$MISSING autoheader])
|
|
|
|
AC_ARG_ENABLE(maintainer-mode,
|
|
[ --enable-maintainer-mode enable rules only needed by maintainers],,
|
|
enable_maintainer_mode=no)
|
|
if test "x$enable_maintainer_mode" = xno; then
|
|
MAINT='#'
|
|
else
|
|
MAINT=
|
|
fi
|
|
AC_SUBST(MAINT)
|
|
|
|
# Additional info for config.intl.
|
|
AC_SUBST(LIBINTL_DEP)
|
|
AC_SUBST(INCINTL)
|
|
|
|
LIBINTL_DEP=
|
|
INCINTL=
|
|
case $USE_INCLUDED_LIBINTL in
|
|
yes)
|
|
LIBINTL=`echo $LIBINTL | sed 's,${top_builddir},-L&/..,; s,\.\./intl/libintl\.a,../intl -lintl,' `
|
|
LIBINTL_DEP='${top_builddir}/../intl/libintl.a'
|
|
INCINTL='-I${top_builddir}/../intl'
|
|
;;
|
|
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
|
|
ac_bison3=no
|
|
AC_MSG_CHECKING([bison 3 or later])
|
|
changequote(<<,>>)dnl
|
|
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
|
|
case $ac_prog_version in
|
|
[3-9].*)
|
|
changequote([,])dnl
|
|
ac_prog_version="$ac_prog_version, bison3"; ac_bison3=yes;;
|
|
*) ac_prog_version="$ac_prog_version, old";;
|
|
esac
|
|
AC_MSG_RESULT([$ac_prog_version])
|
|
if test $ac_bison3 = yes; then
|
|
BISON3_YES=
|
|
BISON3_NO='#'
|
|
fi
|
|
fi
|
|
AC_SUBST(BISON3_YES)
|
|
AC_SUBST(BISON3_NO)
|
|
|
|
# Enable --enable-host-shared.
|
|
AC_ARG_ENABLE(host-shared,
|
|
[AS_HELP_STRING([--enable-host-shared],
|
|
[build host code as shared libraries])])
|
|
AC_SUBST(enable_host_shared)
|
|
|
|
# Enable --enable-host-pie.
|
|
AC_ARG_ENABLE(host-pie,
|
|
[AS_HELP_STRING([--enable-host-pie],
|
|
[build host code as PIE])])
|
|
AC_SUBST(enable_host_pie)
|
|
|
|
if test x$enable_host_shared = xyes; then
|
|
PICFLAG=-fPIC
|
|
elif test x$enable_host_pie = xyes; then
|
|
PICFLAG=-fPIE
|
|
else
|
|
PICFLAG=
|
|
fi
|
|
AC_SUBST(PICFLAG)
|
|
|
|
AC_CONFIG_FILES(Makefile config.intl)
|
|
AC_OUTPUT
|