From 79bec9233c4f17eebe157c21ebfbbdc5c733357d Mon Sep 17 00:00:00 2001 From: Satoru Takabayashi Date: Wed, 11 May 2011 18:28:14 +0000 Subject: [PATCH] install.texi (Configuration): Document --with-linker-hash-style. 2011-05-11 Satoru Takabayashi Paul Pluzhnikov * gcc/doc/install.texi (Configuration): Document --with-linker-hash-style. * gcc/gcc.c (init_spec): Handle LINKER_HASH_STYLE. * gcc/config.in: Add LINKER_HASH_STYLE. * gcc/configure.ac: Add --with-linker-hash-style. * gcc/configure: Regenerate. Co-Authored-By: Paul Pluzhnikov From-SVN: r173668 --- gcc/ChangeLog | 10 ++++++++++ gcc/config.in | 6 ++++++ gcc/configure | 37 +++++++++++++++++++++++++++++++++++-- gcc/configure.ac | 24 ++++++++++++++++++++++++ gcc/doc/install.texi | 5 +++++ gcc/gcc.c | 13 ++++++++++++- 6 files changed, 92 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7ab7fb83759..fae9956804e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2011-05-11 Satoru Takabayashi + Paul Pluzhnikov + + * gcc/doc/install.texi (Configuration): Document + --with-linker-hash-style. + * gcc/gcc.c (init_spec): Handle LINKER_HASH_STYLE. + * gcc/config.in: Add LINKER_HASH_STYLE. + * gcc/configure.ac: Add --with-linker-hash-style. + * gcc/configure: Regenerate. + 2011-05-11 Richard Guenther PR middle-end/48964 diff --git a/gcc/config.in b/gcc/config.in index f4885ca8374..43aa919e669 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -1580,6 +1580,12 @@ #endif +/* The linker hash style */ +#ifndef USED_FOR_TARGET +#undef LINKER_HASH_STYLE +#endif + + /* Define to the name of the LTO plugin DSO that must be passed to the linker's -plugin=LIB option. */ #ifndef USED_FOR_TARGET diff --git a/gcc/configure b/gcc/configure index fe21f86fe32..93176018174 100755 --- a/gcc/configure +++ b/gcc/configure @@ -915,6 +915,7 @@ enable_version_specific_runtime_libs with_slibdir enable_plugin enable_libquadmath_support +with_linker_hash_style ' ac_precious_vars='build_alias host_alias @@ -1665,6 +1666,8 @@ Optional Packages: with the compiler --with-system-zlib use installed libz --with-slibdir=DIR shared libraries in DIR [LIBDIR] + --with-linker-hash-style={sysv,gnu,both} + specify the linker hash style Some influential environment variables: CC C compiler command @@ -17514,7 +17517,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 17517 "configure" +#line 17520 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -17620,7 +17623,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 17623 "configure" +#line 17626 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -26469,6 +26472,36 @@ $as_echo "#define ENABLE_LIBQUADMATH_SUPPORT 1" >>confdefs.h fi +# Specify what hash style to use by default. + +# Check whether --with-linker-hash-style was given. +if test "${with_linker_hash_style+set}" = set; then : + withval=$with_linker_hash_style; case x"$withval" in + xsysv) + LINKER_HASH_STYLE=sysv + ;; + xgnu) + LINKER_HASH_STYLE=gnu + ;; + xboth) + LINKER_HASH_STYLE=both + ;; + *) + as_fn_error "$withval is an invalid option to --with-linker-hash-style" "$LINENO" 5 + ;; + esac +else + LINKER_HASH_STYLE='' +fi + +if test x"${LINKER_HASH_STYLE}" != x; then + +cat >>confdefs.h <<_ACEOF +#define LINKER_HASH_STYLE "$LINKER_HASH_STYLE" +_ACEOF + +fi + # Configure the subdirectories # AC_CONFIG_SUBDIRS($subdirs) diff --git a/gcc/configure.ac b/gcc/configure.ac index 3f51efd3617..92d9e295086 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -4942,6 +4942,30 @@ if test "${ENABLE_LIBQUADMATH_SUPPORT}" != "no" ; then fi +# Specify what hash style to use by default. +AC_ARG_WITH([linker-hash-style], +[AC_HELP_STRING([--with-linker-hash-style={sysv,gnu,both}], + [specify the linker hash style])], +[case x"$withval" in + xsysv) + LINKER_HASH_STYLE=sysv + ;; + xgnu) + LINKER_HASH_STYLE=gnu + ;; + xboth) + LINKER_HASH_STYLE=both + ;; + *) + AC_MSG_ERROR([$withval is an invalid option to --with-linker-hash-style]) + ;; + esac], +[LINKER_HASH_STYLE='']) +if test x"${LINKER_HASH_STYLE}" != x; then + AC_DEFINE_UNQUOTED(LINKER_HASH_STYLE, "$LINKER_HASH_STYLE", + [The linker hash style]) +fi + # Configure the subdirectories # AC_CONFIG_SUBDIRS($subdirs) diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index c19cbf9d47c..904b805dc61 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1659,6 +1659,11 @@ option), if the linker supports it. If you specify support @option{--build-id} option, a warning is issued and the @option{--enable-linker-build-id} option is ignored. The default is off. +@item --with-linker-hash-style=@var{choice} +Tells GCC to pass @option{--hash-style=@var{choice}} option to the +linker for all final links. @var{choice} can be one of +@samp{sysv}, @samp{gnu}, and @samp{both} where @samp{sysv} is the default. + @item --enable-gnu-unique-object @itemx --disable-gnu-unique-object Tells GCC to use the gnu_unique_object relocation for C++ template diff --git a/gcc/gcc.c b/gcc/gcc.c index f9a2bb2105c..c43e45ab427 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -1438,7 +1438,8 @@ init_spec (void) } #endif -#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC +#if defined LINK_EH_SPEC || defined LINK_BUILDID_SPEC || \ + defined LINKER_HASH_STYLE # ifdef LINK_BUILDID_SPEC /* Prepend LINK_BUILDID_SPEC to whatever link_spec we had before. */ obstack_grow (&obstack, LINK_BUILDID_SPEC, sizeof(LINK_BUILDID_SPEC) - 1); @@ -1446,6 +1447,16 @@ init_spec (void) # ifdef LINK_EH_SPEC /* Prepend LINK_EH_SPEC to whatever link_spec we had before. */ obstack_grow (&obstack, LINK_EH_SPEC, sizeof(LINK_EH_SPEC) - 1); +# endif +# ifdef LINKER_HASH_STYLE + /* Prepend --hash-style=LINKER_HASH_STYLE to whatever link_spec we had + before. */ + { + static const char hash_style[] = "--hash-style="; + obstack_grow (&obstack, hash_style, sizeof(hash_style) - 1); + obstack_grow (&obstack, LINKER_HASH_STYLE, sizeof(LINKER_HASH_STYLE) - 1); + obstack_1grow (&obstack, ' '); + } # endif obstack_grow0 (&obstack, link_spec, strlen (link_spec)); link_spec = XOBFINISH (&obstack, const char *); -- 2.30.2