]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
configure.ac: Add test for new section attribute specifier "e" via define...
authorKai Tietz <ktietz@redhat.com>
Wed, 28 Sep 2011 08:07:39 +0000 (10:07 +0200)
committerKai Tietz <ktietz@gcc.gnu.org>
Wed, 28 Sep 2011 08:07:39 +0000 (10:07 +0200)
* configure.ac: Add test for new section attribute
specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
* config.in: Regenerated.
* configure: Regenerated.
* config/i386/winnt.c (i386_pe_asm_named_section): Emit
new section flag "e" for excluded sections, if supported.
Otherwise we mark section withc SECTION_EXCLUDE flag
as never-load.

From-SVN: r179308

gcc/ChangeLog
gcc/config.in
gcc/config/i386/winnt.c
gcc/configure
gcc/configure.ac

index 25f5ca823edc13e71096490b3c24b5ce35a06014..417ba5b1e47050c03b1f997dbd78bf4f45cecdc5 100644 (file)
@@ -1,3 +1,14 @@
+2011-09-28  Kai Tietz  <ktietz@redhat.com>
+
+       * configure.ac: Add test for new section attribute
+       specifier "e" via define HAVE_GAS_SECTION_EXCLUDE.
+       * config.in: Regenerated.
+       * configure: Regenerated.
+       * config/i386/winnt.c (i386_pe_asm_named_section): Emit
+       new section flag "e" for excluded sections, if supported.
+       Otherwise we mark section withc SECTION_EXCLUDE flag
+       as never-load.
+
 2011-09-28  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * config/m32r/m32r.md: Use match_test rather than eq/ne symbol_ref
index d9b9805a2a99a8fa7f4f69c6da1c0f747ba94ee1..f2847d8789562b36230df6bcd8fb75f52a5a0408 100644 (file)
 #endif
 
 
+/* Define if your assembler supports specifying the section flag e. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_GAS_SECTION_EXCLUDE
+#endif
+
+
 /* Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.
    */
 #ifndef USED_FOR_TARGET
index 8e7043f1fe524d98e8ab43b3c3c6d3676ef72d07..af3f97571379d738c97b54f2d93e408375aabf95 100644 (file)
@@ -484,6 +484,11 @@ i386_pe_asm_named_section (const char *name, unsigned int flags,
 {
   char flagchars[8], *f = flagchars;
 
+#if defined (HAVE_GAS_SECTION_EXCLUDE) && HAVE_GAS_SECTION_EXCLUDE == 1
+  if ((flags & SECTION_EXCLUDE) != 0)
+    *f++ = 'e';
+#endif
+
   if ((flags & (SECTION_CODE | SECTION_WRITE)) == 0)
     /* readonly data */
     {
@@ -498,6 +503,12 @@ i386_pe_asm_named_section (const char *name, unsigned int flags,
         *f++ = 'w';
       if (flags & SECTION_PE_SHARED)
         *f++ = 's';
+#if !defined (HAVE_GAS_SECTION_EXCLUDE) || HAVE_GAS_SECTION_EXCLUDE == 0
+      /* If attribute "e" isn't supported we mark this section as
+         never-load.  */
+      if ((flags & SECTION_EXCLUDE) != 0)
+       *f++ = 'n';
+#endif
     }
 
   /* LTO sections need 1-byte alignment to avoid confusing the
index c1838813ed97f6ee19dd566328395c371483a24f..e067f388733494bde204c0e9851d7e60a1917e70 100755 (executable)
@@ -24232,6 +24232,44 @@ $as_echo "$as_me: WARNING: LTO for $target requires binutils >= 2.20.1, but vers
              ;;
          esac
        fi
+       # Test if the assembler supports the section flag 'e' for specifying
+       # an excluded section.
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .section with e" >&5
+$as_echo_n "checking assembler for .section with e... " >&6; }
+if test "${gcc_cv_as_section_has_e+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  gcc_cv_as_section_has_e=no
+    if test $in_tree_gas = yes; then
+    if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 22 \) \* 1000 + 51`
+  then gcc_cv_as_section_has_e=yes
+fi
+  elif test x$gcc_cv_as != x; then
+    $as_echo '.section foo1,"e"
+.byte 0,0,0,0' > conftest.s
+    if { ac_try='$gcc_cv_as $gcc_cv_as_flags  -o conftest.o conftest.s >&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }
+    then
+       gcc_cv_as_section_has_e=yes
+    else
+      echo "configure: failed program was" >&5
+      cat conftest.s >&5
+    fi
+    rm -f conftest.o conftest.s
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_section_has_e" >&5
+$as_echo "$gcc_cv_as_section_has_e" >&6; }
+
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_GAS_SECTION_EXCLUDE `if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`
+_ACEOF
+
        ;;
     esac
 
index 8069e6ac5595d27f6da3a03fa3b68c74c6ac976c..3df77c3220de14bc610fabdce6a32fa3763c7585 100644 (file)
@@ -3553,6 +3553,15 @@ foo:     nop
              ;;
          esac
        fi
+       # Test if the assembler supports the section flag 'e' for specifying
+       # an excluded section.
+       gcc_GAS_CHECK_FEATURE([.section with e], gcc_cv_as_section_has_e,
+         [2,22,51],,
+[.section foo1,"e"
+.byte 0,0,0,0])
+       AC_DEFINE_UNQUOTED(HAVE_GAS_SECTION_EXCLUDE,
+         [`if test $gcc_cv_as_section_has_e = yes; then echo 1; else echo 0; fi`],
+          [Define if your assembler supports specifying the section flag e.])
        ;;
     esac