From 93ca1662a221cdb8a2545b496433e665f85ef720 Mon Sep 17 00:00:00 2001 From: Niibe Yutaka Date: Thu, 7 Sep 2000 04:38:34 +0000 Subject: [PATCH] configure.in (sh-*-linux*): Added. * configure.in (sh-*-linux*): Added. * configure: Rebuilt. * config/sh/t-linux: New file. * config/sh/sh.h (USERMODE_BIT): Define. (TARGET_USERMODE): Likewise. (TARGET_SWITCHES): New switches for the bits above. (INITIALIZE_TRAMPOLINE): Call __ic_invalidate in USERMODE. * config/sh/linux.h: New file. * config/sh/lib1funcs.asm (GLOBAL): Don't prefix symbols with underscore on linux. (L_sdivsi3, L_udivsi3): Define for linux. (L_ic_invalidate): Define. * invoke.texi (SH Options): Document -musermode. From-SVN: r36227 --- gcc/ChangeLog | 16 +++ gcc/config/sh/lib1funcs.asm | 30 +++++- gcc/config/sh/linux.h | 90 +++++++++++++++++ gcc/config/sh/sh.h | 12 +++ gcc/config/sh/t-linux | 11 +++ gcc/configure | 192 +++++++++++++++++++----------------- gcc/configure.in | 10 ++ gcc/invoke.texi | 7 ++ 8 files changed, 275 insertions(+), 93 deletions(-) create mode 100644 gcc/config/sh/linux.h create mode 100644 gcc/config/sh/t-linux diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e488f0f878e..fcf31dba503 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2000-09-07 Niibe Yutaka , Kaz Kojima , Alexandre Oliva + + * configure.in (sh-*-linux*): Added. + * configure: Rebuilt. + * config/sh/t-linux: New file. + * config/sh/sh.h (USERMODE_BIT): Define. + (TARGET_USERMODE): Likewise. + (TARGET_SWITCHES): New switches for the bits above. + (INITIALIZE_TRAMPOLINE): Call __ic_invalidate in USERMODE. + * config/sh/linux.h: New file. + * config/sh/lib1funcs.asm (GLOBAL): Don't prefix symbols with + underscore on linux. + (L_sdivsi3, L_udivsi3): Define for linux. + (L_ic_invalidate): Define. + * invoke.texi (SH Options): Document -musermode. + 2000-09-07 Alexandre Oliva * config/sh/sh.h (OVERRIDE_OPTIONS): Don't disable function diff --git a/gcc/config/sh/lib1funcs.asm b/gcc/config/sh/lib1funcs.asm index 7d7d44c5200..5fc90e24921 100644 --- a/gcc/config/sh/lib1funcs.asm +++ b/gcc/config/sh/lib1funcs.asm @@ -42,6 +42,10 @@ Boston, MA 02111-1307, USA. */ #define LOCAL(X) L_##X #endif +#ifdef __linux__ +#define GLOBAL(X) __##X +#endif + #ifndef GLOBAL #define GLOBAL(X) ___##X #endif @@ -903,7 +907,7 @@ GLOBAL(sdivsi3_i4): #ifdef L_sdivsi3 /* __SH4_SINGLE_ONLY__ keeps this part for link compatibility with sh3e code. */ -#if ! defined(__SH4__) && ! defined (__SH4_SINGLE__) +#if (! defined(__SH4__) && ! defined (__SH4_SINGLE__)) || defined (__linux__) !! !! Steve Chamberlain !! sac@cygnus.com @@ -1105,7 +1109,7 @@ L1: #ifdef L_udivsi3 /* __SH4_SINGLE_ONLY__ keeps this part for link compatibility with sh3e code. */ -#if ! defined(__SH4__) && ! defined (__SH4_SINGLE__) +#if (! defined(__SH4__) && ! defined (__SH4_SINGLE__)) || defined (__linux__) !! !! Steve Chamberlain !! sac@cygnus.com @@ -1207,3 +1211,25 @@ LOCAL(set_fpscr_L1): #endif /* ELF */ #endif /* SH3E / SH4 */ #endif /* L_set_fpscr */ +#ifdef L_ic_invalidate +#if defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) + .global GLOBAL(ic_invalidate) +GLOBAL(ic_invalidate): + ocbwb @r4 + mova 0f,r0 + mov.w 1f,r1 + sub r0,r4 + and r1,r4 + add #4,r4 + braf r4 + nop +1: + .short 0x1fe0 + nop +0: + .rept 2048 + rts + nop + .endr +#endif /* SH4 */ +#endif /* L_ic_invalidate */ diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h new file mode 100644 index 00000000000..07de9152368 --- /dev/null +++ b/gcc/config/sh/linux.h @@ -0,0 +1,90 @@ +/* Definitions for SH running Linux-based GNU systems using ELF + Copyright (C) 1999, 2000 Free Software Foundation, Inc. + Contributed by Kazumoto Kojima + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Run-time Target Specification. */ +#undef TARGET_VERSION +#define TARGET_VERSION fputs (" (SH GNU/Linux with ELF)", stderr); + +/* Return to the original ELF way. */ +#undef USER_LABEL_PREFIX +#define USER_LABEL_PREFIX "" + +#undef SIZE_TYPE +#define SIZE_TYPE "unsigned int" + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "int" + +#undef WCHAR_TYPE +#define WCHAR_TYPE "long int" + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE BITS_PER_WORD + +#undef CPP_SPEC +#define CPP_SPEC \ + "%{mb:-D__BIG_ENDIAN__} \ + %{!mb:-D__LITTLE_ENDIAN__} \ + %{m3e:-D__SH3E__} \ + %{m4:-D__SH4__} \ + %{!m3e:%{!m4:-D__SH3__ -D__sh3__}} \ + %{fPIC:-D__PIC__ -D__pic__} \ + %{fpic:-D__PIC__ -D__pic__} \ + %{posix:-D_POSIX_SOURCE} \ + %{pthread:-D_REENTRANT -D_PTHREADS}" + +#undef CPP_PREDEFINES +#define CPP_PREDEFINES "-D__ELF__ -Dunix -D__sh__ -Dlinux -Asystem(posix)" + +#undef ASM_SPEC +#define ASM_SPEC "%{!mb:-little} %{mrelax:-relax}" + +#undef CC1_SPEC +#define CC1_SPEC \ + "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}" + +#undef CC1PLUS_SPEC +#define CC1PLUS_SPEC \ + "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}" + +#undef LINK_SPEC +#define LINK_SPEC \ + "%{!mb:-m shlelf_linux} %{mrelax:-relax} \ + %{shared:-shared} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld.so.1} \ + %{!rpath:-rpath /lib}} \ + %{static:-static}" + +#undef LIB_SPEC +#define LIB_SPEC \ + "%{shared: -lc} \ + %{!shared: %{pthread:-lthread} \ + %{profile:-lc_p} %{!profile: -lc}}" + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ + %{!p:%{profile:gcrt1.o%s} \ + %{!profile:crt1.o%s}}}} \ + crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 6e73788e22e..78efca5d1a3 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -109,6 +109,7 @@ extern int target_flags; #define SPACE_BIT (1<<13) #define BIGTABLE_BIT (1<<14) #define RELAX_BIT (1<<15) +#define USERMODE_BIT (1<<16) #define HITACHI_BIT (1<<22) #define NOMACSAVE_BIT (1<<23) #define PREFERGOT_BIT (1<<24) @@ -184,6 +185,9 @@ extern int target_flags; /* Nonzero if generating code for a little endian SH. */ #define TARGET_LITTLE_ENDIAN (target_flags & LITTLE_ENDIAN_BIT) +/* Nonzero if we should do everything in userland. */ +#define TARGET_USERMODE (target_flags & USERMODE_BIT) + /* Nonzero if we should prefer @GOT calls when generating PIC. */ #define TARGET_PREFERGOT (target_flags & PREFERGOT_BIT) @@ -210,6 +214,7 @@ extern int target_flags; {"prefergot", PREFERGOT_BIT}, \ {"relax", RELAX_BIT}, \ {"space", SPACE_BIT}, \ + {"usermode", USERMODE_BIT}, \ SUBTARGET_SWITCHES \ {"", TARGET_DEFAULT} \ } @@ -1201,6 +1206,13 @@ extern int current_function_anonymous_args; emit_move_insn (gen_rtx_MEM (SImode, plus_constant ((TRAMP), 12)), \ (FNADDR)); \ if (TARGET_HARVARD) \ + { \ + if (TARGET_USERMODE) \ + emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__ic_invalidate"),\ + 0, VOIDmode, 1, (TRAMP), SImode); \ + else \ + emit_insn (gen_ic_invalidate_line (TRAMP)); \ + } \ emit_insn (gen_ic_invalidate_line (TRAMP)); \ } diff --git a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux new file mode 100644 index 00000000000..c7fe9e9d8e3 --- /dev/null +++ b/gcc/config/sh/t-linux @@ -0,0 +1,11 @@ +TARGET_LIBGCC2_CFLAGS = -fpic +LIBGCC1 = libgcc1-asm.a +LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movstr \ + _movstr_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ + _ic_invalidate + +MULTILIB_OPTIONS= mb m3e/m4 +MULTILIB_DIRNAMES= +MULTILIB_MATCHES = + +EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o diff --git a/gcc/configure b/gcc/configure index 8b14758aec3..4d922d5c448 100755 --- a/gcc/configure +++ b/gcc/configure @@ -1529,7 +1529,7 @@ esac # 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 @@ -6324,6 +6324,16 @@ for machine in $build $host $target; do tm_file="sh/sh.h sh/rtems.h" float_format=sh ;; + sh-*-linux*) + tm_file="sh/sh.h sh/elf.h sh/linux.h" + tmake_file="sh/t-sh sh/t-elf sh/t-linux" + xmake_file=x-linux + gas=yes gnu_ld=yes + if test x$enable_threads = xyes; then + thread_file='posix' + fi + float_format=sh + ;; sh-*-*) float_format=sh ;; @@ -7121,7 +7131,7 @@ fi echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 -echo "configure:7125: checking for strerror in -lcposix" >&5 +echo "configure:7135: checking for strerror in -lcposix" >&5 ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7129,7 +7139,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lcposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7154: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7163,12 +7173,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:7167: checking for working const" >&5 +echo "configure:7177: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7231: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -7238,12 +7248,12 @@ EOF fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:7242: checking for off_t" >&5 +echo "configure:7252: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7271,12 +7281,12 @@ EOF fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:7275: checking for size_t" >&5 +echo "configure:7285: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -7306,19 +7316,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:7310: checking for working alloca.h" >&5 +echo "configure:7320: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:7322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -7339,12 +7349,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:7343: checking for alloca" >&5 +echo "configure:7353: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -7404,12 +7414,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:7408: checking whether alloca needs Cray hooks" >&5 +echo "configure:7418: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7438: checking for $ac_func" >&5 +echo "configure:7448: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7489,7 +7499,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:7493: checking stack direction for C alloca" >&5 +echo "configure:7503: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7497,7 +7507,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:7530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -7543,17 +7553,17 @@ unistd.h sys/param.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7547: checking for $ac_hdr" >&5 +echo "configure:7557: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7583,12 +7593,12 @@ done strdup __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7587: checking for $ac_func" >&5 +echo "configure:7597: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7625: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7640,12 +7650,12 @@ done for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7644: checking for $ac_func" >&5 +echo "configure:7654: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7702,19 +7712,19 @@ EOF if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:7706: checking for LC_MESSAGES" >&5 +echo "configure:7716: checking for LC_MESSAGES" >&5 if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return LC_MESSAGES ; return 0; } EOF -if { (eval echo configure:7718: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* am_cv_val_LC_MESSAGES=yes else @@ -7735,7 +7745,7 @@ EOF fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:7739: checking whether NLS is requested" >&5 +echo "configure:7749: checking whether NLS is requested" >&5 # Check whether --enable-nls or --disable-nls was given. if test "${enable_nls+set}" = set; then enableval="$enable_nls" @@ -7755,7 +7765,7 @@ fi EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:7759: checking whether included gettext is requested" >&5 +echo "configure:7769: checking whether included gettext is requested" >&5 # Check whether --with-included-gettext or --without-included-gettext was given. if test "${with_included_gettext+set}" = set; then withval="$with_included_gettext" @@ -7774,17 +7784,17 @@ fi ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:7778: checking for libintl.h" >&5 +echo "configure:7788: checking for libintl.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7798: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7801,19 +7811,19 @@ fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6 -echo "configure:7805: checking for gettext in libc" >&5 +echo "configure:7815: checking for gettext in libc" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { return (int) gettext ("") ; return 0; } EOF -if { (eval echo configure:7817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7827: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* gt_cv_func_gettext_libc=yes else @@ -7829,7 +7839,7 @@ echo "$ac_t""$gt_cv_func_gettext_libc" 1>&6 if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:7833: checking for bindtextdomain in -lintl" >&5 +echo "configure:7843: checking for bindtextdomain in -lintl" >&5 ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7837,7 +7847,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7864,12 +7874,12 @@ fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6 -echo "configure:7868: checking for gettext in libintl" >&5 +echo "configure:7878: checking for gettext in libintl" >&5 if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:7873: checking for gettext in -lintl" >&5 +echo "configure:7883: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7877,7 +7887,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7927,7 +7937,7 @@ EOF # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:7931: checking for $ac_word" >&5 +echo "configure:7941: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -7961,12 +7971,12 @@ fi for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7965: checking for $ac_func" >&5 +echo "configure:7975: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8003: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -8016,7 +8026,7 @@ done # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8020: checking for $ac_word" >&5 +echo "configure:8030: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8052,7 +8062,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8056: checking for $ac_word" >&5 +echo "configure:8066: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8084,7 +8094,7 @@ else fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -8115,7 +8125,7 @@ fi if test "$CATOBJEXT" = "NONE"; then echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 -echo "configure:8119: checking whether catgets can be used" >&5 +echo "configure:8129: checking whether catgets can be used" >&5 # Check whether --with-catgets or --without-catgets was given. if test "${with_catgets+set}" = set; then withval="$with_catgets" @@ -8128,7 +8138,7 @@ fi if test "$nls_cv_use_catgets" = "yes"; then echo $ac_n "checking for main in -li""... $ac_c" 1>&6 -echo "configure:8132: checking for main in -li" >&5 +echo "configure:8142: checking for main in -li" >&5 ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -8136,14 +8146,14 @@ else ac_save_LIBS="$LIBS" LIBS="-li $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8171,12 +8181,12 @@ else fi echo $ac_n "checking for catgets""... $ac_c" 1>&6 -echo "configure:8175: checking for catgets" >&5 +echo "configure:8185: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_catgets=yes" else @@ -8221,7 +8231,7 @@ EOF # Extract the first word of "gencat", so it can be a program name with args. set dummy gencat; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8225: checking for $ac_word" >&5 +echo "configure:8235: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8257,7 +8267,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8261: checking for $ac_word" >&5 +echo "configure:8271: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8294,7 +8304,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8298: checking for $ac_word" >&5 +echo "configure:8308: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8333,7 +8343,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8337: checking for $ac_word" >&5 +echo "configure:8347: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8391,7 +8401,7 @@ fi # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8395: checking for $ac_word" >&5 +echo "configure:8405: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8425,7 +8435,7 @@ fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8429: checking for $ac_word" >&5 +echo "configure:8439: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8465,7 +8475,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:8469: checking for $ac_word" >&5 +echo "configure:8479: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -8560,7 +8570,7 @@ fi LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:8564: checking for catalogs to be installed" >&5 +echo "configure:8574: checking for catalogs to be installed" >&5 if test "x$LINGUAS" = "x"; then LINGUAS=$ALL_LINGUAS else @@ -8592,17 +8602,17 @@ echo "configure:8564: checking for catalogs to be installed" >&5 if test "$CATOBJEXT" = ".cat"; then ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6 -echo "configure:8596: checking for linux/version.h" >&5 +echo "configure:8606: checking for linux/version.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8606: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8677,7 +8687,7 @@ fi echo $ac_n "checking whether windows registry support is requested""... $ac_c" 1>&6 -echo "configure:8681: checking whether windows registry support is requested" >&5 +echo "configure:8691: checking whether windows registry support is requested" >&5 if test x$enable_win32_registry != xno; then cat >> confdefs.h <<\EOF #define ENABLE_WIN32_REGISTRY 1 @@ -8706,7 +8716,7 @@ esac if test x$enable_win32_registry != xno; then echo $ac_n "checking registry key on windows hosts""... $ac_c" 1>&6 -echo "configure:8710: checking registry key on windows hosts" >&5 +echo "configure:8720: checking registry key on windows hosts" >&5 cat >> confdefs.h <&6 -echo "configure:8904: checking assembler alignment features" >&5 +echo "configure:8914: checking assembler alignment features" >&5 gcc_cv_as= gcc_cv_as_alignment_features= gcc_cv_as_gas_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/gas @@ -9021,7 +9031,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:9025: checking assembler subsection support" >&5 +echo "configure:9035: checking assembler subsection support" >&5 gcc_cv_as_subsections= if test x$gcc_cv_as != x; then # Check if we have .subsection @@ -9061,7 +9071,7 @@ fi echo "$ac_t""$gcc_cv_as_subsections" 1>&6 echo $ac_n "checking assembler weak support""... $ac_c" 1>&6 -echo "configure:9065: checking assembler weak support" >&5 +echo "configure:9075: checking assembler weak support" >&5 gcc_cv_as_weak= if test x$gcc_cv_as != x; then # Check if we have .weak @@ -9078,7 +9088,7 @@ fi echo "$ac_t""$gcc_cv_as_weak" 1>&6 echo $ac_n "checking assembler hidden support""... $ac_c" 1>&6 -echo "configure:9082: checking assembler hidden support" >&5 +echo "configure:9092: checking assembler hidden support" >&5 gcc_cv_as_hidden= if test x$gcc_cv_as != x; then # Check if we have .hidden @@ -9098,7 +9108,7 @@ echo "$ac_t""$gcc_cv_as_hidden" 1>&6 case "$target" in sparc*-*-*) echo $ac_n "checking assembler .register pseudo-op support""... $ac_c" 1>&6 -echo "configure:9102: checking assembler .register pseudo-op support" >&5 +echo "configure:9112: 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 @@ -9126,7 +9136,7 @@ EOF fi echo $ac_n "checking assembler supports -relax""... $ac_c" 1>&6 -echo "configure:9130: checking assembler supports -relax" >&5 +echo "configure:9140: 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 @@ -9156,7 +9166,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:9160: checking for 64 bit support in assembler ($gcc_cv_as)" >&5 +echo "configure:9170: 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 @@ -9201,7 +9211,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:9205: checking for assembler offsetable %lo() support" >&5 +echo "configure:9215: 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 @@ -9240,7 +9250,7 @@ EOF i[34567]86-*-*) echo $ac_n "checking assembler instructions""... $ac_c" 1>&6 -echo "configure:9244: checking assembler instructions" >&5 +echo "configure:9254: checking assembler instructions" >&5 gcc_cv_as_instructions= if test x$gcc_cv_as != x; then set "filds fists" "filds mem; fists mem" @@ -9384,7 +9394,7 @@ fi # Build a new-libstdc++ system (ie libstdc++-v3) echo $ac_n "checking for libstdc++ to install""... $ac_c" 1>&6 -echo "configure:9388: checking for libstdc++ to install" >&5 +echo "configure:9398: checking for libstdc++ to install" >&5 # Check whether --enable-libstdcxx-v3 or --disable-libstdcxx-v3 was given. if test "${enable_libstdcxx_v3+set}" = set; then enableval="$enable_libstdcxx_v3" @@ -9408,7 +9418,7 @@ EOF echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 -echo "configure:9412: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo "configure:9422: 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" diff --git a/gcc/configure.in b/gcc/configure.in index d0df4f915c9..165c295da8a 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -3358,6 +3358,16 @@ changequote([,])dnl tm_file="sh/sh.h sh/rtems.h" float_format=sh ;; + sh-*-linux*) + tm_file="sh/sh.h sh/elf.h sh/linux.h" + tmake_file="sh/t-sh sh/t-elf sh/t-linux" + xmake_file=x-linux + gas=yes gnu_ld=yes + if test x$enable_threads = xyes; then + thread_file='posix' + fi + float_format=sh + ;; sh-*-*) float_format=sh ;; diff --git a/gcc/invoke.texi b/gcc/invoke.texi index f7f1ed7eebf..885978fa6a0 100644 --- a/gcc/invoke.texi +++ b/gcc/invoke.texi @@ -419,6 +419,7 @@ in the following sections. -mbigtable -mfmovd -mhitachi -mnomacsave -misize -mpadstruct -mspace -mprefergot +-musermode @emph{System V Options} -Qy -Qn -YP,@var{paths} -Ym,@var{dir} @@ -6722,6 +6723,12 @@ Optimize for space instead of speed. Implied by @code{-Os}. @item -mprefergot When generating position-independent code, emit function calls using the Global Offset Table instead of the Procedure Linkage Table. + +@item -musermode +Generate a library function call to invalidate instruction cache +entries, after fixing up a trampoline. This library function call +doesn't assume it can write to the whole memory address space. This +is the default when the target is @code{sh-*-linux*}. @end table @node System V Options