alpha.h (TARGET_SWITCHES): Turn on MASK_EXPLICIT_RELOCS if the assembler supports it.
authorRichard Henderson <rth@redhat.com>
Sun, 16 Dec 2001 01:05:01 +0000 (17:05 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 16 Dec 2001 01:05:01 +0000 (17:05 -0800)
        * config/alpha/alpha.h (TARGET_SWITCHES): Turn on
        MASK_EXPLICIT_RELOCS if the assembler supports it.
        * configure.in (HAVE_AS_EXPLICIT_RELOCS): New.
        * configure, config.in: Rebuild.

From-SVN: r48054

gcc/ChangeLog
gcc/config.in
gcc/config/alpha/alpha.h
gcc/configure
gcc/configure.in

index 1717d7f4e358c271bbbc1e60ae2dd20999a62d16..d74ac59107efa2b762c0b6dba779386d36c6c92e 100644 (file)
@@ -1,3 +1,10 @@
+2001-12-15  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.h (TARGET_SWITCHES): Turn on
+       MASK_EXPLICIT_RELOCS if the assembler supports it.
+       * configure.in (HAVE_AS_EXPLICIT_RELOCS): New.
+       * configure, config.in: Rebuild.
+       
 Sat Dec 15 17:53:03 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * calls.c (emit_call_1): If ECF_SP_DEPRESSED, pretend have adjusted
index d1b8068045c44c85e07b7e200607d696288420cf..504907d96a0ad376d05a6dd2e8730b56b4065bf2 100644 (file)
 /* Define if your assembler supports marking sections with SHF_MERGE flag. */
 #undef HAVE_GAS_SHF_MERGE
 
+/* Define if your assembler supports explicit relocations. */
+#undef HAVE_AS_EXPLICIT_RELOCS
+
 /* Define if your assembler supports .register. */
 #undef HAVE_AS_REGISTER_PSEUDO_OP
 
index 3fc2796e524726d9cde73367674a8aaa3f8fd8e6..43dabceca6e4ad32192c31356b170adf23e39634 100644 (file)
@@ -251,7 +251,8 @@ extern enum alpha_fp_trap_mode alpha_fptm;
      N_("Emit 16-bit relocations to the small data areas")},           \
     {"large-data", -MASK_SMALL_DATA,                                   \
      N_("Emit 32-bit relocations to the small data areas")},           \
-    {"", TARGET_DEFAULT | TARGET_CPU_DEFAULT, ""} }
+    {"", TARGET_DEFAULT | TARGET_CPU_DEFAULT                           \
+        | TARGET_DEFAULT_EXPLICIT_RELOCS, ""} }
 
 #define TARGET_DEFAULT MASK_FP|MASK_FPREGS
 
@@ -259,6 +260,14 @@ extern enum alpha_fp_trap_mode alpha_fptm;
 #define TARGET_CPU_DEFAULT 0
 #endif
 
+#ifndef TARGET_DEFAULT_EXPLICIT_RELOCS
+#ifdef HAVE_AS_EXPLICIT_RELOCS
+#define TARGET_DEFAULT_EXPLICIT_RELOCS MASK_EXPLICIT_RELOCS
+#else
+#define TARGET_DEFAULT_EXPLICIT_RELOCS 0
+#endif
+#endif
+
 /* This macro is similar to `TARGET_SWITCHES' but defines names of
    command options that have values.  Its definition is an initializer
    with a subgrouping for each command option.
index 39107bca71a139ce0228a3b706f95c4d06a1e896..2b195a84cac747f32e8123eccb5ea95853aafa3c 100755 (executable)
@@ -2078,7 +2078,7 @@ EOF
 fi
 
 # Find some useful tools
-for ac_prog in mawk gawk nawk awk
+for ac_prog in gawk mawk nawk awk
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -6906,7 +6906,7 @@ fi
 
 # Figure out what linker we will be using.
 echo $ac_n "checking what linker to use""... $ac_c" 1>&6
-echo "configure:6904: checking what linker to use" >&5
+echo "configure:6910: checking what linker to use" >&5
 gcc_cv_ld=
 gcc_cv_gld_major_version=
 gcc_cv_gld_minor_version=
@@ -6992,7 +6992,7 @@ fi
 
 # Figure out what nm we will be using.
 echo $ac_n "checking what nm to use""... $ac_c" 1>&6
-echo "configure:6910: checking what nm to use" >&5
+echo "configure:6996: checking what nm to use" >&5
 if test -x nm$host_exeext; then
        gcc_cv_nm=./nm$host_exeext
 elif test x$host = x$target; then
@@ -7003,7 +7003,7 @@ echo "$ac_t""$gcc_cv_nm" 1>&6
 
 # Figure out what objdump we will be using.
 echo $ac_n "checking what objdump to use""... $ac_c" 1>&6
-echo "configure:6921: checking what objdump to use" >&5
+echo "configure:7007: checking what objdump to use" >&5
 if test -x objdump$host_exeext; then
        gcc_cv_objdump=./objdump$host_exeext
 elif test x$host = x$target; then
@@ -7014,7 +7014,7 @@ echo "$ac_t""$gcc_cv_objdump" 1>&6
 
 # Figure out what assembler alignment features are present.
 echo $ac_n "checking assembler alignment features""... $ac_c" 1>&6
-echo "configure:6932: checking assembler alignment features" >&5
+echo "configure:7018: checking assembler alignment features" >&5
 gcc_cv_as_alignment_features=none
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
        # Gas version 2.6 and later support for .balign and .p2align.
@@ -7062,7 +7062,7 @@ fi
 echo "$ac_t""$gcc_cv_as_alignment_features" 1>&6
 
 echo $ac_n "checking assembler subsection support""... $ac_c" 1>&6
-echo "configure:6980: checking assembler subsection support" >&5
+echo "configure:7066: checking assembler subsection support" >&5
 gcc_cv_as_subsections=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7102,7 +7102,7 @@ fi
 echo "$ac_t""$gcc_cv_as_subsections" 1>&6
 
 echo $ac_n "checking assembler weak support""... $ac_c" 1>&6
-echo "configure:7020: checking assembler weak support" >&5
+echo "configure:7106: checking assembler weak support" >&5
 gcc_cv_as_weak=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 2 -o "$gcc_cv_gas_major_version" -gt 2; then
@@ -7125,7 +7125,7 @@ fi
 echo "$ac_t""$gcc_cv_as_weak" 1>&6
 
 echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6
-echo "configure:7043: checking assembler hidden support" >&5
+echo "configure:7129: checking assembler hidden support" >&5
 gcc_cv_as_hidden=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 10 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7149,7 +7149,7 @@ fi
 echo "$ac_t""$gcc_cv_as_hidden" 1>&6
 
 echo $ac_n "checking assembler leb128 support""... $ac_c" 1>&6
-echo "configure:7067: checking assembler leb128 support" >&5
+echo "configure:7153: checking assembler leb128 support" >&5
 gcc_cv_as_leb128=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 11 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7194,7 +7194,7 @@ fi
 echo "$ac_t""$gcc_cv_as_leb128" 1>&6
 
 echo $ac_n "checking assembler eh_frame optimization""... $ac_c" 1>&6
-echo "configure:7112: checking assembler eh_frame optimization" >&5
+echo "configure:7198: checking assembler eh_frame optimization" >&5
 gcc_cv_as_eh_frame=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7275,7 +7275,7 @@ fi
 echo "$ac_t""$gcc_cv_as_eh_frame" 1>&6
 
 echo $ac_n "checking assembler section merging support""... $ac_c" 1>&6
-echo "configure:7193: checking assembler section merging support" >&5
+echo "configure:7279: checking assembler section merging support" >&5
 gcc_cv_as_shf_merge=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
   if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 12 -o "$gcc_cv_gas_major_version" -gt 2 && grep 'obj_format = elf' ../gas/Makefile > /dev/null; then
@@ -7297,10 +7297,61 @@ EOF
 fi
 echo "$ac_t""$gcc_cv_as_shf_merge" 1>&6
 
-case "$target" in 
+case "$target" in
+  # All TARGET_ABI_OSF targets.
+  alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
+    echo $ac_n "checking assembler supports explicit relocations""... $ac_c" 1>&6
+echo "configure:7305: checking assembler supports explicit relocations" >&5
+if eval "test \"`echo '$''{'gcc_cv_as_explicit_relocs'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
+       gcc_cv_as_explicit_relocs=unknown
+       if test x$gcc_cv_gas_major_version != x \
+               -a x$gcc_cv_gas_minor_version != x
+       then
+          if test "$gcc_cv_gas_major_version" -eq 2 \
+                  -a "$gcc_cv_gas_minor_version" -ge 12 \
+                  -o "$gcc_cv_gas_major_version" -gt 2; then
+             gcc_cv_as_explicit_relocs=yes
+          fi
+       elif test x$gcc_cv_as != x; then
+           cat > conftest.s << 'EOF'
+       .set nomacro
+       .text
+       extbl   $3, $2, $3      !lituse_bytoff!1
+       ldq     $2, a($29)      !literal!1
+       ldq     $4, b($29)      !literal!2
+       ldq_u   $3, 0($2)       !lituse_base!1
+       ldq     $27, f($29)     !literal!5
+       jsr     $26, ($27), f   !lituse_jsr!5
+       ldah    $29, 0($26)     !gpdisp!3
+       lda     $0, c($29)      !gprel
+       ldah    $1, d($29)      !gprelhigh
+       lda     $1, d($1)       !gprellow
+       lda     $29, 0($29)     !gpdisp!3
+EOF
+           if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
+               gcc_cv_as_explicit_relocs=yes
+           else
+               gcc_cv_as_explicit_relocs=no
+           fi
+           rm -f conftest.s conftest.o
+       fi
+    
+fi
+
+echo "$ac_t""$gcc_cv_as_explicit_relocs" 1>&6
+    if test "x$gcc_cv_as_explicit_relocs" = xyes; then
+       cat >> confdefs.h <<\EOF
+#define HAVE_AS_EXPLICIT_RELOCS 1
+EOF
+
+    fi
+    ;;
   sparc*-*-*)
     echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6
-echo "configure:7218: checking assembler .register pseudo-op support" >&5
+echo "configure:7355: checking assembler .register pseudo-op support" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_register_pseudo_op'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7328,7 +7379,7 @@ EOF
     fi
 
     echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6
-echo "configure:7246: checking assembler supports -relax" >&5
+echo "configure:7383: checking assembler supports -relax" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_relax_opt'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7358,7 +7409,7 @@ EOF
     case "$tm_file" in
     *64*)
        echo $ac_n "checking for 64 bit support in assembler ($gcc_cv_as)""... $ac_c" 1>&6
-echo "configure:7276: checking for 64 bit support in assembler ($gcc_cv_as)" >&5
+echo "configure:7413: checking for 64 bit support in assembler ($gcc_cv_as)" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_flags64'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7403,7 +7454,7 @@ EOF
 
     if test "x$gcc_cv_as_flags64" != xno; then
        echo $ac_n "checking for assembler offsetable %lo() support""... $ac_c" 1>&6
-echo "configure:7321: checking for assembler offsetable %lo() support" >&5
+echo "configure:7458: checking for assembler offsetable %lo() support" >&5
 if eval "test \"`echo '$''{'gcc_cv_as_offsetable_lo10'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -7443,7 +7494,7 @@ EOF
 
   i[34567]86-*-* | x86_64-*-*)
     echo $ac_n "checking assembler instructions""... $ac_c" 1>&6
-echo "configure:7361: checking assembler instructions" >&5
+echo "configure:7498: checking assembler instructions" >&5
     gcc_cv_as_instructions=
     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x; then
       if test "$gcc_cv_gas_major_version" -eq 2 -a "$gcc_cv_gas_minor_version" -ge 9 -o "$gcc_cv_gas_major_version" -gt 2; then
@@ -7470,7 +7521,7 @@ EOF
     echo "$ac_t""$gcc_cv_as_instructions" 1>&6
 
     echo $ac_n "checking assembler GOTOFF in data directives""... $ac_c" 1>&6
-echo "configure:7388: checking assembler GOTOFF in data directives" >&5
+echo "configure:7525: checking assembler GOTOFF in data directives" >&5
     gcc_cv_as_gotoff_in_data=no
     if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x
     then
@@ -7500,7 +7551,7 @@ EOF
 esac
 
 echo $ac_n "checking assembler dwarf2 debug_line support""... $ac_c" 1>&6
-echo "configure:7418: checking assembler dwarf2 debug_line support" >&5
+echo "configure:7555: checking assembler dwarf2 debug_line support" >&5
 gcc_cv_as_dwarf2_debug_line=no
 # ??? Not all targets support dwarf2 debug_line, even within a version
 # of gas.  Moreover, we need to emit a valid instruction to trigger any
@@ -7556,7 +7607,7 @@ fi
 echo "$ac_t""$gcc_cv_as_dwarf2_debug_line" 1>&6
 
 echo $ac_n "checking assembler --gdwarf2 support""... $ac_c" 1>&6
-echo "configure:7474: checking assembler --gdwarf2 support" >&5
+echo "configure:7611: checking assembler --gdwarf2 support" >&5
 gcc_cv_as_gdwarf2_flag=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
 then
@@ -7585,7 +7636,7 @@ fi
 echo "$ac_t""$gcc_cv_as_gdwarf2_flag" 1>&6
 
 echo $ac_n "checking assembler --gstabs support""... $ac_c" 1>&6
-echo "configure:7503: checking assembler --gstabs support" >&5
+echo "configure:7640: checking assembler --gstabs support" >&5
 gcc_cv_as_gstabs_flag=no
 if test x$gcc_cv_gas_major_version != x -a x$gcc_cv_gas_minor_version != x;
 then
@@ -7613,7 +7664,7 @@ fi
 echo "$ac_t""$gcc_cv_as_gstabs_flag" 1>&6
 
 echo $ac_n "checking linker PT_GNU_EH_FRAME support""... $ac_c" 1>&6
-echo "configure:7611: checking linker PT_GNU_EH_FRAME support" >&5
+echo "configure:7668: checking linker PT_GNU_EH_FRAME support" >&5
 gcc_cv_ld_eh_frame_hdr=no
 if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
@@ -7776,7 +7827,7 @@ fi
 
 
 echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
-echo "configure:7673: checking whether to enable maintainer-specific portions of Makefiles" >&5
+echo "configure:7831: checking whether to enable maintainer-specific portions of Makefiles" >&5
     # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then
   enableval="$enable_maintainer_mode"
index 34a5b2bc7b056c55a3f8b806066c702d696d2f2c..763fc16dc94806d959418e1e7672a2c27b3cf858 100644 (file)
@@ -1623,6 +1623,48 @@ fi
 AC_MSG_RESULT($gcc_cv_as_shf_merge)
 
 case "$target" in
+  # All TARGET_ABI_OSF targets.
+  alpha*-*-osf* | alpha*-*-linux* | alpha*-*-*bsd*)
+    AC_CACHE_CHECK([assembler supports explicit relocations],
+       gcc_cv_as_explicit_relocs, [
+       gcc_cv_as_explicit_relocs=unknown
+       if test x$gcc_cv_gas_major_version != x \
+               -a x$gcc_cv_gas_minor_version != x
+       then
+          if test "$gcc_cv_gas_major_version" -eq 2 \
+                  -a "$gcc_cv_gas_minor_version" -ge 12 \
+                  -o "$gcc_cv_gas_major_version" -gt 2; then
+             gcc_cv_as_explicit_relocs=yes
+          fi
+       elif test x$gcc_cv_as != x; then
+           cat > conftest.s << 'EOF'
+       .set nomacro
+       .text
+       extbl   $3, $2, $3      !lituse_bytoff!1
+       ldq     $2, a($29)      !literal!1
+       ldq     $4, b($29)      !literal!2
+       ldq_u   $3, 0($2)       !lituse_base!1
+       ldq     $27, f($29)     !literal!5
+       jsr     $26, ($27), f   !lituse_jsr!5
+       ldah    $29, 0($26)     !gpdisp!3
+       lda     $0, c($29)      !gprel
+       ldah    $1, d($29)      !gprelhigh
+       lda     $1, d($1)       !gprellow
+       lda     $29, 0($29)     !gpdisp!3
+EOF
+           if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
+               gcc_cv_as_explicit_relocs=yes
+           else
+               gcc_cv_as_explicit_relocs=no
+           fi
+           rm -f conftest.s conftest.o
+       fi
+    ])
+    if test "x$gcc_cv_as_explicit_relocs" = xyes; then
+       AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
+               [Define if your assembler supports explicit relocations.])
+    fi
+    ;;
   sparc*-*-*)
     AC_CACHE_CHECK([assembler .register pseudo-op support],
        gcc_cv_as_register_pseudo_op, [