+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * MAINTAINERS (mt port): Remove.
+ (sco5, unixware, sco udk): Remove.
+ (Kean Johnston): Add to Write After Approval.
+
2008-05-30 Julian Brown <julian@codesourcery.com>
* configure.ac (arm*-*-linux-gnueabi): Don't disable building
mmix port Hans-Peter Nilsson hp@bitrange.com
mn10300 port Jeff Law law@redhat.com
mn10300 port Alexandre Oliva aoliva@redhat.com
-mt port Aldy Hernandez aldyh@redhat.com
-mt port Nathan Sidwell nathan@codesourcery.com
pdp11 port Paul Koning ni1d@arrl.net
rs6000 port Geoff Keating geoffk@geoffk.org
rs6000 port David Edelsohn dje@watson.ibm.com
irix, osf Rainer Orth ro@TechFak.Uni-Bielefeld.DE
netbsd Jason Thorpe thorpej@netbsd.org
netbsd Krister Walfridsson cato@df.lth.se
-sco5, unixware, sco udk Kean Johnston jkj@sco.com
sh-linux-gnu Kaz Kojima kkojima@gcc.gnu.org
RTEMS Ports Joel Sherrill joel@oarcorp.com
RTEMS Ports Ralf Corsepius ralf.corsepius@rtems.org
Harsha Jagasia harsha.jagasia@amd.com
Fariborz Jahanian fjahanian@apple.com
Martin Jambor mjambor@suse.cz
+Kean Johnston jkj@sco.com
Phillip Jordan phillip.m.jordan@gmail.com
Tim Josling tej@melbpc.org.au
Klaus Kaempf kkaempf@progis.de
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * inclhack.def (AAB_svr4_replace_byteorder,
+ AAB_ultrix_ansi_compat, AAB_ultrix_limits, AAB_ultrix_memory,
+ libc1_G_va_list, libc1_ifdefd_memx, nested_motorola,
+ ptx_sys_mc_param_h, sco_regset, sco_static_func, sco_utime,
+ solaris_mutex_init_1, solaris_socket, solaris_unistd,
+ solaris_widec, svr4_krnl, ultrix_atexit_param, ultrix_atof_param,
+ ultrix_const3, ultrix_fix_fixproto, ultrix_ifdef, ultrix_locale,
+ ultrix_math_ifdef, ultrix_nested_ioctl, ultrix_nested_svc,
+ ultrix_stat, ultrix_static, ultrix_stdlib, ultrix_strings,
+ ultrix_strings2, ultrix_sys_time, ultrix_unistd,
+ unicosmk_restrict, uw7_byteorder_fix, windiss_math1,
+ windiss_math2, windiss_valist): Remove.
+ * fixincl.x: Regenerate.
+ * mkfixinc.sh: (arm-semi-aof, hppa1.1-*-osf*, hppa1.1-*-bsd*,
+ i370-*-openedition, i?86-*-moss*, i?86-*-uwin*,
+ powerpc-*-eabiaix*): Remove.
+ * tests/base/math.h: Update.
+ * tests/base/pthread.h: Update.
+ * tests/base/stdio.h: Update.
+ * tests/base/stdlib.h: Update.
+ * tests/base/string.h: Update.
+ * tests/base/strings.h: Update.
+ * tests/base/sys/file.h: Update.
+ * tests/base/sys/limits.h: Update.
+ * tests/base/sys/socket.h: Update.
+ * tests/base/sys/stat.h: Update.
+ * tests/base/sys/time.h: Update.
+ * tests/base/testing.h: Update.
+ * tests/base/unistd.h: Update.
+ * tests/base/_G_config.h: Remove.
+ * tests/base/arpa: Remove directory.
+ * tests/base/fs: Remove directory.
+ * tests/base/locale.h: Remove.
+ * tests/base/machine: Remove directory.
+ * tests/base/rpc/svc.h: Remove.
+ * tests/base/sys/ioctl.h: Remove.
+ * tests/base/sys/regset.h: Remove.
+ * tests/base/sys/times.h: Remove.
+ * tests/base/sys/utsname.h: Remove.
+ * tests/base/widec.h: Remove.
+
2008-05-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* inclhack.def (solaris_math_4): Use GCC's __builtin_fpclassify.
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
- * It has been AutoGen-ed Friday May 23, 2008 at 06:50:18 PM CEST
+ * It has been AutoGen-ed Thursday May 29, 2008 at 11:31:36 PM UTC
* From the definitions inclhack.def
* and the template file fixincl
*/
-/* DO NOT SVN-MERGE THIS FILE, EITHER Fri May 23 18:50:18 CEST 2008
+/* DO NOT SVN-MERGE THIS FILE, EITHER Thu May 29 23:31:36 UTC 2008
*
* You must regenerate it. Use the ./genfixes script.
*
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
- * This file contains 213 fixup descriptions.
+ * This file contains 177 fixup descriptions.
*
* See README for more information.
*
* inclhack copyright (c) 1998, 1999, 2000, 2001
* The Free Software Foundation, Inc.
*
- * inclhack is free software.
+ * inclhack 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 3 of the License, or
+ * (at your option) any later version.
*
- * You may 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 of the License, or (at your option)
- * any later version.
- *
- * inclhack is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * inclhack 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 inclhack. If not, write to:
- * The Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor
- * Boston, MA 02110-1301, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* * * * * * * * * * * * * * * * * * * * * * * * * *
};\n\
#endif\n\n\n\
/*\n\
- * Completely replace <sys/byteorder.h> with a file that implements gcc's\n\
- * optimized byteswapping. (The original probably implemented some\n\
- * incompatible optimized byteswapping.)\n\
+ * The Ultrix 4.3 file string.h is a symbolic link to strings.h.\n\
+ * Replace string.h link with a file that includes strings.h to prevent\n\
+ * problems from multiple inclusion.\n\
*/\n\
fix = {\n\
- hackname = AAB_svr4_replace_byteorder;\n\
- mach = \"*-*-sysv4*\";\n\
- mach = \"i[34567]86-*-sysv5*\";\n\
- mach = \"i[34567]86-*-sco3.2v5*\";\n\
- mach = \"i[34567]86-*-udk*\";\n\
- mach = \"i[34567]86-*-solaris2.[0-4]\";\n\
- mach = \"powerpcle-*-solaris2.[0-4]\";\n\
- mach = \"sparc-*-solaris2.[0-4]\";\n\
- mach = \"i[34567]86-sequent-ptx*\";\n\
- files = sys/byteorder.h;\n\
+ hackname = AAB_ultrix_string;\n\
+ files = string.h;\n\
+ mach = \"*-*-ultrix4.3\";\n\
replace = <<- _EndOfHeader_\n\
-#ifndef _SYS_BYTEORDER_H\n\
-#define _SYS_BYTEORDER_H\n\n\
-/* Functions to convert `short' and `long' quantities from host byte order\n\
- to (internet) network byte order (i.e. big-endian).\n\n\
- Written by Ron Guilmette (rfg@ncd.com).\n\n\
- This isn't actually used by GCC. It is installed by fixinc.svr4.\n\n\
- For big-endian machines these functions are essentially no-ops.\n\n\
- For little-endian machines, we define the functions using specialized\n\
- asm sequences in cases where doing so yields better code (e.g. i386). */\n\n\
-#if !defined (__GNUC__) && !defined (__GNUG__)\n\
- #error You lose! This file is only useful with GNU compilers.\n\
-#endif\n\n\
-#ifndef __BYTE_ORDER__\n\
- /* Byte order defines. These are as defined on UnixWare 1.1, but with\n\
- double underscores added at the front and back. */\n\
- #define __LITTLE_ENDIAN__ 1234\n\
- #define __BIG_ENDIAN__ 4321\n\
- #define __PDP_ENDIAN__ 3412\n\
-#endif\n\n\
-#ifdef __STDC__\n\
- static __inline__ unsigned long htonl (unsigned long);\n\
- static __inline__ unsigned short htons (unsigned int);\n\
- static __inline__ unsigned long ntohl (unsigned long);\n\
- static __inline__ unsigned short ntohs (unsigned int);\n\
-#endif /* defined (__STDC__) */\n\n\
-#if defined (__i386__)\n\n\
- #ifndef __BYTE_ORDER__\n\
- #define __BYTE_ORDER__ __LITTLE_ENDIAN__\n\
- #endif\n\n\
- /* Convert a host long to a network long. */\n\n\
- /* We must use a new-style function definition, so that this will also\n\
- be valid for C++. */\n\
- static __inline__ unsigned long\n\
- htonl (unsigned long __arg)\n\
- {\n\
- register unsigned long __result;\n\n\
- __asm__ (\"xchg%B0 %b0,%h0\n\
- ror%L0 $16,%0\n\
- xchg%B0 %b0,%h0\" : \"=q\" (__result) : \"0\" (__arg));\n\
- return __result;\n\
- }\n\n\
- /* Convert a host short to a network short. */\n\n\
- static __inline__ unsigned short\n\
- htons (unsigned int __arg)\n\
- {\n\
- register unsigned short __result;\n\n\
- __asm__ (\"xchg%B0 %b0,%h0\" : \"=q\" (__result) : \"0\" (__arg));\n\
- return __result;\n\
- }\n\n\
-#elif (defined (__ns32k__) || defined (__vax__) || defined (__arm__))\n\n\
- #ifndef __BYTE_ORDER__\n\
- #define __BYTE_ORDER__ __LITTLE_ENDIAN__\n\
- #endif\n\n\
- /* For other little-endian machines, using C code is just as efficient as\n\
- using assembly code. */\n\n\
- /* Convert a host long to a network long. */\n\n\
- static __inline__ unsigned long\n\
- htonl (unsigned long __arg)\n\
- {\n\
- register unsigned long __result;\n\n\
- __result = (__arg >> 24) & 0x000000ff;\n\
- __result |= (__arg >> 8) & 0x0000ff00;\n\
- __result |= (__arg << 8) & 0x00ff0000;\n\
- __result |= (__arg << 24) & 0xff000000;\n\
- return __result;\n\
- }\n\n\
- /* Convert a host short to a network short. */\n\n\
- static __inline__ unsigned short\n\
- htons (unsigned int __arg)\n\
- {\n\
- register unsigned short __result;\n\n\
- __result = (__arg << 8) & 0xff00;\n\
- __result |= (__arg >> 8) & 0x00ff;\n\
- return __result;\n\
- }\n\n\
-#else /* must be a big-endian machine */\n\n\
- #ifndef __BYTE_ORDER__\n\
- #define __BYTE_ORDER__ __BIG_ENDIAN__\n\
- #endif\n\n\
- /* Convert a host long to a network long. */\n\n\
- static __inline__ unsigned long\n\
- htonl (unsigned long __arg)\n\
- {\n\
- return __arg;\n\
- }\n\n\
- /* Convert a host short to a network short. */\n\n\
- static __inline__ unsigned short\n\
- htons (unsigned int __arg)\n\
- {\n\
- return __arg;\n\
- }\n\n\
-#endif /* big-endian */\n\n\
-/* Convert a network long to a host long. */\n\n\
-static __inline__ unsigned long\n\
-ntohl (unsigned long __arg)\n\
-{\n\
- return htonl (__arg);\n\
-}\n\n\
-/* Convert a network short to a host short. */\n\n\
-static __inline__ unsigned short\n\
-ntohs (unsigned int __arg)\n\
-{\n\
- return htons (__arg);\n\
-}\n\
-#endif",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Aab_Ultrix_Ansi_Compat fix
- */
-tSCC zAab_Ultrix_Ansi_CompatName[] =
- "AAB_ultrix_ansi_compat";
-
-/*
- * File name selection pattern
- */
-tSCC zAab_Ultrix_Ansi_CompatList[] =
- "ansi_compat.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzAab_Ultrix_Ansi_CompatMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zAab_Ultrix_Ansi_CompatSelect0[] =
- "ULTRIX";
-
-#define AAB_ULTRIX_ANSI_COMPAT_TEST_CT 1
-static tTestDesc aAab_Ultrix_Ansi_CompatTests[] = {
- { TT_EGREP, zAab_Ultrix_Ansi_CompatSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Aab_Ultrix_Ansi_Compat
- */
-static const char* apzAab_Ultrix_Ansi_CompatPatch[] = {
-"/* This file intentionally left blank. */\n",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Aab_Ultrix_Limits fix
- */
-tSCC zAab_Ultrix_LimitsName[] =
- "AAB_ultrix_limits";
-
-/*
- * File name selection pattern
- */
-tSCC zAab_Ultrix_LimitsList[] =
- "limits.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzAab_Ultrix_LimitsMachs[] = {
- "*-*-ultrix4.3",
- (const char*)NULL };
-#define AAB_ULTRIX_LIMITS_TEST_CT 0
-#define aAab_Ultrix_LimitsTests (tTestDesc*)NULL
-
-/*
- * Fix Command Arguments for Aab_Ultrix_Limits
- */
-static const char* apzAab_Ultrix_LimitsPatch[] = {
-"#ifndef _LIMITS_INCLUDED\n\
- #define _LIMITS_INCLUDED\n\
- #include <sys/limits.h>\n\
-#endif /* _LIMITS_INCLUDED */",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Aab_Ultrix_Memory fix
- */
-tSCC zAab_Ultrix_MemoryName[] =
- "AAB_ultrix_memory";
-
-/*
- * File name selection pattern
- */
-tSCC zAab_Ultrix_MemoryList[] =
- "memory.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzAab_Ultrix_MemoryMachs[] = {
- "*-*-ultrix4.3",
- (const char*)NULL };
-#define AAB_ULTRIX_MEMORY_TEST_CT 0
-#define aAab_Ultrix_MemoryTests (tTestDesc*)NULL
-
-/*
- * Fix Command Arguments for Aab_Ultrix_Memory
- */
-static const char* apzAab_Ultrix_MemoryPatch[] = {
-"#ifndef _MEMORY_INCLUDED\n\
- #define _MEMORY_INCLUDED\n\
- #include <strings.h>\n\
-#endif /* _MEMORY_INCLUDED */",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Aab_Ultrix_String fix
- */
-tSCC zAab_Ultrix_StringName[] =
- "AAB_ultrix_string";
-
-/*
- * File name selection pattern
- */
-tSCC zAab_Ultrix_StringList[] =
- "string.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzAab_Ultrix_StringMachs[] = {
- "*-*-ultrix4.3",
- (const char*)NULL };
-#define AAB_ULTRIX_STRING_TEST_CT 0
-#define aAab_Ultrix_StringTests (tTestDesc*)NULL
-
-/*
- * Fix Command Arguments for Aab_Ultrix_String
- */
-static const char* apzAab_Ultrix_StringPatch[] = {
-"#ifndef _STRING_INCLUDED\n\
+#ifndef _STRING_INCLUDED\n\
#define _STRING_INCLUDED\n\
#include <strings.h>\n\
#endif /* _STRING_INCLUDED */",
"##",
(char*)NULL };
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Libc1_G_Va_List fix
- */
-tSCC zLibc1_G_Va_ListName[] =
- "libc1_G_va_list";
-
-/*
- * File name selection pattern
- */
-tSCC zLibc1_G_Va_ListList[] =
- "_G_config.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzLibc1_G_Va_ListMachs[] = {
- "*-*-linux*libc1",
- (const char*)NULL };
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zLibc1_G_Va_ListSelect0[] =
- "typedef void \\* _G_va_list;";
-
-#define LIBC1_G_VA_LIST_TEST_CT 1
-static tTestDesc aLibc1_G_Va_ListTests[] = {
- { TT_EGREP, zLibc1_G_Va_ListSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Libc1_G_Va_List
- */
-static const char* apzLibc1_G_Va_ListPatch[] = {
- "format",
- "typedef __builtin_va_list _G_va_list;",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Libc1_Ifdefd_Memx fix
- */
-tSCC zLibc1_Ifdefd_MemxName[] =
- "libc1_ifdefd_memx";
-
-/*
- * File name selection pattern
- */
-tSCC zLibc1_Ifdefd_MemxList[] =
- "testing.h\0string.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzLibc1_Ifdefd_MemxMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zLibc1_Ifdefd_MemxSelect0[] =
- "' is a built-in function for gcc 2\\.x\\. \\*/";
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zLibc1_Ifdefd_MemxBypass0[] =
- "__cplusplus";
-
-#define LIBC1_IFDEFD_MEMX_TEST_CT 2
-static tTestDesc aLibc1_Ifdefd_MemxTests[] = {
- { TT_NEGREP, zLibc1_Ifdefd_MemxBypass0, (regex_t*)NULL },
- { TT_EGREP, zLibc1_Ifdefd_MemxSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Libc1_Ifdefd_Memx
- */
-static const char* apzLibc1_Ifdefd_MemxPatch[] = {
- "format",
- "%1",
- "/\\* `mem...' is a built-in function for gcc 2\\.x\\. \\*/\n\
-#if defined\\(__STDC__\\) && __GNUC__ < 2\n\
-(/\\* .* \\*/\n\
-extern [a-z_]+ mem.*(\n\
-[^#].*)*;)\n\
-#endif",
- (char*)NULL };
-
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Linux_Ia64_Ucontext fix
"%1*/ /*",
(char*)NULL };
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Nested_Motorola fix
- */
-tSCC zNested_MotorolaName[] =
- "nested_motorola";
-
-/*
- * File name selection pattern
- */
-tSCC zNested_MotorolaList[] =
- "sys/limits.h\0limits.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzNested_MotorolaMachs[] = {
- "m68k-motorola-sysv*",
- (const char*)NULL };
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zNested_MotorolaSelect0[] =
- "max # bytes atomic in write|error value returned by Math lib";
-
-#define NESTED_MOTOROLA_TEST_CT 1
-static tTestDesc aNested_MotorolaTests[] = {
- { TT_EGREP, zNested_MotorolaSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Nested_Motorola
- */
-static const char* apzNested_MotorolaPatch[] = { "sed",
- "-e", "s@^\\(#undef[ \t][ \t]*PIPE_BUF[ \t]*/\\* max # bytes atomic in write to a\\)$@\\1 */@",
- "-e", "s@\\(/\\*#define\tHUGE_VAL\t3.[0-9e+]* \\)\\(/\\*error value returned by Math lib\\*/\\)$@\\1*/ \\2@",
- (char*)NULL };
-
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Nested_Sys_Limits fix
#endif /* ! __GNUC__ */",
(char*)NULL };
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Sco_Regset fix
- */
-tSCC zSco_RegsetName[] =
- "sco_regset";
-
-/*
- * File name selection pattern
- */
-tSCC zSco_RegsetList[] =
- "sys/regset.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzSco_RegsetMachs[] = {
- "*-*-sco3.2v5*",
- (const char*)NULL };
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSco_RegsetSelect0[] =
- "(struct[ \t]+.*)fpstate";
-
-#define SCO_REGSET_TEST_CT 1
-static tTestDesc aSco_RegsetTests[] = {
- { TT_EGREP, zSco_RegsetSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Sco_Regset
- */
-static const char* apzSco_RegsetPatch[] = {
- "format",
- "%1rsfpstate",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Sco_Static_Func fix
- */
-tSCC zSco_Static_FuncName[] =
- "sco_static_func";
-
-/*
- * File name selection pattern
- */
-tSCC zSco_Static_FuncList[] =
- "sys/stat.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzSco_Static_FuncMachs[] = {
- "i?86-*-sco3.2*",
- (const char*)NULL };
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSco_Static_FuncSelect0[] =
- "^static int";
-
-#define SCO_STATIC_FUNC_TEST_CT 1
-static tTestDesc aSco_Static_FuncTests[] = {
- { TT_EGREP, zSco_Static_FuncSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Sco_Static_Func
- */
-static const char* apzSco_Static_FuncPatch[] = { "sed",
- "-e", "/^static int/i\\\n\
-#if __cplusplus\\\n\
-extern \"C\" {\\\n\
-#endif /* __cplusplus */",
- "-e", "/^}$/a\\\n\
-#if __cplusplus\\\n\
- }\\\n\
-#endif /* __cplusplus */",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Sco_Utime fix
- */
-tSCC zSco_UtimeName[] =
- "sco_utime";
-
-/*
- * File name selection pattern
- */
-tSCC zSco_UtimeList[] =
- "sys/times.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzSco_UtimeMachs[] = {
- "i?86-*-sco3.2v4*",
- (const char*)NULL };
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSco_UtimeSelect0[] =
- "\\(const char \\*, struct utimbuf \\*\\);";
-
-#define SCO_UTIME_TEST_CT 1
-static tTestDesc aSco_UtimeTests[] = {
- { TT_EGREP, zSco_UtimeSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Sco_Utime
- */
-static const char* apzSco_UtimePatch[] = {
- "format",
- "(const char *, const struct utimbuf *);",
- (char*)NULL };
-
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Solaris_Math_1 fix
[ \t]*__x_i[ \t]*==[ \t]*\\(__typeof\\(__x_i\\)\\)[ \t]*\\(-INFINITY\\);[ \t]*\\}\\)",
(char*)NULL };
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Solaris_Mutex_Init_1 fix
- */
-tSCC zSolaris_Mutex_Init_1Name[] =
- "solaris_mutex_init_1";
-
-/*
- * File name selection pattern
- */
-tSCC zSolaris_Mutex_Init_1List[] =
- "pthread.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSolaris_Mutex_Init_1Machs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSolaris_Mutex_Init_1Select0[] =
- "@\\(#\\)pthread.h[ \t]+1.1[0-9][ \t]+9[567]/[0-9/]+ SMI";
-
-#define SOLARIS_MUTEX_INIT_1_TEST_CT 1
-static tTestDesc aSolaris_Mutex_Init_1Tests[] = {
- { TT_EGREP, zSolaris_Mutex_Init_1Select0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Solaris_Mutex_Init_1
- */
-static const char* apzSolaris_Mutex_Init_1Patch[] = { "sed",
- "-e", "/define[ \t]*PTHREAD_MUTEX_INI/s/{0, 0,/{{{0}, 0}, {{{0}}},/\n\
-/define[ \t]*PTHREAD_COND_INI/s/{0,/{{{0},0},/",
- (char*)NULL };
-
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Solaris_Mutex_Init_2 fix
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Solaris_Socket fix
+ * Description of Solaris_Stdio_Tag fix
*/
-tSCC zSolaris_SocketName[] =
- "solaris_socket";
+tSCC zSolaris_Stdio_TagName[] =
+ "solaris_stdio_tag";
/*
* File name selection pattern
*/
-tSCC zSolaris_SocketList[] =
- "sys/socket.h\0";
+tSCC zSolaris_Stdio_TagList[] =
+ "stdio_tag.h\0";
/*
* Machine/OS name selection pattern
*/
-#define apzSolaris_SocketMachs (const char**)NULL
+#define apzSolaris_Stdio_TagMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zSolaris_SocketSelect0[] =
- "@\\(#\\)socket.h[ \t]+1.[123][0-9][ \t]+9[567]/[0-9/]+ SMI";
-
-#define SOLARIS_SOCKET_TEST_CT 1
-static tTestDesc aSolaris_SocketTests[] = {
- { TT_EGREP, zSolaris_SocketSelect0, (regex_t*)NULL }, };
+tSCC zSolaris_Stdio_TagSelect0[] =
+ "__cplusplus < 54321L";
/*
- * Fix Command Arguments for Solaris_Socket
+ * content bypass pattern - skip fix if pattern found
*/
-static const char* apzSolaris_SocketPatch[] = {
- "format",
- "extern int %1(int, %2void *, int, int);",
- "^extern int (recv|send)\\(int, (const )*char \\*, int, int\\);",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Solaris_Stdio_Tag fix
- */
-tSCC zSolaris_Stdio_TagName[] =
- "solaris_stdio_tag";
-
-/*
- * File name selection pattern
- */
-tSCC zSolaris_Stdio_TagList[] =
- "stdio_tag.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSolaris_Stdio_TagMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSolaris_Stdio_TagSelect0[] =
- "__cplusplus < 54321L";
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSolaris_Stdio_TagBypass0[] =
- "__GNUC__";
+tSCC zSolaris_Stdio_TagBypass0[] =
+ "__GNUC__";
#define SOLARIS_STDIO_TAG_TEST_CT 2
static tTestDesc aSolaris_Stdio_TagTests[] = {
"-e", "s/defined(__cplusplus) && (__cplusplus < 54321L)/0/",
(char*)NULL };
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Solaris_Unistd fix
- */
-tSCC zSolaris_UnistdName[] =
- "solaris_unistd";
-
-/*
- * File name selection pattern
- */
-tSCC zSolaris_UnistdList[] =
- "unistd.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSolaris_UnistdMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSolaris_UnistdSelect0[] =
- "@\\(#\\)unistd.h[ \t]+1.3[0-9][ \t]+9[567]/[0-9/]+ SMI";
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSolaris_UnistdBypass0[] =
- "getpagesize";
-
-#define SOLARIS_UNISTD_TEST_CT 2
-static tTestDesc aSolaris_UnistdTests[] = {
- { TT_NEGREP, zSolaris_UnistdBypass0, (regex_t*)NULL },
- { TT_EGREP, zSolaris_UnistdSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Solaris_Unistd
- */
-static const char* apzSolaris_UnistdPatch[] = {
- "format",
- "extern int getpagesize();\n\
-%0",
- "^extern (pid_t|int) getpgid\\(.*\\);",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Solaris_Widec fix
- */
-tSCC zSolaris_WidecName[] =
- "solaris_widec";
-
-/*
- * File name selection pattern
- */
-tSCC zSolaris_WidecList[] =
- "widec.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzSolaris_WidecMachs[] = {
- "*-*-solaris2.[0-5]",
- "*-*-solaris2.[0-5].*",
- (const char*)NULL };
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSolaris_WidecSelect0[] =
- "#include <euc.h>";
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSolaris_WidecBypass0[] =
- "include.*wchar\\.h";
-
-#define SOLARIS_WIDEC_TEST_CT 2
-static tTestDesc aSolaris_WidecTests[] = {
- { TT_NEGREP, zSolaris_WidecBypass0, (regex_t*)NULL },
- { TT_EGREP, zSolaris_WidecSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Solaris_Widec
- */
-static const char* apzSolaris_WidecPatch[] = {
- "format",
- "%0\n\
-#include <wchar.h>",
- (char*)NULL };
-
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Statsswtch fix
"getcwd(char *, size_t)",
(char*)NULL };
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Svr4_Krnl fix
- */
-tSCC zSvr4_KrnlName[] =
- "svr4_krnl";
-
-/*
- * File name selection pattern
- */
-tSCC zSvr4_KrnlList[] =
- "fs/rfs/rf_cache.h\0sys/erec.h\0sys/err.h\0sys/char.h\0sys/getpages.h\0sys/map.h\0sys/cmn_err.h\0sys/kdebugger.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzSvr4_KrnlMachs[] = {
- "*-*-sysv4*",
- "i?86-sequent-ptx*",
- (const char*)NULL };
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSvr4_KrnlBypass0[] =
- "_KERNEL";
-
-#define SVR4_KRNL_TEST_CT 1
-static tTestDesc aSvr4_KrnlTests[] = {
- { TT_NEGREP, zSvr4_KrnlBypass0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Svr4_Krnl
- */
-static const char* apzSvr4_KrnlPatch[] = {
- "wrap",
- "#ifdef _KERNEL\n",
- "#endif /* _KERNEL */\n",
- (char*)NULL };
-
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of Svr4_Profil fix
/*
* File name selection pattern
*/
-tSCC zSvr4_ProfilList[] =
- "stdlib.h\0unistd.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSvr4_ProfilMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSvr4_ProfilSelect0[] =
- "profil\\(unsigned short \\*, unsigned int, unsigned int, unsigned int\\)";
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSvr4_ProfilBypass0[] =
- "Silicon Graphics";
-
-#define SVR4_PROFIL_TEST_CT 2
-static tTestDesc aSvr4_ProfilTests[] = {
- { TT_NEGREP, zSvr4_ProfilBypass0, (regex_t*)NULL },
- { TT_EGREP, zSvr4_ProfilSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Svr4_Profil
- */
-static const char* apzSvr4_ProfilPatch[] = {
- "format",
- "profil(unsigned short *, size_t, int, unsigned int)",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Svr4_Sighandler_Type fix
- */
-tSCC zSvr4_Sighandler_TypeName[] =
- "svr4_sighandler_type";
-
-/*
- * File name selection pattern
- */
-tSCC zSvr4_Sighandler_TypeList[] =
- "sys/signal.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSvr4_Sighandler_TypeMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSvr4_Sighandler_TypeSelect0[] =
- "void *\\(\\*\\)\\(\\)";
-
-#define SVR4_SIGHANDLER_TYPE_TEST_CT 1
-static tTestDesc aSvr4_Sighandler_TypeTests[] = {
- { TT_EGREP, zSvr4_Sighandler_TypeSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Svr4_Sighandler_Type
- */
-static const char* apzSvr4_Sighandler_TypePatch[] = {
- "format",
- "void (*)(int)",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Svr4_Undeclared_Getrnge fix
- */
-tSCC zSvr4_Undeclared_GetrngeName[] =
- "svr4_undeclared_getrnge";
-
-/*
- * File name selection pattern
- */
-tSCC zSvr4_Undeclared_GetrngeList[] =
- "regexp.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSvr4_Undeclared_GetrngeMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSvr4_Undeclared_GetrngeSelect0[] =
- "getrnge";
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSvr4_Undeclared_GetrngeBypass0[] =
- "static void getrnge";
-
-#define SVR4_UNDECLARED_GETRNGE_TEST_CT 2
-static tTestDesc aSvr4_Undeclared_GetrngeTests[] = {
- { TT_NEGREP, zSvr4_Undeclared_GetrngeBypass0, (regex_t*)NULL },
- { TT_EGREP, zSvr4_Undeclared_GetrngeSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Svr4_Undeclared_Getrnge
- */
-static const char* apzSvr4_Undeclared_GetrngePatch[] = {
- "format",
- "%0\n\
-static int getrnge ();",
- "^static int[ \t]+size;",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Sysv68_String fix
- */
-tSCC zSysv68_StringName[] =
- "sysv68_string";
-
-/*
- * File name selection pattern
- */
-tSCC zSysv68_StringList[] =
- "testing.h\0string.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSysv68_StringMachs (const char**)NULL
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSysv68_StringBypass0[] =
- "_CLASSIC_ANSI_TYPES";
-
-#define SYSV68_STRING_TEST_CT 1
-static tTestDesc aSysv68_StringTests[] = {
- { TT_NEGREP, zSysv68_StringBypass0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Sysv68_String
- */
-static const char* apzSysv68_StringPatch[] = { "sed",
- "-e", "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/",
- "-e", "s/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/",
- "-e", "s/strdup(char \\*s1);/strdup(const char *s1);/",
- "-e", "/^extern char$/N",
- "-e", "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/",
- "-e", "/^extern int$/N",
- "-e", "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/",
- "-e", "/^\tstrncmp(),$/N",
- "-e", "s/^\\(\tstrncmp()\\),\\n\\(\tstrlen(),\\)$/\\1;\\\n\
-extern unsigned int\\\n\
-\\2/",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Sysz_Stdlib_For_Sun fix
- */
-tSCC zSysz_Stdlib_For_SunName[] =
- "sysz_stdlib_for_sun";
-
-/*
- * File name selection pattern
- */
-tSCC zSysz_Stdlib_For_SunList[] =
- "stdlib.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzSysz_Stdlib_For_SunMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zSysz_Stdlib_For_SunSelect0[] =
- "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
-
-/*
- * content bypass pattern - skip fix if pattern found
- */
-tSCC zSysz_Stdlib_For_SunBypass0[] =
- "_CLASSIC_ANSI_TYPES";
-
-#define SYSZ_STDLIB_FOR_SUN_TEST_CT 2
-static tTestDesc aSysz_Stdlib_For_SunTests[] = {
- { TT_NEGREP, zSysz_Stdlib_For_SunBypass0, (regex_t*)NULL },
- { TT_EGREP, zSysz_Stdlib_For_SunSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Sysz_Stdlib_For_Sun
- */
-static const char* apzSysz_Stdlib_For_SunPatch[] = {
- "format",
- "void *\t%1(",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Thread_Keyword fix
- */
-tSCC zThread_KeywordName[] =
- "thread_keyword";
-
-/*
- * File name selection pattern
- */
-tSCC zThread_KeywordList[] =
- "pthread.h\0bits/sigthread.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzThread_KeywordMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zThread_KeywordSelect0[] =
- "([* ])__thread([,)])";
-
-#define THREAD_KEYWORD_TEST_CT 1
-static tTestDesc aThread_KeywordTests[] = {
- { TT_EGREP, zThread_KeywordSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Thread_Keyword
- */
-static const char* apzThread_KeywordPatch[] = {
- "format",
- "%1__thr%2",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Tinfo_Cplusplus fix
- */
-tSCC zTinfo_CplusplusName[] =
- "tinfo_cplusplus";
-
-/*
- * File name selection pattern
- */
-tSCC zTinfo_CplusplusList[] =
- "tinfo.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzTinfo_CplusplusMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zTinfo_CplusplusSelect0[] =
- "[ \t]_cplusplus";
-
-#define TINFO_CPLUSPLUS_TEST_CT 1
-static tTestDesc aTinfo_CplusplusTests[] = {
- { TT_EGREP, zTinfo_CplusplusSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Tinfo_Cplusplus
- */
-static const char* apzTinfo_CplusplusPatch[] = {
- "format",
- " __cplusplus",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Atexit_Param fix
- */
-tSCC zUltrix_Atexit_ParamName[] =
- "ultrix_atexit_param";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Atexit_ParamList[] =
- "stdlib.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Atexit_ParamMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_Atexit_ParamSelect0[] =
- "atexit\\(.*\\(\\)";
-
-#define ULTRIX_ATEXIT_PARAM_TEST_CT 1
-static tTestDesc aUltrix_Atexit_ParamTests[] = {
- { TT_EGREP, zUltrix_Atexit_ParamSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Atexit_Param
- */
-static const char* apzUltrix_Atexit_ParamPatch[] = {
- "format",
- "atexit( void (*__func)( void )",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Atof_Param fix
- */
-tSCC zUltrix_Atof_ParamName[] =
- "ultrix_atof_param";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Atof_ParamList[] =
- "math.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Atof_ParamMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_Atof_ParamSelect0[] =
- "atof\\([ \t]*char";
-
-#define ULTRIX_ATOF_PARAM_TEST_CT 1
-static tTestDesc aUltrix_Atof_ParamTests[] = {
- { TT_EGREP, zUltrix_Atof_ParamSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Atof_Param
- */
-static const char* apzUltrix_Atof_ParamPatch[] = {
- "format",
- "atof(const char",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Const fix
- */
-tSCC zUltrix_ConstName[] =
- "ultrix_const";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_ConstList[] =
- "stdio.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_ConstMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_ConstSelect0[] =
- "perror\\( char \\*";
-
-#define ULTRIX_CONST_TEST_CT 1
-static tTestDesc aUltrix_ConstTests[] = {
- { TT_EGREP, zUltrix_ConstSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Const
- */
-static const char* apzUltrix_ConstPatch[] = {
- "format",
- "%1 const %3 *__",
- "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)[ \t]+(char|void) \\*__",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Const2 fix
- */
-tSCC zUltrix_Const2Name[] =
- "ultrix_const2";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Const2List[] =
- "stdio.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Const2Machs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_Const2Select0[] =
- "\\*fopen\\( char \\*";
-
-#define ULTRIX_CONST2_TEST_CT 1
-static tTestDesc aUltrix_Const2Tests[] = {
- { TT_EGREP, zUltrix_Const2Select0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Const2
- */
-static const char* apzUltrix_Const2Patch[] = {
- "format",
- "%1( const char *%3, const char *",
- "([ \t*](fopen|sscanf|popen|tempnam))\\([ \t]*char[ \t]*\\*([^,]*),[ \t]*char[ \t]*\\*[ \t]*",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Const3 fix
- */
-tSCC zUltrix_Const3Name[] =
- "ultrix_const3";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Const3List[] =
- "stdio.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Const3Machs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_Const3Select0[] =
- "fdopen\\( .*, char \\*";
-
-#define ULTRIX_CONST3_TEST_CT 1
-static tTestDesc aUltrix_Const3Tests[] = {
- { TT_EGREP, zUltrix_Const3Select0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Const3
- */
-static const char* apzUltrix_Const3Patch[] = {
- "format",
- "%1 const %3 *__",
- "([ \t*](fdopen)\\(.*)[ \t]+(char|void) \\*__",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Fix_Fixproto fix
- */
-tSCC zUltrix_Fix_FixprotoName[] =
- "ultrix_fix_fixproto";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Fix_FixprotoList[] =
- "sys/utsname.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Fix_FixprotoMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_Fix_FixprotoSelect0[] =
- "ULTRIX";
-
-#define ULTRIX_FIX_FIXPROTO_TEST_CT 1
-static tTestDesc aUltrix_Fix_FixprotoTests[] = {
- { TT_EGREP, zUltrix_Fix_FixprotoSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Fix_Fixproto
- */
-static const char* apzUltrix_Fix_FixprotoPatch[] = {
- "format",
- "struct utsname;\n\
-%0",
- "^[ \t]*extern[ \t]*int[ \t]*uname\\(\\);",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Ifdef fix
- */
-tSCC zUltrix_IfdefName[] =
- "ultrix_ifdef";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_IfdefList[] =
- "sys/file.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_IfdefMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_IfdefSelect0[] =
- "^#ifdef KERNEL[ \t]+&&";
-
-#define ULTRIX_IFDEF_TEST_CT 1
-static tTestDesc aUltrix_IfdefTests[] = {
- { TT_EGREP, zUltrix_IfdefSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Ifdef
- */
-static const char* apzUltrix_IfdefPatch[] = {
- "format",
- "#if defined(KERNEL) &&",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Locale fix
- */
-tSCC zUltrix_LocaleName[] =
- "ultrix_locale";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_LocaleList[] =
- "locale.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_LocaleMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_LocaleSelect0[] =
- "@\\(#\\)locale\\.h.*6\\.1.*\\(ULTRIX\\)";
-
-#define ULTRIX_LOCALE_TEST_CT 1
-static tTestDesc aUltrix_LocaleTests[] = {
- { TT_EGREP, zUltrix_LocaleSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Locale
- */
-static const char* apzUltrix_LocalePatch[] = {
- "wrap",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Math_Ifdef fix
- */
-tSCC zUltrix_Math_IfdefName[] =
- "ultrix_math_ifdef";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Math_IfdefList[] =
- "sys/limits.h\0float.h\0math.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Math_IfdefMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_Math_IfdefSelect0[] =
- "^(#if.*)\\|\\|[ \t]+CC\\$[a-z]+";
-
-#define ULTRIX_MATH_IFDEF_TEST_CT 1
-static tTestDesc aUltrix_Math_IfdefTests[] = {
- { TT_EGREP, zUltrix_Math_IfdefSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Math_Ifdef
- */
-static const char* apzUltrix_Math_IfdefPatch[] = {
- "format",
- "%1",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Nested_Ioctl fix
- */
-tSCC zUltrix_Nested_IoctlName[] =
- "ultrix_nested_ioctl";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Nested_IoctlList[] =
- "sys/ioctl.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Nested_IoctlMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_Nested_IoctlSelect0[] =
- "^/\\* #define SIOCSCREEN";
-
-#define ULTRIX_NESTED_IOCTL_TEST_CT 1
-static tTestDesc aUltrix_Nested_IoctlTests[] = {
- { TT_EGREP, zUltrix_Nested_IoctlSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Nested_Ioctl
- */
-static const char* apzUltrix_Nested_IoctlPatch[] = { "sed",
- "-e", "/^\\/\\* #define SIOCSCREEN/s@/\\* screend@*//* screend@",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Nested_Svc fix
- */
-tSCC zUltrix_Nested_SvcName[] =
- "ultrix_nested_svc";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_Nested_SvcList[] =
- "rpc/svc.h\0";
-/*
- * Machine/OS name selection pattern
- */
-#define apzUltrix_Nested_SvcMachs (const char**)NULL
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zUltrix_Nested_SvcSelect0[] =
- "^ \\*[ \t]*int protocol; */\\*";
-
-#define ULTRIX_NESTED_SVC_TEST_CT 1
-static tTestDesc aUltrix_Nested_SvcTests[] = {
- { TT_EGREP, zUltrix_Nested_SvcSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Ultrix_Nested_Svc
- */
-static const char* apzUltrix_Nested_SvcPatch[] = { "sed",
- "-e", "s@^\\( \\*\tint protocol; \\)/\\*@\\1*/ /*@",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Ultrix_Stat fix
- */
-tSCC zUltrix_StatName[] =
- "ultrix_stat";
-
-/*
- * File name selection pattern
- */
-tSCC zUltrix_StatList[] =
- "sys/stat.h\0";
+tSCC zSvr4_ProfilList[] =
+ "stdlib.h\0unistd.h\0";
/*
* Machine/OS name selection pattern
*/
-#define apzUltrix_StatMachs (const char**)NULL
+#define apzSvr4_ProfilMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zUltrix_StatSelect0[] =
- "@\\(#\\)stat\\.h.*6\\.1.*\\(ULTRIX\\)";
+tSCC zSvr4_ProfilSelect0[] =
+ "profil\\(unsigned short \\*, unsigned int, unsigned int, unsigned int\\)";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSvr4_ProfilBypass0[] =
+ "Silicon Graphics";
-#define ULTRIX_STAT_TEST_CT 1
-static tTestDesc aUltrix_StatTests[] = {
- { TT_EGREP, zUltrix_StatSelect0, (regex_t*)NULL }, };
+#define SVR4_PROFIL_TEST_CT 2
+static tTestDesc aSvr4_ProfilTests[] = {
+ { TT_NEGREP, zSvr4_ProfilBypass0, (regex_t*)NULL },
+ { TT_EGREP, zSvr4_ProfilSelect0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Ultrix_Stat
+ * Fix Command Arguments for Svr4_Profil
*/
-static const char* apzUltrix_StatPatch[] = { "sed",
- "-e", "/^#define[ \t]S_IFPORT[ \t]*S_IFIFO$/a\\\n\
-\\\n\
-/* macro to test for symbolic link */\\\n\
-#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)\\\n\n",
- "-e", "/^[ \t]*fstat(),$/a\\\n\
-\tlstat(),\n",
+static const char* apzSvr4_ProfilPatch[] = {
+ "format",
+ "profil(unsigned short *, size_t, int, unsigned int)",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Ultrix_Static fix
+ * Description of Svr4_Sighandler_Type fix
*/
-tSCC zUltrix_StaticName[] =
- "ultrix_static";
+tSCC zSvr4_Sighandler_TypeName[] =
+ "svr4_sighandler_type";
/*
* File name selection pattern
*/
-tSCC zUltrix_StaticList[] =
- "machine/cpu.h\0";
+tSCC zSvr4_Sighandler_TypeList[] =
+ "sys/signal.h\0";
/*
* Machine/OS name selection pattern
*/
-#define apzUltrix_StaticMachs (const char**)NULL
+#define apzSvr4_Sighandler_TypeMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zUltrix_StaticSelect0[] =
- "#include \"r[34]_cpu";
+tSCC zSvr4_Sighandler_TypeSelect0[] =
+ "void *\\(\\*\\)\\(\\)";
-#define ULTRIX_STATIC_TEST_CT 1
-static tTestDesc aUltrix_StaticTests[] = {
- { TT_EGREP, zUltrix_StaticSelect0, (regex_t*)NULL }, };
+#define SVR4_SIGHANDLER_TYPE_TEST_CT 1
+static tTestDesc aSvr4_Sighandler_TypeTests[] = {
+ { TT_EGREP, zSvr4_Sighandler_TypeSelect0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Ultrix_Static
+ * Fix Command Arguments for Svr4_Sighandler_Type
*/
-static const char* apzUltrix_StaticPatch[] = { "sed",
- "-e", "s/^static struct tlb_pid_state/struct tlb_pid_state/",
- "-e", "s/^#include \"r3_cpu\\.h\"$/#include <machine\\/r3_cpu\\.h>/",
- "-e", "s/^#include \"r4_cpu\\.h\"$/#include <machine\\/r4_cpu\\.h>/",
+static const char* apzSvr4_Sighandler_TypePatch[] = {
+ "format",
+ "void (*)(int)",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Ultrix_Stdlib fix
+ * Description of Svr4_Undeclared_Getrnge fix
*/
-tSCC zUltrix_StdlibName[] =
- "ultrix_stdlib";
+tSCC zSvr4_Undeclared_GetrngeName[] =
+ "svr4_undeclared_getrnge";
/*
* File name selection pattern
*/
-tSCC zUltrix_StdlibList[] =
- "stdlib.h\0";
+tSCC zSvr4_Undeclared_GetrngeList[] =
+ "regexp.h\0";
/*
* Machine/OS name selection pattern
*/
-#define apzUltrix_StdlibMachs (const char**)NULL
+#define apzSvr4_Undeclared_GetrngeMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zUltrix_StdlibSelect0[] =
- "@\\(#\\)stdlib\\.h.*6\\.1.*\\(ULTRIX\\)";
+tSCC zSvr4_Undeclared_GetrngeSelect0[] =
+ "getrnge";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSvr4_Undeclared_GetrngeBypass0[] =
+ "static void getrnge";
-#define ULTRIX_STDLIB_TEST_CT 1
-static tTestDesc aUltrix_StdlibTests[] = {
- { TT_EGREP, zUltrix_StdlibSelect0, (regex_t*)NULL }, };
+#define SVR4_UNDECLARED_GETRNGE_TEST_CT 2
+static tTestDesc aSvr4_Undeclared_GetrngeTests[] = {
+ { TT_NEGREP, zSvr4_Undeclared_GetrngeBypass0, (regex_t*)NULL },
+ { TT_EGREP, zSvr4_Undeclared_GetrngeSelect0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Ultrix_Stdlib
+ * Fix Command Arguments for Svr4_Undeclared_Getrnge
*/
-static const char* apzUltrix_StdlibPatch[] = { "sed",
- "-e", "/^char.*getenv( const char .* );.*$/a\\\n\
-int\t\tsetenv( const char *__name, const char *__val, int __ovrwrt );\\\n\
-void\t\tunsetenv( const char *__name );\\\n\
-int\t\tputenv( char *__s );\n",
- "-e", "/^char.*getenv();.*$/a\\\n\
-int\tsetenv();\\\n\
-void\tunsetenv();\\\n\
-int\tputenv();\n",
+static const char* apzSvr4_Undeclared_GetrngePatch[] = {
+ "format",
+ "%0\n\
+static int getrnge ();",
+ "^static int[ \t]+size;",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Ultrix_Strings fix
+ * Description of Sysv68_String fix
*/
-tSCC zUltrix_StringsName[] =
- "ultrix_strings";
+tSCC zSysv68_StringName[] =
+ "sysv68_string";
/*
* File name selection pattern
*/
-tSCC zUltrix_StringsList[] =
- "strings.h\0";
+tSCC zSysv68_StringList[] =
+ "testing.h\0string.h\0";
/*
* Machine/OS name selection pattern
*/
-#define apzUltrix_StringsMachs (const char**)NULL
+#define apzSysv68_StringMachs (const char**)NULL
/*
- * content selection pattern - do fix if pattern found
+ * content bypass pattern - skip fix if pattern found
*/
-tSCC zUltrix_StringsSelect0[] =
- "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
+tSCC zSysv68_StringBypass0[] =
+ "_CLASSIC_ANSI_TYPES";
-#define ULTRIX_STRINGS_TEST_CT 1
-static tTestDesc aUltrix_StringsTests[] = {
- { TT_EGREP, zUltrix_StringsSelect0, (regex_t*)NULL }, };
+#define SYSV68_STRING_TEST_CT 1
+static tTestDesc aSysv68_StringTests[] = {
+ { TT_NEGREP, zSysv68_StringBypass0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Ultrix_Strings
+ * Fix Command Arguments for Sysv68_String
*/
-static const char* apzUltrix_StringsPatch[] = {
- "wrap",
+static const char* apzSysv68_StringPatch[] = { "sed",
+ "-e", "s/extern[ \t]*int[ \t]*strlen();/extern unsigned int strlen();/",
+ "-e", "s/extern[ \t]*int[ \t]*ffs[ \t]*(long);/extern int ffs(int);/",
+ "-e", "s/strdup(char \\*s1);/strdup(const char *s1);/",
+ "-e", "/^extern char$/N",
+ "-e", "s/^extern char\\(\\n\t\\*memccpy(),\\)$/extern void\\1/",
+ "-e", "/^extern int$/N",
+ "-e", "s/^extern int\\(\\n\tstrlen(),\\)/extern size_t\\1/",
+ "-e", "/^\tstrncmp(),$/N",
+ "-e", "s/^\\(\tstrncmp()\\),\\n\\(\tstrlen(),\\)$/\\1;\\\n\
+extern unsigned int\\\n\
+\\2/",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Ultrix_Strings2 fix
+ * Description of Sysz_Stdlib_For_Sun fix
*/
-tSCC zUltrix_Strings2Name[] =
- "ultrix_strings2";
+tSCC zSysz_Stdlib_For_SunName[] =
+ "sysz_stdlib_for_sun";
/*
* File name selection pattern
*/
-tSCC zUltrix_Strings2List[] =
- "strings.h\0";
+tSCC zSysz_Stdlib_For_SunList[] =
+ "stdlib.h\0";
/*
* Machine/OS name selection pattern
*/
-#define apzUltrix_Strings2Machs (const char**)NULL
+#define apzSysz_Stdlib_For_SunMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zUltrix_Strings2Select0[] =
- "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
+tSCC zSysz_Stdlib_For_SunSelect0[] =
+ "char[ \t]*\\*[ \t]*(calloc|malloc|realloc|bsearch)[ \t]*\\(";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSysz_Stdlib_For_SunBypass0[] =
+ "_CLASSIC_ANSI_TYPES";
-#define ULTRIX_STRINGS2_TEST_CT 1
-static tTestDesc aUltrix_Strings2Tests[] = {
- { TT_EGREP, zUltrix_Strings2Select0, (regex_t*)NULL }, };
+#define SYSZ_STDLIB_FOR_SUN_TEST_CT 2
+static tTestDesc aSysz_Stdlib_For_SunTests[] = {
+ { TT_NEGREP, zSysz_Stdlib_For_SunBypass0, (regex_t*)NULL },
+ { TT_EGREP, zSysz_Stdlib_For_SunSelect0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Ultrix_Strings2
+ * Fix Command Arguments for Sysz_Stdlib_For_Sun
*/
-static const char* apzUltrix_Strings2Patch[] = { "sed",
- "-e", "/^.*strncmp( const .* );.*/a\\\n\
-\\\n\
-extern int\\\n\
-\tstrcasecmp( const char *__s1, const char *__s2),\\\n\
-\tstrncasecmp( const char *__s1, const char *__s2, size_t __n );\n",
- "-e", "/^.*strncmp();.*/a\\\n\
-extern int\\\n\
-\tstrcasecmp(),\\\n\
-\tstrncasecmp();\n",
+static const char* apzSysz_Stdlib_For_SunPatch[] = {
+ "format",
+ "void *\t%1(",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Ultrix_Sys_Time fix
+ * Description of Thread_Keyword fix
*/
-tSCC zUltrix_Sys_TimeName[] =
- "ultrix_sys_time";
+tSCC zThread_KeywordName[] =
+ "thread_keyword";
/*
* File name selection pattern
*/
-tSCC zUltrix_Sys_TimeList[] =
- "sys/time.h\0";
+tSCC zThread_KeywordList[] =
+ "pthread.h\0bits/sigthread.h\0";
/*
* Machine/OS name selection pattern
*/
-#define apzUltrix_Sys_TimeMachs (const char**)NULL
+#define apzThread_KeywordMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zUltrix_Sys_TimeSelect0[] =
- "@\\(#\\)time\\.h.*6\\.1.*\\(ULTRIX\\)";
+tSCC zThread_KeywordSelect0[] =
+ "([* ])__thread([,)])";
-#define ULTRIX_SYS_TIME_TEST_CT 1
-static tTestDesc aUltrix_Sys_TimeTests[] = {
- { TT_EGREP, zUltrix_Sys_TimeSelect0, (regex_t*)NULL }, };
+#define THREAD_KEYWORD_TEST_CT 1
+static tTestDesc aThread_KeywordTests[] = {
+ { TT_EGREP, zThread_KeywordSelect0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Ultrix_Sys_Time
+ * Fix Command Arguments for Thread_Keyword
*/
-static const char* apzUltrix_Sys_TimePatch[] = { "sed",
- "-e", "/^extern.*time_t.*time( time_t .* );.*$/a\\\n\
-\\\n\
-extern int adjtime(struct timeval *, struct timeval *);\\\n\
-extern int getitimer(int, struct itimerval *);\\\n\
-extern int setitimer(int, struct itimerval *, struct itimerval *);\\\n\
-extern int gettimeofday(struct timeval *, struct timezone *);\\\n\
-extern int settimeofday(struct timeval *, struct timezone *);\\\n\
-extern void profil(const void *, size_t, size_t, unsigned int);\\\n\
-extern int stime(const time_t *);\\\n\
-extern int utimes(const char *, const struct timeval[2]);\\\n\
-extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);\n",
- "-e", "/^extern.*double.*difftime();.*$/a\\\n\
-extern\tint adjtime();\\\n\
-extern\tint getitimer();\\\n\
-extern\tint setitimer();\\\n\
-extern\tint gettimeofday();\\\n\
-extern\tint settimeofday();\\\n\
-extern\tvoid profil();\\\n\
-extern\tint stime();\\\n\
-extern\tint utimes();\\\n\
-extern\tint select();\n",
+static const char* apzThread_KeywordPatch[] = {
+ "format",
+ "%1__thr%2",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Ultrix_Unistd fix
+ * Description of Tinfo_Cplusplus fix
*/
-tSCC zUltrix_UnistdName[] =
- "ultrix_unistd";
+tSCC zTinfo_CplusplusName[] =
+ "tinfo_cplusplus";
/*
* File name selection pattern
*/
-tSCC zUltrix_UnistdList[] =
- "unistd.h\0";
+tSCC zTinfo_CplusplusList[] =
+ "tinfo.h\0";
/*
* Machine/OS name selection pattern
*/
-#define apzUltrix_UnistdMachs (const char**)NULL
+#define apzTinfo_CplusplusMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zUltrix_UnistdSelect0[] =
- "@\\(#\\)unistd\\.h.*6\\.1.*\\(ULTRIX\\)";
+tSCC zTinfo_CplusplusSelect0[] =
+ "[ \t]_cplusplus";
-#define ULTRIX_UNISTD_TEST_CT 1
-static tTestDesc aUltrix_UnistdTests[] = {
- { TT_EGREP, zUltrix_UnistdSelect0, (regex_t*)NULL }, };
+#define TINFO_CPLUSPLUS_TEST_CT 1
+static tTestDesc aTinfo_CplusplusTests[] = {
+ { TT_EGREP, zTinfo_CplusplusSelect0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Ultrix_Unistd
+ * Fix Command Arguments for Tinfo_Cplusplus
*/
-static const char* apzUltrix_UnistdPatch[] = { "sed",
- "-e", "/^[ \t]*getgroups(),.*$/a\\\n\
-\tgetpagesize(),\n",
- "-e", "/^[ \t]*fork(),.*$/a\\\n\
-\tvfork(),\n",
+static const char* apzTinfo_CplusplusPatch[] = {
+ "format",
+ " __cplusplus",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Unicosmk_Restrict fix
+ * Description of Ultrix_Const fix
*/
-tSCC zUnicosmk_RestrictName[] =
- "unicosmk_restrict";
+tSCC zUltrix_ConstName[] =
+ "ultrix_const";
/*
* File name selection pattern
*/
-tSCC zUnicosmk_RestrictList[] =
- "stdio.h\0stdlib.h\0wchar.h\0";
+tSCC zUltrix_ConstList[] =
+ "stdio.h\0";
/*
* Machine/OS name selection pattern
*/
-tSCC* apzUnicosmk_RestrictMachs[] = {
- "*-*-unicosmk*",
- (const char*)NULL };
+#define apzUltrix_ConstMachs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zUnicosmk_RestrictSelect0[] =
- "(\\*[ \t]*)restrict([ \t]+)";
+tSCC zUltrix_ConstSelect0[] =
+ "perror\\( char \\*";
-#define UNICOSMK_RESTRICT_TEST_CT 1
-static tTestDesc aUnicosmk_RestrictTests[] = {
- { TT_EGREP, zUnicosmk_RestrictSelect0, (regex_t*)NULL }, };
+#define ULTRIX_CONST_TEST_CT 1
+static tTestDesc aUltrix_ConstTests[] = {
+ { TT_EGREP, zUltrix_ConstSelect0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Unicosmk_Restrict
+ * Fix Command Arguments for Ultrix_Const
*/
-static const char* apzUnicosmk_RestrictPatch[] = {
+static const char* apzUltrix_ConstPatch[] = {
"format",
- "%1__restrict__%2",
+ "%1 const %3 *__",
+ "([ \t*](perror|fputs|fwrite|scanf|fscanf)\\(.*)[ \t]+(char|void) \\*__",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
- * Description of Uw7_Byteorder_Fix fix
+ * Description of Ultrix_Const2 fix
*/
-tSCC zUw7_Byteorder_FixName[] =
- "uw7_byteorder_fix";
+tSCC zUltrix_Const2Name[] =
+ "ultrix_const2";
/*
* File name selection pattern
*/
-tSCC zUw7_Byteorder_FixList[] =
- "arpa/inet.h\0";
+tSCC zUltrix_Const2List[] =
+ "stdio.h\0";
/*
* Machine/OS name selection pattern
*/
-tSCC* apzUw7_Byteorder_FixMachs[] = {
- "*-*-sysv4*",
- "i?86-*-sysv5*",
- "i?86-*-udk*",
- "i?86-*-solaris2.[0-4]",
- "powerpcle-*-solaris2.[0-4]",
- "sparc-*-solaris2.[0-4]",
- (const char*)NULL };
+#define apzUltrix_Const2Machs (const char**)NULL
/*
* content selection pattern - do fix if pattern found
*/
-tSCC zUw7_Byteorder_FixSelect0[] =
- "in_port_t";
-
-/*
- * perform the 'test' shell command - do fix on success
- */
-tSCC zUw7_Byteorder_FixTest0[] =
- "-f sys/byteorder.h";
+tSCC zUltrix_Const2Select0[] =
+ "\\*fopen\\( char \\*";
-#define UW7_BYTEORDER_FIX_TEST_CT 2
-static tTestDesc aUw7_Byteorder_FixTests[] = {
- { TT_TEST, zUw7_Byteorder_FixTest0, 0 /* unused */ },
- { TT_EGREP, zUw7_Byteorder_FixSelect0, (regex_t*)NULL }, };
+#define ULTRIX_CONST2_TEST_CT 1
+static tTestDesc aUltrix_Const2Tests[] = {
+ { TT_EGREP, zUltrix_Const2Select0, (regex_t*)NULL }, };
/*
- * Fix Command Arguments for Uw7_Byteorder_Fix
+ * Fix Command Arguments for Ultrix_Const2
*/
-static const char* apzUw7_Byteorder_FixPatch[] = {
+static const char* apzUltrix_Const2Patch[] = {
"format",
- "",
- "^extern.*[ \t](htons|ntohs).*\\(in_port_t\\).*;",
+ "%1( const char *%3, const char *",
+ "([ \t*](fopen|sscanf|popen|tempnam))\\([ \t]*char[ \t]*\\*([^,]*),[ \t]*char[ \t]*\\*[ \t]*",
(char*)NULL };
/* * * * * * * * * * * * * * * * * * * * * * * * * *
#define VOIDFUNCPTR __gcc_VOIDFUNCPTR",
(char*)NULL };
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Windiss_Math1 fix
- */
-tSCC zWindiss_Math1Name[] =
- "windiss_math1";
-
-/*
- * File name selection pattern
- */
-tSCC zWindiss_Math1List[] =
- "math.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzWindiss_Math1Machs[] = {
- "*-*-windiss",
- (const char*)NULL };
-#define WINDISS_MATH1_TEST_CT 0
-#define aWindiss_Math1Tests (tTestDesc*)NULL
-
-/*
- * Fix Command Arguments for Windiss_Math1
- */
-static const char* apzWindiss_Math1Patch[] = { "sed",
- "-e", "s|inline long double cosl.*|#ifndef __GNUC__|",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Windiss_Math2 fix
- */
-tSCC zWindiss_Math2Name[] =
- "windiss_math2";
-
-/*
- * File name selection pattern
- */
-tSCC zWindiss_Math2List[] =
- "math.h\0";
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzWindiss_Math2Machs[] = {
- "*-*-windiss",
- (const char*)NULL };
-#define WINDISS_MATH2_TEST_CT 0
-#define aWindiss_Math2Tests (tTestDesc*)NULL
-
-/*
- * Fix Command Arguments for Windiss_Math2
- */
-static const char* apzWindiss_Math2Patch[] = { "sed",
- "-e", "s|/\\* long double declarations \\*/|#endif /* __GNUC__ */|",
- (char*)NULL };
-
-/* * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * Description of Windiss_Valist fix
- */
-tSCC zWindiss_ValistName[] =
- "windiss_valist";
-
-/*
- * File name selection pattern
- */
-#define zWindiss_ValistList (char*)NULL
-/*
- * Machine/OS name selection pattern
- */
-tSCC* apzWindiss_ValistMachs[] = {
- "*-*-windiss",
- (const char*)NULL };
-
-/*
- * content selection pattern - do fix if pattern found
- */
-tSCC zWindiss_ValistSelect0[] =
- "(#include.*)diab/va_list.h";
-
-#define WINDISS_VALIST_TEST_CT 1
-static tTestDesc aWindiss_ValistTests[] = {
- { TT_EGREP, zWindiss_ValistSelect0, (regex_t*)NULL }, };
-
-/*
- * Fix Command Arguments for Windiss_Valist
- */
-static const char* apzWindiss_ValistPatch[] = { "sed",
- "-e", "s|diab/va_list.h|stdarg.h|",
- (char*)NULL };
-
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Description of X11_Class fix
*
* List of all fixes
*/
-#define REGEX_COUNT 257
-#define MACH_LIST_SIZE_LIMIT 261
-#define FIX_COUNT 213
+#define REGEX_COUNT 223
+#define MACH_LIST_SIZE_LIMIT 181
+#define FIX_COUNT 177
/*
* Enumerate the fixes
AAB_FD_ZERO_SELECTBITS_H_FIXIDX,
AAB_SOLARIS_SYS_VARARGS_H_FIXIDX,
AAB_SUN_MEMCPY_FIXIDX,
- AAB_ULTRIX_ANSI_COMPAT_FIXIDX,
- AAB_ULTRIX_LIMITS_FIXIDX,
- AAB_ULTRIX_MEMORY_FIXIDX,
- AAB_ULTRIX_STRING_FIXIDX,
AIX_PTHREAD_FIXIDX,
AIX_SYSMACHINE_FIXIDX,
AIX_SYSWAIT_FIXIDX,
ISC_FMOD_FIXIDX,
ISC_OMITS_WITH_STDC_FIXIDX,
KANDR_CONCAT_FIXIDX,
- LIBC1_G_VA_LIST_FIXIDX,
- LIBC1_IFDEFD_MEMX_FIXIDX,
LINUX_IA64_UCONTEXT_FIXIDX,
LYNXOS_NO_WARNING_IN_SYS_TIME_H_FIXIDX,
LYNXOS_MISSING_PUTENV_FIXIDX,
MATH_EXCEPTION_FIXIDX,
MATH_HUGE_VAL_FROM_DBL_MAX_FIXIDX,
NESTED_AUTH_DES_FIXIDX,
- NESTED_MOTOROLA_FIXIDX,
NESTED_SYS_LIMITS_FIXIDX,
NETBSD_C99_INLINE_1_FIXIDX,
NETBSD_C99_INLINE_2_FIXIDX,
RS6000_FCHMOD_FIXIDX,
RS6000_PARAM_FIXIDX,
SCO_MATH_FIXIDX,
- SCO_REGSET_FIXIDX,
- SCO_STATIC_FUNC_FIXIDX,
- SCO_UTIME_FIXIDX,
SOLARIS_MATH_1_FIXIDX,
SOLARIS_MATH_2_FIXIDX,
SOLARIS_MATH_3_FIXIDX,
SOLARIS_MATH_8_FIXIDX,
SOLARIS_MATH_9_FIXIDX,
SOLARIS_MATH_10_FIXIDX,
- SOLARIS_MUTEX_INIT_1_FIXIDX,
SOLARIS_MUTEX_INIT_2_FIXIDX,
SOLARIS_RWLOCK_INIT_1_FIXIDX,
SOLARIS_ONCE_INIT_1_FIXIDX,
SOLARIS_ONCE_INIT_2_FIXIDX,
- SOLARIS_SOCKET_FIXIDX,
SOLARIS_STDIO_TAG_FIXIDX,
- SOLARIS_UNISTD_FIXIDX,
- SOLARIS_WIDEC_FIXIDX,
STATSSWTCH_FIXIDX,
STDIO_STDARG_H_FIXIDX,
STDIO_VA_LIST_FIXIDX,
SUNOS_STRLEN_FIXIDX,
SVR4_DISABLE_OPT_FIXIDX,
SVR4_GETCWD_FIXIDX,
- SVR4_KRNL_FIXIDX,
SVR4_PROFIL_FIXIDX,
SVR4_SIGHANDLER_TYPE_FIXIDX,
SVR4_UNDECLARED_GETRNGE_FIXIDX,
SYSZ_STDLIB_FOR_SUN_FIXIDX,
THREAD_KEYWORD_FIXIDX,
TINFO_CPLUSPLUS_FIXIDX,
- ULTRIX_ATEXIT_PARAM_FIXIDX,
- ULTRIX_ATOF_PARAM_FIXIDX,
ULTRIX_CONST_FIXIDX,
ULTRIX_CONST2_FIXIDX,
- ULTRIX_CONST3_FIXIDX,
- ULTRIX_FIX_FIXPROTO_FIXIDX,
- ULTRIX_IFDEF_FIXIDX,
- ULTRIX_LOCALE_FIXIDX,
- ULTRIX_MATH_IFDEF_FIXIDX,
- ULTRIX_NESTED_IOCTL_FIXIDX,
- ULTRIX_NESTED_SVC_FIXIDX,
- ULTRIX_STAT_FIXIDX,
- ULTRIX_STATIC_FIXIDX,
- ULTRIX_STDLIB_FIXIDX,
- ULTRIX_STRINGS_FIXIDX,
- ULTRIX_STRINGS2_FIXIDX,
- ULTRIX_SYS_TIME_FIXIDX,
- ULTRIX_UNISTD_FIXIDX,
- UNICOSMK_RESTRICT_FIXIDX,
- UW7_BYTEORDER_FIX_FIXIDX,
VA_I960_MACRO_FIXIDX,
VOID_NULL_FIXIDX,
VXWORKS_GCC_PROBLEM_FIXIDX,
VXWORKS_NEEDS_VXTYPES_FIXIDX,
VXWORKS_NEEDS_VXWORKS_FIXIDX,
VXWORKS_TIME_FIXIDX,
- WINDISS_MATH1_FIXIDX,
- WINDISS_MATH2_FIXIDX,
- WINDISS_VALIST_FIXIDX,
X11_CLASS_FIXIDX,
X11_CLASS_USAGE_FIXIDX,
X11_NEW_FIXIDX,
AAB_SUN_MEMCPY_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
aAab_Sun_MemcpyTests, apzAab_Sun_MemcpyPatch, 0 },
- { zAab_Ultrix_Ansi_CompatName, zAab_Ultrix_Ansi_CompatList,
- apzAab_Ultrix_Ansi_CompatMachs,
- AAB_ULTRIX_ANSI_COMPAT_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
- aAab_Ultrix_Ansi_CompatTests, apzAab_Ultrix_Ansi_CompatPatch, 0 },
-
- { zAab_Ultrix_LimitsName, zAab_Ultrix_LimitsList,
- apzAab_Ultrix_LimitsMachs,
- AAB_ULTRIX_LIMITS_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
- aAab_Ultrix_LimitsTests, apzAab_Ultrix_LimitsPatch, 0 },
-
- { zAab_Ultrix_MemoryName, zAab_Ultrix_MemoryList,
- apzAab_Ultrix_MemoryMachs,
- AAB_ULTRIX_MEMORY_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
- aAab_Ultrix_MemoryTests, apzAab_Ultrix_MemoryPatch, 0 },
-
- { zAab_Ultrix_StringName, zAab_Ultrix_StringList,
- apzAab_Ultrix_StringMachs,
- AAB_ULTRIX_STRING_TEST_CT, FD_MACH_ONLY | FD_REPLACEMENT,
- aAab_Ultrix_StringTests, apzAab_Ultrix_StringPatch, 0 },
-
{ zAix_PthreadName, zAix_PthreadList,
apzAix_PthreadMachs,
AIX_PTHREAD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
KANDR_CONCAT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aKandr_ConcatTests, apzKandr_ConcatPatch, 0 },
- { zLibc1_G_Va_ListName, zLibc1_G_Va_ListList,
- apzLibc1_G_Va_ListMachs,
- LIBC1_G_VA_LIST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aLibc1_G_Va_ListTests, apzLibc1_G_Va_ListPatch, 0 },
-
- { zLibc1_Ifdefd_MemxName, zLibc1_Ifdefd_MemxList,
- apzLibc1_Ifdefd_MemxMachs,
- LIBC1_IFDEFD_MEMX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aLibc1_Ifdefd_MemxTests, apzLibc1_Ifdefd_MemxPatch, 0 },
-
{ zLinux_Ia64_UcontextName, zLinux_Ia64_UcontextList,
apzLinux_Ia64_UcontextMachs,
LINUX_IA64_UCONTEXT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
NESTED_AUTH_DES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aNested_Auth_DesTests, apzNested_Auth_DesPatch, 0 },
- { zNested_MotorolaName, zNested_MotorolaList,
- apzNested_MotorolaMachs,
- NESTED_MOTOROLA_TEST_CT, FD_MACH_ONLY,
- aNested_MotorolaTests, apzNested_MotorolaPatch, 0 },
-
{ zNested_Sys_LimitsName, zNested_Sys_LimitsList,
apzNested_Sys_LimitsMachs,
NESTED_SYS_LIMITS_TEST_CT, FD_MACH_ONLY,
SCO_MATH_TEST_CT, FD_MACH_ONLY,
aSco_MathTests, apzSco_MathPatch, 0 },
- { zSco_RegsetName, zSco_RegsetList,
- apzSco_RegsetMachs,
- SCO_REGSET_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSco_RegsetTests, apzSco_RegsetPatch, 0 },
-
- { zSco_Static_FuncName, zSco_Static_FuncList,
- apzSco_Static_FuncMachs,
- SCO_STATIC_FUNC_TEST_CT, FD_MACH_ONLY,
- aSco_Static_FuncTests, apzSco_Static_FuncPatch, 0 },
-
- { zSco_UtimeName, zSco_UtimeList,
- apzSco_UtimeMachs,
- SCO_UTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSco_UtimeTests, apzSco_UtimePatch, 0 },
-
{ zSolaris_Math_1Name, zSolaris_Math_1List,
apzSolaris_Math_1Machs,
SOLARIS_MATH_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
SOLARIS_MATH_10_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aSolaris_Math_10Tests, apzSolaris_Math_10Patch, 0 },
- { zSolaris_Mutex_Init_1Name, zSolaris_Mutex_Init_1List,
- apzSolaris_Mutex_Init_1Machs,
- SOLARIS_MUTEX_INIT_1_TEST_CT, FD_MACH_ONLY,
- aSolaris_Mutex_Init_1Tests, apzSolaris_Mutex_Init_1Patch, 0 },
-
{ zSolaris_Mutex_Init_2Name, zSolaris_Mutex_Init_2List,
apzSolaris_Mutex_Init_2Machs,
SOLARIS_MUTEX_INIT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
SOLARIS_ONCE_INIT_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aSolaris_Once_Init_2Tests, apzSolaris_Once_Init_2Patch, 0 },
- { zSolaris_SocketName, zSolaris_SocketList,
- apzSolaris_SocketMachs,
- SOLARIS_SOCKET_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSolaris_SocketTests, apzSolaris_SocketPatch, 0 },
-
{ zSolaris_Stdio_TagName, zSolaris_Stdio_TagList,
apzSolaris_Stdio_TagMachs,
SOLARIS_STDIO_TAG_TEST_CT, FD_MACH_ONLY,
aSolaris_Stdio_TagTests, apzSolaris_Stdio_TagPatch, 0 },
- { zSolaris_UnistdName, zSolaris_UnistdList,
- apzSolaris_UnistdMachs,
- SOLARIS_UNISTD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSolaris_UnistdTests, apzSolaris_UnistdPatch, 0 },
-
- { zSolaris_WidecName, zSolaris_WidecList,
- apzSolaris_WidecMachs,
- SOLARIS_WIDEC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSolaris_WidecTests, apzSolaris_WidecPatch, 0 },
-
{ zStatsswtchName, zStatsswtchList,
apzStatsswtchMachs,
STATSSWTCH_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
SVR4_GETCWD_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aSvr4_GetcwdTests, apzSvr4_GetcwdPatch, 0 },
- { zSvr4_KrnlName, zSvr4_KrnlList,
- apzSvr4_KrnlMachs,
- SVR4_KRNL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aSvr4_KrnlTests, apzSvr4_KrnlPatch, 0 },
-
{ zSvr4_ProfilName, zSvr4_ProfilList,
apzSvr4_ProfilMachs,
SVR4_PROFIL_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
TINFO_CPLUSPLUS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aTinfo_CplusplusTests, apzTinfo_CplusplusPatch, 0 },
- { zUltrix_Atexit_ParamName, zUltrix_Atexit_ParamList,
- apzUltrix_Atexit_ParamMachs,
- ULTRIX_ATEXIT_PARAM_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUltrix_Atexit_ParamTests, apzUltrix_Atexit_ParamPatch, 0 },
-
- { zUltrix_Atof_ParamName, zUltrix_Atof_ParamList,
- apzUltrix_Atof_ParamMachs,
- ULTRIX_ATOF_PARAM_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUltrix_Atof_ParamTests, apzUltrix_Atof_ParamPatch, 0 },
-
{ zUltrix_ConstName, zUltrix_ConstList,
apzUltrix_ConstMachs,
ULTRIX_CONST_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
ULTRIX_CONST2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aUltrix_Const2Tests, apzUltrix_Const2Patch, 0 },
- { zUltrix_Const3Name, zUltrix_Const3List,
- apzUltrix_Const3Machs,
- ULTRIX_CONST3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUltrix_Const3Tests, apzUltrix_Const3Patch, 0 },
-
- { zUltrix_Fix_FixprotoName, zUltrix_Fix_FixprotoList,
- apzUltrix_Fix_FixprotoMachs,
- ULTRIX_FIX_FIXPROTO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUltrix_Fix_FixprotoTests, apzUltrix_Fix_FixprotoPatch, 0 },
-
- { zUltrix_IfdefName, zUltrix_IfdefList,
- apzUltrix_IfdefMachs,
- ULTRIX_IFDEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUltrix_IfdefTests, apzUltrix_IfdefPatch, 0 },
-
- { zUltrix_LocaleName, zUltrix_LocaleList,
- apzUltrix_LocaleMachs,
- ULTRIX_LOCALE_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUltrix_LocaleTests, apzUltrix_LocalePatch, 0 },
-
- { zUltrix_Math_IfdefName, zUltrix_Math_IfdefList,
- apzUltrix_Math_IfdefMachs,
- ULTRIX_MATH_IFDEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUltrix_Math_IfdefTests, apzUltrix_Math_IfdefPatch, 0 },
-
- { zUltrix_Nested_IoctlName, zUltrix_Nested_IoctlList,
- apzUltrix_Nested_IoctlMachs,
- ULTRIX_NESTED_IOCTL_TEST_CT, FD_MACH_ONLY,
- aUltrix_Nested_IoctlTests, apzUltrix_Nested_IoctlPatch, 0 },
-
- { zUltrix_Nested_SvcName, zUltrix_Nested_SvcList,
- apzUltrix_Nested_SvcMachs,
- ULTRIX_NESTED_SVC_TEST_CT, FD_MACH_ONLY,
- aUltrix_Nested_SvcTests, apzUltrix_Nested_SvcPatch, 0 },
-
- { zUltrix_StatName, zUltrix_StatList,
- apzUltrix_StatMachs,
- ULTRIX_STAT_TEST_CT, FD_MACH_ONLY,
- aUltrix_StatTests, apzUltrix_StatPatch, 0 },
-
- { zUltrix_StaticName, zUltrix_StaticList,
- apzUltrix_StaticMachs,
- ULTRIX_STATIC_TEST_CT, FD_MACH_ONLY,
- aUltrix_StaticTests, apzUltrix_StaticPatch, 0 },
-
- { zUltrix_StdlibName, zUltrix_StdlibList,
- apzUltrix_StdlibMachs,
- ULTRIX_STDLIB_TEST_CT, FD_MACH_ONLY,
- aUltrix_StdlibTests, apzUltrix_StdlibPatch, 0 },
-
- { zUltrix_StringsName, zUltrix_StringsList,
- apzUltrix_StringsMachs,
- ULTRIX_STRINGS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUltrix_StringsTests, apzUltrix_StringsPatch, 0 },
-
- { zUltrix_Strings2Name, zUltrix_Strings2List,
- apzUltrix_Strings2Machs,
- ULTRIX_STRINGS2_TEST_CT, FD_MACH_ONLY,
- aUltrix_Strings2Tests, apzUltrix_Strings2Patch, 0 },
-
- { zUltrix_Sys_TimeName, zUltrix_Sys_TimeList,
- apzUltrix_Sys_TimeMachs,
- ULTRIX_SYS_TIME_TEST_CT, FD_MACH_ONLY,
- aUltrix_Sys_TimeTests, apzUltrix_Sys_TimePatch, 0 },
-
- { zUltrix_UnistdName, zUltrix_UnistdList,
- apzUltrix_UnistdMachs,
- ULTRIX_UNISTD_TEST_CT, FD_MACH_ONLY,
- aUltrix_UnistdTests, apzUltrix_UnistdPatch, 0 },
-
- { zUnicosmk_RestrictName, zUnicosmk_RestrictList,
- apzUnicosmk_RestrictMachs,
- UNICOSMK_RESTRICT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUnicosmk_RestrictTests, apzUnicosmk_RestrictPatch, 0 },
-
- { zUw7_Byteorder_FixName, zUw7_Byteorder_FixList,
- apzUw7_Byteorder_FixMachs,
- UW7_BYTEORDER_FIX_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
- aUw7_Byteorder_FixTests, apzUw7_Byteorder_FixPatch, 0 },
-
{ zVa_I960_MacroName, zVa_I960_MacroList,
apzVa_I960_MacroMachs,
VA_I960_MACRO_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
VXWORKS_TIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aVxworks_TimeTests, apzVxworks_TimePatch, 0 },
- { zWindiss_Math1Name, zWindiss_Math1List,
- apzWindiss_Math1Machs,
- WINDISS_MATH1_TEST_CT, FD_MACH_ONLY,
- aWindiss_Math1Tests, apzWindiss_Math1Patch, 0 },
-
- { zWindiss_Math2Name, zWindiss_Math2List,
- apzWindiss_Math2Machs,
- WINDISS_MATH2_TEST_CT, FD_MACH_ONLY,
- aWindiss_Math2Tests, apzWindiss_Math2Patch, 0 },
-
- { zWindiss_ValistName, zWindiss_ValistList,
- apzWindiss_ValistMachs,
- WINDISS_VALIST_TEST_CT, FD_MACH_ONLY,
- aWindiss_ValistTests, apzWindiss_ValistPatch, 0 },
-
{ zX11_ClassName, zX11_ClassList,
apzX11_ClassMachs,
X11_CLASS_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
#endif
-/*
- * Completely replace <sys/byteorder.h> with a file that implements gcc's
- * optimized byteswapping. (The original probably implemented some
- * incompatible optimized byteswapping.)
- */
-fix = {
- hackname = AAB_svr4_replace_byteorder;
- mach = "*-*-sysv4*";
- mach = "i[34567]86-*-sysv5*";
- mach = "i[34567]86-*-sco3.2v5*";
- mach = "i[34567]86-*-udk*";
- mach = "i[34567]86-*-solaris2.[0-4]";
- mach = "powerpcle-*-solaris2.[0-4]";
- mach = "sparc-*-solaris2.[0-4]";
- mach = "i[34567]86-sequent-ptx*";
- files = sys/byteorder.h;
- replace = <<- _EndOfHeader_
- #ifndef _SYS_BYTEORDER_H
- #define _SYS_BYTEORDER_H
-
- /* Functions to convert `short' and `long' quantities from host byte order
- to (internet) network byte order (i.e. big-endian).
-
- Written by Ron Guilmette (rfg@ncd.com).
-
- This isn't actually used by GCC. It is installed by fixinc.svr4.
-
- For big-endian machines these functions are essentially no-ops.
-
- For little-endian machines, we define the functions using specialized
- asm sequences in cases where doing so yields better code (e.g. i386). */
-
- #if !defined (__GNUC__) && !defined (__GNUG__)
- #error You lose! This file is only useful with GNU compilers.
- #endif
-
- #ifndef __BYTE_ORDER__
- /* Byte order defines. These are as defined on UnixWare 1.1, but with
- double underscores added at the front and back. */
- #define __LITTLE_ENDIAN__ 1234
- #define __BIG_ENDIAN__ 4321
- #define __PDP_ENDIAN__ 3412
- #endif
-
- #ifdef __STDC__
- static __inline__ unsigned long htonl (unsigned long);
- static __inline__ unsigned short htons (unsigned int);
- static __inline__ unsigned long ntohl (unsigned long);
- static __inline__ unsigned short ntohs (unsigned int);
- #endif /* defined (__STDC__) */
-
- #if defined (__i386__)
-
- #ifndef __BYTE_ORDER__
- #define __BYTE_ORDER__ __LITTLE_ENDIAN__
- #endif
-
- /* Convert a host long to a network long. */
-
- /* We must use a new-style function definition, so that this will also
- be valid for C++. */
- static __inline__ unsigned long
- htonl (unsigned long __arg)
- {
- register unsigned long __result;
-
- __asm__ ("xchg%B0 %b0,%h0
- ror%L0 $16,%0
- xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
- return __result;
- }
-
- /* Convert a host short to a network short. */
-
- static __inline__ unsigned short
- htons (unsigned int __arg)
- {
- register unsigned short __result;
-
- __asm__ ("xchg%B0 %b0,%h0" : "=q" (__result) : "0" (__arg));
- return __result;
- }
-
- #elif (defined (__ns32k__) || defined (__vax__) || defined (__arm__))
-
- #ifndef __BYTE_ORDER__
- #define __BYTE_ORDER__ __LITTLE_ENDIAN__
- #endif
-
- /* For other little-endian machines, using C code is just as efficient as
- using assembly code. */
-
- /* Convert a host long to a network long. */
-
- static __inline__ unsigned long
- htonl (unsigned long __arg)
- {
- register unsigned long __result;
-
- __result = (__arg >> 24) & 0x000000ff;
- __result |= (__arg >> 8) & 0x0000ff00;
- __result |= (__arg << 8) & 0x00ff0000;
- __result |= (__arg << 24) & 0xff000000;
- return __result;
- }
-
- /* Convert a host short to a network short. */
-
- static __inline__ unsigned short
- htons (unsigned int __arg)
- {
- register unsigned short __result;
-
- __result = (__arg << 8) & 0xff00;
- __result |= (__arg >> 8) & 0x00ff;
- return __result;
- }
-
- #else /* must be a big-endian machine */
-
- #ifndef __BYTE_ORDER__
- #define __BYTE_ORDER__ __BIG_ENDIAN__
- #endif
-
- /* Convert a host long to a network long. */
-
- static __inline__ unsigned long
- htonl (unsigned long __arg)
- {
- return __arg;
- }
-
- /* Convert a host short to a network short. */
-
- static __inline__ unsigned short
- htons (unsigned int __arg)
- {
- return __arg;
- }
-
- #endif /* big-endian */
-
- /* Convert a network long to a host long. */
-
- static __inline__ unsigned long
- ntohl (unsigned long __arg)
- {
- return htonl (__arg);
- }
-
- /* Convert a network short to a host short. */
-
- static __inline__ unsigned short
- ntohs (unsigned int __arg)
- {
- return htons (__arg);
- }
- #endif
- _EndOfHeader_;
-};
-
-
-/*
- * Cancel out ansi_compat.h on Ultrix. Replace it with an empty file.
- */
-fix = {
- hackname = AAB_ultrix_ansi_compat;
- files = ansi_compat.h;
- select = ULTRIX;
- replace = "/* This file intentionally left blank. */\n";
-};
-
-
-/*
- * The Ultrix 4.3 file limits.h is a symbolic link to sys/limits.h.
- * Replace limits.h with a file that includes sys/limits.h.
- */
-fix = {
- hackname = AAB_ultrix_limits;
- files = limits.h;
- mach = "*-*-ultrix4.3";
- replace = <<- _EndOfHeader_
- #ifndef _LIMITS_INCLUDED
- #define _LIMITS_INCLUDED
- #include <sys/limits.h>
- #endif /* _LIMITS_INCLUDED */
- _EndOfHeader_;
-};
-
-
-/*
- * The ULTRIX 4.3 version of memory.h duplicates definitions
- * present in strings.h. Replace memory.h with a file that includes
- * strings.h to prevent problems from multiple inclusion.
- */
-fix = {
- hackname = AAB_ultrix_memory;
- files = memory.h;
- mach = "*-*-ultrix4.3";
- replace = <<- _EndOfHeader_
- #ifndef _MEMORY_INCLUDED
- #define _MEMORY_INCLUDED
- #include <strings.h>
- #endif /* _MEMORY_INCLUDED */
- _EndOfHeader_;
-};
-
-
/*
* The Ultrix 4.3 file string.h is a symbolic link to strings.h.
* Replace string.h link with a file that includes strings.h to prevent
};
-/*
- * Fix libc1 _G_va_list definition, used in declarations of several
- * more-or-less standard functions, for example vasprintf.
- */
-fix = {
- hackname = libc1_G_va_list;
- files = _G_config.h;
- mach = '*-*-linux*libc1';
- select = 'typedef void \* _G_va_list;';
- c_fix = format;
- c_fix_arg = "typedef __builtin_va_list _G_va_list;";
- test_text = 'typedef void * _G_va_list;';
-};
-
-
-/*
- * GNU libc1 string.h does not prototype memcpy and memcmp for gcc
- * versions > 1. This fix will open up the declaration for all
- * versions of GCC and for g++.
- */
-fix = {
- hackname = libc1_ifdefd_memx;
-
- /* The string.h result is overwritten by AAB_ultrix_string when doing
- "make check" and will fail. Therefore, we add the following kludgery
- to insert the test_text into the special testing header. :-} */
- files = testing.h;
- files = string.h;
-
- c_fix = format;
- select = "' is a built-in function for gcc 2\\.x\\. \\*/";
- bypass = __cplusplus;
- c_fix_arg = "%1";
- c_fix_arg =
- '/\* `mem...\' is a built-in function for gcc 2\.x\. \*/' "\n"
- '#if defined\(__STDC__\) && __GNUC__ < 2' "\n"
- "(/\\* .* \\*/\n"
- "extern [a-z_]+ mem.*(\n[^#].*)*;)\n"
- "#endif";
-
- test_text =
- "/* \\`memcpy' is a built-in function for gcc 2.x. */\n"
- "#if defined(__STDC__) && __GNUC__ < 2\n"
- "/* Copy N bytes of SRC to DEST. */\n"
- "extern __ptr_t memcpy __P ((__ptr_t __dest, __const __ptr_t __src,\n"
- " size_t __n));\n"
- "#endif";
-};
-
-
/* The /usr/include/sys/ucontext.h on ia64-*linux-gnu systems defines
* an _SC_GR0_OFFSET macro using an idiom that isn't a compile time
* constant on recent versions of g++.
};
-/*
- * Fix nested comments in Motorola's <limits.h> and <sys/limits.h>
- */
-fix = {
- hackname = nested_motorola;
- mach = "m68k-motorola-sysv*";
- files = sys/limits.h;
- files = limits.h;
- select = "max # bytes atomic in write|error value returned by Math lib";
-
- sed = "s@^\\(#undef[ \t][ \t]*PIPE_BUF[ \t]*"
- "/\\* max # bytes atomic in write to a\\)$@\\1 */@";
- sed = "s@\\(/\\*#define\tHUGE_VAL\t3.[0-9e+]* \\)"
- "\\(/\\*error value returned by Math lib\\*/\\)$@\\1*/ \\2@";
-
- test_text =
- "#undef PIPE_BUF /* max # bytes atomic in write to a\n"
- "\t\t/* PIPE */\n"
- "/*#define\tHUGE_VAL\t3.9e+9 /*error value returned by Math lib*/";
-};
-
-
/*
* Fixing nested comments in ISC <sys/limits.h>
*/
test_text = "extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask);";
};
-/*
- * On DYNIX/ptx, sys/mc_param.h has an embedded asm for the cpuid instruction
- * on the P5. This is not used by anything else so we ifdef it out.
- * Current GCC doesn't seem to complain about the asm, though.
- */
-#ifdef PTX
-fix = {
- hackname = ptx_sys_mc_param_h;
- files = sys/mc_param.h;
- sed = "/__asm/,/}/{"
- "/__asm/i\\\n"
- "#if !defined (__GNUC__) && !defined (__GNUG__)\n"
- "/}/a\\\n"
- "#endif\n"
- "}";
- test_text = "__asm\n"
- "int _CPUID()\n"
- "{\n"
- " non-GNU assembly here\n"
- "}";
-};
-#endif
-
-
/*
* Fix return type of fread and fwrite on sysV68
*/
};
-/*
- * On SCO OpenServer prior to 5.0.7UP1, <sys/regset.h> and <ieeefp.h>
- * have a clash on struct _fpstate and struct fpstate.
- */
-fix = {
- hackname = sco_regset;
- files = sys/regset.h;
- mach = "*-*-sco3.2v5*";
- select = "(struct[ \t]+.*)fpstate";
- c_fix = format;
- c_fix_arg = "%1rsfpstate";
-
- test_text =
- "union u_fps {\n"
- " struct\tfpstate\n"
- " {\n"
- " int whatever;\n"
- " }\n"
- "};\n"
- "union _u_fps {\n"
- " struct _fpstate\n"
- " {\n"
- " int whatever;\n"
- " }\n"
- "};\n";
-};
-
-
-/*
- * The static functions lstat() and fchmod() in <sys/stat.h>
- * cause G++ grief since they're not wrapped in "if __cplusplus".
- *
- * On SCO OpenServer 5.0.0 through (at least) 5.0.5 <sys/stat.h> contains
- * tiny static wrappers that aren't C++ safe.
- */
-fix = {
- hackname = sco_static_func;
- files = sys/stat.h;
- mach = "i?86-*-sco3.2*";
- select = "^static int";
-
- sed = "/^static int/i\\\n"
- "#if __cplusplus\\\n"
- "extern \"C\" {\\\n"
- "#endif /* __cplusplus */";
-
- sed = "/^}$/a\\\n"
- "#if __cplusplus\\\n"
- " }\\\n"
- "#endif /* __cplusplus */";
-
- test_text =
- "#ifdef __STDC__\n"
- "static int\tstat(const char *__f, struct stat *__p) {\n"
- "\treturn __stat32(__f, __p);\n"
- "}\n\n# else /* !__STDC__ THIS FAILS ON BSD SYSTEMS */\n"
-
- "static int\tstat(__f, __p)\n"
- "\tchar *__f;\n"
- "\tstruct stat *__p;\n"
- "{\n"
- "\treturn __stat32(__f, __p);\n"
- "}\n"
- "#endif";
-};
-
-
-/*
- * Fix prototype declaration of utime in sys/times.h.
- * In 3.2v4.0 the const is missing.
- */
-fix = {
- hackname = sco_utime;
- files = sys/times.h;
- mach = "i?86-*-sco3.2v4*";
-
- select = '\(const char \*, struct utimbuf \*\);';
- c_fix = format;
- c_fix_arg = '(const char *, const struct utimbuf *);';
-
- test_text = "extern int utime(const char *, struct utimbuf *);";
-};
-
/*
* Sun Solaris 10 defines several C99 math macros in terms of
* builtins specific to the Studio compiler, in particular not
" __x_i == (__typeof(__x_i)) (-INFINITY); })";
};
-/*
- * Sun Solaris 2.5.1, 2.6 defines PTHREAD_{MUTEX|COND}_INITIALIZER
- * incorrectly, so we replace them with versions that correspond to
- * the definition. We also explicitly name this fix "1" and the next
- * fix "2" because this one does not deal with the last field. This
- * fix needs to run before the next.
- */
-fix = {
- hackname = solaris_mutex_init_1;
- select = '@\(#\)pthread.h' "[ \t]+1.1[0-9][ \t]+9[567]/[0-9/]+ SMI";
- files = pthread.h;
- sed = "/define[ \t]*PTHREAD_MUTEX_INI/s/{0, 0,/{{{0}, 0}, {{{0}}},/\n"
- "/define[ \t]*PTHREAD_COND_INI/s/{0,/{{{0},0},/";
- test_text =
- '#ident "@(#)pthread.h 1.16 97/05/05 SMI"'"\n"
- "#define PTHREAD_MUTEX_INITIALIZER\t{0, 0, 0}\n"
- "#define PTHREAD_COND_INITIALIZER\t{0, 0} /* */\n";
-};
-
-
/*
* Sun Solaris defines PTHREAD_MUTEX_INITIALIZER with a trailing
* "0" for the last field of the pthread_mutex_t structure, which is
};
-/*
- * Solaris 2.5.1 and 2.6 use an outdated prototype for send & recv
- * in sys/socket.h. This is corrected in Solaris 7 and up.
- */
-fix = {
- hackname = solaris_socket;
- files = sys/socket.h;
- select = '@\(#\)socket.h' "[ \t]+1.[123][0-9][ \t]+9[567]/[0-9/]+ SMI";
- c_fix = format;
- c_fix_arg = "extern int %1(int, %2void *, int, int);";
- c_fix_arg = '^extern int (recv|send)\(int,'
- ' (const )*char '
- '\*, int, int\);';
-
- test_text = '#ident "@(#)socket.h 1.30 97/01/20 SMI"'"\n"
- "extern int recv(int, char *, int, int);\n"
- "extern int send(int, const char *, int, int);";
-};
-
-
/*
* Solaris 2.8 has what appears to be some gross workaround for
* some old version of their c++ compiler. G++ doesn't want it
};
-/*
- * Sun Solaris 2.5.1 doesn't define 'getpagesize' in <unistd.h>, as is done
- * on Solaris 2.6 and up.
- */
-fix = {
- hackname = solaris_unistd;
- files = unistd.h;
- select = '@\(#\)unistd.h' "[ \t]+1.3[0-9][ \t]+9[567]/[0-9/]+ SMI";
- bypass = "getpagesize";
- c_fix = format;
- c_fix_arg = "extern int getpagesize();\n%0";
- c_fix_arg = '^extern (pid_t|int) getpgid\(.*\);';
- test_text = '#ident "@(#)unistd.h 1.33 95/08/28 SMI"'"\n"
- "extern pid_t getpgid(pid_t);\n"
- "extern int getpgid();";
-};
-
-
-/*
- * <widec.h> until Solaris 2.5.1 defines macros for a couple of <wchar.h>
- * functions, breaking their prototypes if that file is included afterwards.
- * Include <wchar.h> early to avoid this issue, as is done on Solaris 2.6
- * and up.
- */
-fix = {
- hackname = solaris_widec;
- files = widec.h;
- mach = '*-*-solaris2.[0-5]';
- mach = '*-*-solaris2.[0-5].*';
- bypass = "include.*wchar\\.h";
- select = "#include <euc.h>";
- c_fix = format;
- c_fix_arg = "%0\n#include <wchar.h>";
- test_text = "#include <euc.h>";
-};
-
-
/*
* a missing semi-colon at the end of the statsswtch structure definition.
*/
};
-/*
- * Wrap some files on System V r4 and DYNIX/ptx systems with
- * #ifdef _KERNEL, presumably to prevent kernel headers from
- * leaking into userspace. This may not be necessary at all,
- * but it was in the old scripts, so it seems safest to keep it for now.
- */
-fix = {
- /* Can't name this with _kernel, or the test case will hit the bypass! */
- hackname = svr4_krnl;
- /* Since I'm rather unsure about the validity of this, limit it
- * to the specific systems it was operating on before. It should
- * also be bypassed for i?86-*-sysv4.3uw2, by that rule, but I didn't
- * see an easy way to do that. Hopefully it will be harmless
- * in any case. -- Nathanael */
- mach = '*-*-sysv4*';
- mach = 'i?86-sequent-ptx*';
- files = fs/rfs/rf_cache.h;
- files = sys/erec.h;
- files = sys/err.h;
- files = sys/char.h;
- files = sys/getpages.h;
- files = sys/map.h;
- files = sys/cmn_err.h;
- files = sys/kdebugger.h;
-
- /* This bypass will match _KERNEL, __KERNEL, __KERNEL__, etc.
- * It will also match SVR4_KERNEL_CHECK, which means that the
- * testsuite case will always be bypassed. Which is fine with me. */
- bypass = '_KERNEL';
-
- c_fix = wrap;
- c_fix_arg = "#ifdef _KERNEL\n";
- c_fix_arg = "#endif /* _KERNEL */\n";
-
- /* There's no reasonable test for this given that we don't know exactly
- * what problem inspired it in the first place. */
- test_text = "";
-};
-
-
/*
* Delete any #defines of `__i386' which may be present in <ieeefp.h>. They
* tend to conflict with the compiler's own definition of this symbol. (We
};
-/*
- * function parameter to atexit is missing "void" on VAX Ultrix 4.3.
- */
-fix = {
- hackname = ultrix_atexit_param;
- files = stdlib.h;
- select = 'atexit\(.*\(\)';
-
- c_fix = format;
- c_fix_arg = "atexit( void (*__func)( void )";
-
- test_text = "int atexit( void (*__func)() );\n";
-};
-
-
-/*
- * parameter to atof not const on DECstation Ultrix V4.0 and NEWS-OS 4.2R.
- */
-fix = {
- hackname = ultrix_atof_param;
- files = math.h;
- select = "atof\\([ \t]*char";
-
- c_fix = format;
- c_fix_arg = "atof(const char";
-
- test_text = "extern double atof( char *__nptr);\n";
-};
-
-
/*
* parameters not const on DECstation Ultrix V4.0 and OSF/1.
*/
};
-/*
- * parameters not const on Ultrix V4.3.
- */
-fix = {
- hackname = ultrix_const3;
- files = stdio.h;
- select = 'fdopen\( .*, char \*';
-
- c_fix = format;
- c_fix_arg = "%1 const %3 *__";
- c_fix_arg = "([ \t*](fdopen)\\(.*)"
- "[ \t]+(char|void) \\*__";
-
- test_text =
- "extern FILE * fdopen( int __filedes, char *__type );\n";
-};
-
-
-/*
- * Ultrix V4.[35] puts the declaration of uname before the definition
- * of struct utsname, so the prototype (added by fixproto) causes havoc.
- */
-fix = {
- hackname = ultrix_fix_fixproto;
- files = sys/utsname.h;
- select = ULTRIX;
-
- c_fix = format;
- c_fix_arg = "struct utsname;\n%0";
- c_fix_arg = "^[ \t]*extern[ \t]*int[ \t]*uname\\(\\);";
-
- test_text =
- "/* ULTRIX's uname */\nextern\tint\tuname();";
-};
-
-
-/*
- * Check for bad #ifdef line (in Ultrix 4.1)
- */
-fix = {
- hackname = ultrix_ifdef;
- select = "^#ifdef KERNEL[ \t]+&&";
- files = sys/file.h;
-
- c_fix = format;
- c_fix_arg = "#if defined(KERNEL) &&";
-
- test_text =
- "#ifdef KERNEL\t&& defined( mumbojumbo )\nint oops;\n#endif";
-};
-
-
-/*
- * Add once-only latch to Ultrix V4.3 locale.h.
- */
-fix = {
- hackname = ultrix_locale;
- files = locale.h;
- select = "@\\(#\\)locale\\.h.*6\\.1.*\\(ULTRIX\\)";
- c_fix = wrap;
- test_text =
- "@(#)locale.h 6.1 (ULTRIX)\n";
-};
-
-
-/*
- * Strip "|| CC$gfloat" from Ultrix math headers.
- */
-fix = {
- hackname = ultrix_math_ifdef;
- files = sys/limits.h;
- files = float.h;
- files = math.h;
- select = "^(#if.*)\\|\\|[ \t]+CC\\$[a-z]+";
- c_fix = format;
- c_fix_arg = "%1";
-
- test_text = '#if defined(__GFLOAT) || CC\$gfloat';
-};
-
-
-/*
- * Avoid nested comments on Ultrix 4.3.
- */
-fix = {
- hackname = ultrix_nested_ioctl;
- files = sys/ioctl.h;
- select = "^/\\* #define SIOCSCREEN";
- sed = "/^\\/\\* #define SIOCSCREEN/s@/\\* screend@*//* screend@";
- test_text =
- "/* #define SIOCSCREENON _IOWR('i', 49, int)"
- "/* screend, net/gw_screen.h */\n";
-};
-
-
-fix = {
- hackname = ultrix_nested_svc;
- files = rpc/svc.h;
- select = "^ \\*[ \t]*int protocol; */\\*";
- sed = "s@^\\( \\*\tint protocol; \\)/\\*@\\1*/ /*@";
- test_text =
- " *\tint protocol; /* like TCP or UDP\n";
-};
-
-
-/*
- * Add missing prototype for lstat and define for S_ISLNK
- * in Ultrix V4.3 sys/stat.h.
- */
-fix = {
- hackname = ultrix_stat;
- files = sys/stat.h;
- select = "@\\(#\\)stat\\.h.*6\\.1.*\\(ULTRIX\\)";
- sed = "/^#define[ \t]S_IFPORT[ \t]*S_IFIFO$/a\\\n"
- "\\\n"
- "/* macro to test for symbolic link */\\\n"
- "#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)\\\n"
- "\n";
- sed = "/^[ \t]*fstat(),$/a\\\n"
- "\tlstat(),\n";
- test_text =
- "@(#)stat.h 6.1 (ULTRIX)\n"
- "#define S_IFPORT S_IFIFO\n"
- "\tfstat(),\n/* THE INSERTION LINE FAILS ON BSD SYSTEMS */";
-};
-
-
-/*
- * Check for superfluous `static' (in Ultrix 4.2)
- * On Ultrix 4.3, includes of other files (r3_cpu.h,r4_cpu.h) is broken.
- */
-fix = {
- hackname = ultrix_static;
- files = machine/cpu.h;
- select = '#include "r[34]_cpu';
- sed = "s/^static struct tlb_pid_state/struct tlb_pid_state/";
- sed = 's/^#include "r3_cpu\.h"$/#include <machine\/r3_cpu\.h>/';
- sed = 's/^#include "r4_cpu\.h"$/#include <machine\/r4_cpu\.h>/';
- test_text =
- "static struct tlb_pid_state {\n"
- "#include \"r3_cpu.h\"\n";
-};
-
-
-/*
- * Add missing declarations to Ultrix V4.3 stdlib.h.
- */
-fix = {
- hackname = ultrix_stdlib;
- files = stdlib.h;
- select = "@\\(#\\)stdlib\\.h.*6\\.1.*\\(ULTRIX\\)";
-
- sed = "/^char.*getenv( const char .* );.*$/a\\\n"
- "int\t\tsetenv( const char *__name, const char *__val, int __ovrwrt );\\\n"
- "void\t\tunsetenv( const char *__name );\\\n"
- "int\t\tputenv( char *__s );\n";
-
- sed = "/^char.*getenv();.*$/a\\\n"
- "int\tsetenv();\\\n"
- "void\tunsetenv();\\\n"
- "int\tputenv();\n";
-
- test_text =
- "@(#)stdlib.h 6.1 (ULTRIX)\n"
- "char * getenv( const char *__name );\n"
- "char *getenv();\n";
-};
-
-
-/*
- * Add once-only latch to Ultrix V4.3 strings.h.
- */
-fix = {
- hackname = ultrix_strings;
- files = strings.h;
- select = "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
- c_fix = wrap;
- test_text =
- "@(#)strings.h 6.1 (ULTRIX)\n";
-};
-
-
-/*
- * Add missing declarations to Ultrix V4.3 strings.h.
- */
-fix = {
- hackname = ultrix_strings2;
- files = strings.h;
- select = "@\\(#\\)strings\\.h.*6\\.1.*\\(ULTRIX\\)";
-
- sed = "/^.*strncmp( const .* );.*/a\\\n"
- "\\\n"
- "extern int\\\n"
- "\tstrcasecmp( const char *__s1, const char *__s2),\\\n"
- "\tstrncasecmp( const char *__s1, const char *__s2, size_t __n );\n";
-
- sed = "/^.*strncmp();.*/a\\\n"
- "extern int\\\n"
- "\tstrcasecmp(),\\\n"
- "\tstrncasecmp();\n";
-
- test_text =
- "@(#)strings.h 6.1 (ULTRIX)\n"
- "\tstrncmp( const char *__s1, const char *__s2, size_t __n );\n"
- "\tstrncmp();\n";
-};
-
-
-/*
- * Add missing declarations to Ultrix V4.3 sys/time.h.
- */
-fix = {
- hackname = ultrix_sys_time;
- files = sys/time.h;
- select = "@\\(#\\)time\\.h.*6\\.1.*\\(ULTRIX\\)";
-
- sed = "/^extern.*time_t.*time( time_t .* );.*$/a\\\n"
- "\\\n"
- "extern int adjtime(struct timeval *, struct timeval *);\\\n"
- "extern int getitimer(int, struct itimerval *);\\\n"
- "extern int setitimer(int, struct itimerval *, struct itimerval *);\\\n"
- "extern int gettimeofday(struct timeval *, struct timezone *);\\\n"
- "extern int settimeofday(struct timeval *, struct timezone *);\\\n"
- "extern void profil(const void *, size_t, size_t, unsigned int);\\\n"
- "extern int stime(const time_t *);\\\n"
- "extern int utimes(const char *, const struct timeval[2]);\\\n"
- "extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);\n";
-
- sed = "/^extern.*double.*difftime();.*$/a\\\n"
- "extern\tint adjtime();\\\n"
- "extern\tint getitimer();\\\n"
- "extern\tint setitimer();\\\n"
- "extern\tint gettimeofday();\\\n"
- "extern\tint settimeofday();\\\n"
- "extern\tvoid profil();\\\n"
- "extern\tint stime();\\\n"
- "extern\tint utimes();\\\n"
- "extern\tint select();\n";
-
- test_text =
- "@(#)time.h 6.1 (ULTRIX)\n"
- "extern time_t time( time_t *__tloc );\n"
- "extern double difftime();\n";
-};
-
-
-/*
- * Add missing declarations to Ultrix V4.3 unistd.h.
- */
-fix = {
- hackname = ultrix_unistd;
- files = unistd.h;
- select = "@\\(#\\)unistd\\.h.*6\\.1.*\\(ULTRIX\\)";
-
- sed = "/^[ \t]*getgroups(),.*$/a\\\n"
- "\tgetpagesize(),\n";
-
- sed = "/^[ \t]*fork(),.*$/a\\\n"
- "\tvfork(),\n";
-
- test_text =
- "@(#)unistd.h 6.1 (ULTRIX)\n"
- "\tgetgroups(),\n"
- "\tfork(),\n";
-};
-
-
-/*
- * On Cray Unicos/Mk some standard headers use the C99 keyword "restrict"
- * which must be replaced by __restrict__ for GCC.
- */
-fix = {
- hackname = unicosmk_restrict;
- files = stdio.h;
- files = stdlib.h;
- files = wchar.h;
- mach = "*-*-unicosmk*";
- select = "(\\*[ \t]*)restrict([ \t]+)";
-
- c_fix = format;
- c_fix_arg = "%1__restrict__%2";
-
- test_text = "void f (char * restrict x);";
-};
-
-/*
- * If arpa/inet.h prototypes are incompatible with the ones we just
- * installed in <sys/byteorder.h>, just remove the protos.
- * Because of this close association, this patch must be applied only
- * on those systems where the replacement byteorder header is installed.
- */
-fix = {
- hackname = uw7_byteorder_fix;
- files = arpa/inet.h;
- select = "in_port_t";
- test = "-f sys/byteorder.h";
-#ifndef SVR5
- mach = "*-*-sysv4*";
- mach = "i?86-*-sysv5*";
- mach = "i?86-*-udk*";
- mach = "i?86-*-solaris2.[0-4]";
- mach = "powerpcle-*-solaris2.[0-4]";
- mach = "sparc-*-solaris2.[0-4]";
-#endif /* SVR5 */
-
- c_fix = format;
- c_fix_arg = "";
- c_fix_arg = "^extern.*[ \t](htons|ntohs).*\\(in_port_t\\).*;";
-
- test_text = "extern in_port_t\thtons __P((in_port_t));\n"
- "extern in_port_t\tntohs __P((in_port_t));"
- "`[ ! -d $DESTDIR/sys ] && mkdir $DESTDIR/sys\n"
- "echo '/* DUMMY */' >> sys/byteorder.h`";
-};
-
-
/*
* Fix definitions of macros used by va-i960.h in VxWorks header file.
*/
};
-/*
- * WindISS math.h headers include bogus extern declarations of
- * numerous math functions that conflict with libstdc++-v3.
- */
-fix = {
- hackname = windiss_math1;
- files = math.h;
- mach = "*-*-windiss";
- sed = "s|inline long double cosl.*|#ifndef __GNUC__|";
-
- test_text = "inline long double cosl(long double);";
-};
-
-fix = {
- hackname = windiss_math2;
- files = math.h;
- mach = "*-*-windiss";
- sed = "s|/\\* long double declarations \\*/|"
- "#endif /* __GNUC__ */|";
-
- test_text = "/* long double declarations */";
-};
-
-/*
- * WindISS headers include "diab/va_list.h" instead of "stdarg.h"
- */
-fix = {
- select = '(#include.*)diab/va_list.h';
- hackname = windiss_valist;
- sed = "s|diab/va_list.h|stdarg.h|";
- mach = "*-*-windiss";
-
- test_text = "#include <diab/va_list.h>";
-};
-
/*
* There are several name conflicts with C++ reserved words in X11 header
* files. These are fixed in some versions, so don't do the fixes if
# Check for special fix rules for particular targets
case $machine in
alpha*-dec-*vms* | \
- arm-semi-aof | \
- hppa1.1-*-osf* | \
- hppa1.1-*-bsd* | \
- i370-*-openedition | \
i?86-moss-msdos* | \
- i?86-*-moss* | \
i?86-*-pe | \
i?86-*-cygwin* | \
i?86-*-mingw32* | \
x86_64-*-mingw32* | \
- i?86-*-uwin* | \
i?86-*-interix* | \
*-*-vxworks* | \
- powerpc-*-eabiaix* | \
powerpc-*-eabisim* | \
powerpc-*-eabi* | \
powerpc-*-rtems* | \
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/_G_config.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( LIBC1_G_VA_LIST_CHECK )
-typedef __builtin_va_list _G_va_list;
-#endif /* LIBC1_G_VA_LIST_CHECK */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/arpa/inet.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( UW7_BYTEORDER_FIX_CHECK )
-
-
-#endif /* UW7_BYTEORDER_FIX_CHECK */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/fs/rfs/rf_cache.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-#ifndef FIXINC_WRAP_FS_RFS_RF_CACHE_H_SVR4_KRNL
-#define FIXINC_WRAP_FS_RFS_RF_CACHE_H_SVR4_KRNL 1
-
-#ifdef _KERNEL
-
-
-#if defined( SVR4_KRNL_CHECK )
-
-#endif /* SVR4_KRNL_CHECK */
-#endif /* _KERNEL */
-
-#endif /* FIXINC_WRAP_FS_RFS_RF_CACHE_H_SVR4_KRNL */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/locale.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-#ifndef FIXINC_WRAP_LOCALE_H_ULTRIX_LOCALE
-#define FIXINC_WRAP_LOCALE_H_ULTRIX_LOCALE 1
-
-
-
-#if defined( ULTRIX_LOCALE_CHECK )
-@(#)locale.h 6.1 (ULTRIX)
-
-#endif /* ULTRIX_LOCALE_CHECK */
-
-#endif /* FIXINC_WRAP_LOCALE_H_ULTRIX_LOCALE */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/machine/cpu.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( ULTRIX_STATIC_CHECK )
-struct tlb_pid_state {
-#include <machine/r3_cpu.h>
-
-#endif /* ULTRIX_STATIC_CHECK */
#endif
#endif /* STRICT_ANSI_NOT_CTD_CHECK */
-
-#if defined( ULTRIX_ATOF_PARAM_CHECK )
-extern double atof(const char *__nptr);
-
-#endif /* ULTRIX_ATOF_PARAM_CHECK */
-
-
-#if defined( WINDISS_MATH1_CHECK )
-#ifndef __GNUC__
-#endif /* WINDISS_MATH1_CHECK */
-
-
-#if defined( WINDISS_MATH2_CHECK )
-#endif /* __GNUC__ */
-#endif /* WINDISS_MATH2_CHECK */
-
#endif /* FIXINC_WRAP_MATH_H_EXCEPTION_STRUCTURE */
#ifdef __cplusplus
#undef exception
#else
# define PTHREAD_MUTEX_INITIALIZER {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, 0, 0, 0, 0, 0, 0 }
# define PTHREAD_MUTEX_INITWITHNAME_NP(_n_,_a_) {0, _PTHREAD_MVALID | _PTHREAD_MVF_STA, _n_, _a_, 0, 0, 0, 0 }
-# define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) {{{0},0}, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_, 0, 0 }
+# define PTHREAD_COND_INITWITHNAME_NP(_n_,_a_) {0, _PTHREAD_CVALID | _PTHREAD_CVF_STA, _n_, _a_, 0, 0 }
#endif
#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWVALID | _PTHREAD_RWVF_STA, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
#endif /* PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_CHECK */
-#if defined( SOLARIS_MUTEX_INIT_1_CHECK )
-#ident "@(#)pthread.h 1.16 97/05/05 SMI"
-#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
-#define PTHREAD_MUTEX_INITIALIZER {{{0}, 0}, {{{0}}}, 0}
-#else
-#define PTHREAD_MUTEX_INITIALIZER {{{0}, 0}, {{{0}}}, {0}}
-#endif
-#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
-#define PTHREAD_COND_INITIALIZER {{{0},0}, 0} /* */
-#else
-#define PTHREAD_COND_INITIALIZER {{{0},0}, {0}} /* */
-#endif
-
-#endif /* SOLARIS_MUTEX_INIT_1_CHECK */
-
-
#if defined( SOLARIS_MUTEX_INIT_2_CHECK )
#ident "@(#)pthread.h 1.26 98/04/12 SMI"
#if __STDC__ - 0 == 0 && !defined(_NO_LONGLONG)
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/rpc/svc.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( ULTRIX_NESTED_SVC_CHECK )
- * int protocol; */ /* like TCP or UDP
-
-#endif /* ULTRIX_NESTED_SVC_CHECK */
#endif /* ULTRIX_CONST2_CHECK */
-
-#if defined( ULTRIX_CONST3_CHECK )
-extern FILE * fdopen( int __filedes, const char *__type );
-
-#endif /* ULTRIX_CONST3_CHECK */
-
-
-#if defined( UNICOSMK_RESTRICT_CHECK )
-void f (char * __restrict__ x);
-#endif /* UNICOSMK_RESTRICT_CHECK */
-
#endif /* FIXINC_WRAP_STDIO_H_STDIO_STDARG_H */
extern void * bsearch(void*,size_t,size_t);
#endif /* SYSZ_STDLIB_FOR_SUN_CHECK */
-
-
-#if defined( ULTRIX_ATEXIT_PARAM_CHECK )
-int atexit( void (*__func)( void ) );
-
-#endif /* ULTRIX_ATEXIT_PARAM_CHECK */
-
-
-#if defined( ULTRIX_STDLIB_CHECK )
-@(#)stdlib.h 6.1 (ULTRIX)
-char * getenv( const char *__name );
-int setenv( const char *__name, const char *__val, int __ovrwrt );
-void unsetenv( const char *__name );
-int putenv( char *__s );
-char *getenv();
-int setenv();
-void unsetenv();
-int putenv();
-
-#endif /* ULTRIX_STDLIB_CHECK */
This had to be done to correct non-standard usages in the
original, manufacturer supplied header file. */
-#ifndef _STRING_INCLUDED
- #define _STRING_INCLUDED
- #include <strings.h>
-#endif /* _STRING_INCLUDED */
+
+
+#if defined( SVR4_DISABLE_OPT_CHECK )
+
+#endif /* SVR4_DISABLE_OPT_CHECK */
This had to be done to correct non-standard usages in the
original, manufacturer supplied header file. */
-#ifndef FIXINC_WRAP_STRINGS_H_ULTRIX_STRINGS
-#define FIXINC_WRAP_STRINGS_H_ULTRIX_STRINGS 1
-
#if defined( SUNOS_STRLEN_CHECK )
__SIZE_TYPE__ strlen(); /* string length */
#endif /* SUNOS_STRLEN_CHECK */
-
-
-#if defined( ULTRIX_STRINGS_CHECK )
-@(#)strings.h 6.1 (ULTRIX)
-
-#endif /* ULTRIX_STRINGS_CHECK */
-
-
-#if defined( ULTRIX_STRINGS2_CHECK )
-@(#)strings.h 6.1 (ULTRIX)
- strncmp( const char *__s1, const char *__s2, size_t __n );
-
-extern int
- strcasecmp( const char *__s1, const char *__s2),
- strncasecmp( const char *__s1, const char *__s2, size_t __n );
- strncmp();
-extern int
- strcasecmp(),
- strncasecmp();
-
-#endif /* ULTRIX_STRINGS2_CHECK */
-
-#endif /* FIXINC_WRAP_STRINGS_H_ULTRIX_STRINGS */
#if defined( HP_SYSFILE_CHECK )
extern void foo(struct file *, ...); /* HPUX_SOURCE - bad varargs */
#endif /* HP_SYSFILE_CHECK */
-
-
-#if defined( ULTRIX_IFDEF_CHECK )
-#if defined(KERNEL) && defined( mumbojumbo )
-int oops;
-#endif
-#endif /* ULTRIX_IFDEF_CHECK */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/sys/ioctl.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( ULTRIX_NESTED_IOCTL_CHECK )
-/* #define SIOCSCREENON _IOWR('i', 49, int)*//* screend, net/gw_screen.h */
-
-#endif /* ULTRIX_NESTED_IOCTL_CHECK */
-#if defined( NESTED_MOTOROLA_CHECK )
-#undef PIPE_BUF /* max # bytes atomic in write to a */
- /* PIPE */
-/*#define HUGE_VAL 3.9e+9 */ /*error value returned by Math lib*/
-#endif /* NESTED_MOTOROLA_CHECK */
-
-
#if defined( NESTED_SYS_LIMITS_CHECK )
/*
#define CHILD_MAX 20 Max, Max, ... */ /*
#define OPEN_MAX 20 Max, Max, ... */
#endif /* NESTED_SYS_LIMITS_CHECK */
-
-
-#if defined( ULTRIX_MATH_IFDEF_CHECK )
-#if defined(__GFLOAT)
-#endif /* ULTRIX_MATH_IFDEF_CHECK */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/sys/regset.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( SCO_REGSET_CHECK )
-union u_fps {
- struct rsfpstate
- {
- int whatever;
- }
-};
-union _u_fps {
- struct _rsfpstate
- {
- int whatever;
- }
-};
-
-#endif /* SCO_REGSET_CHECK */
typedef u_int32_t socklen_t;
#endif /* _NO_XOPEN4 && _NO_XOPEN5 */
#endif /* IRIX_SOCKLEN_T_CHECK */
-
-
-#if defined( SOLARIS_SOCKET_CHECK )
-#ident "@(#)socket.h 1.30 97/01/20 SMI"
-extern int recv(int, void *, int, int);
-extern int send(int, const void *, int, int);
-#endif /* SOLARIS_SOCKET_CHECK */
#endif /* RS6000_FCHMOD_CHECK */
-#if defined( SCO_STATIC_FUNC_CHECK )
-#ifdef __STDC__
-#if __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-static int stat(const char *__f, struct stat *__p) {
- return __stat32(__f, __p);
-}
-#if __cplusplus
- }
-#endif /* __cplusplus */
-
-# else /* !__STDC__ THIS FAILS ON BSD SYSTEMS */
-#if __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-static int stat(__f, __p)
- char *__f;
- struct stat *__p;
-{
- return __stat32(__f, __p);
-}
-#if __cplusplus
- }
-#endif /* __cplusplus */
-#endif
-#endif /* SCO_STATIC_FUNC_CHECK */
-
-
-#if defined( ULTRIX_STAT_CHECK )
-@(#)stat.h 6.1 (ULTRIX)
-#define S_IFPORT S_IFIFO
-
-/* macro to test for symbolic link */
-#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)
-
- fstat(),
- lstat(),
-/* THE INSERTION LINE FAILS ON BSD SYSTEMS */
-#endif /* ULTRIX_STAT_CHECK */
-
-
#if defined( VXWORKS_NEEDS_VXWORKS_CHECK )
#include </dev/null> /* ULONG */
# define __INCstath <sys/stat.h>
#if defined( LYNXOS_NO_WARNING_IN_SYS_TIME_H_CHECK )
#endif /* LYNXOS_NO_WARNING_IN_SYS_TIME_H_CHECK */
-
-
-#if defined( ULTRIX_SYS_TIME_CHECK )
-@(#)time.h 6.1 (ULTRIX)
-extern time_t time( time_t *__tloc );
-
-extern int adjtime(struct timeval *, struct timeval *);
-extern int getitimer(int, struct itimerval *);
-extern int setitimer(int, struct itimerval *, struct itimerval *);
-extern int gettimeofday(struct timeval *, struct timezone *);
-extern int settimeofday(struct timeval *, struct timezone *);
-extern void profil(const void *, size_t, size_t, unsigned int);
-extern int stime(const time_t *);
-extern int utimes(const char *, const struct timeval[2]);
-extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
-extern double difftime();
-extern int adjtime();
-extern int getitimer();
-extern int setitimer();
-extern int gettimeofday();
-extern int settimeofday();
-extern void profil();
-extern int stime();
-extern int utimes();
-extern int select();
-
-#endif /* ULTRIX_SYS_TIME_CHECK */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/sys/times.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( SCO_UTIME_CHECK )
-extern int utime(const char *, const struct utimbuf *);
-#endif /* SCO_UTIME_CHECK */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/sys/utsname.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( ULTRIX_FIX_FIXPROTO_CHECK )
-/* ULTRIX's uname */
-struct utsname;
-extern int uname();
-#endif /* ULTRIX_FIX_FIXPROTO_CHECK */
#endif /* IO_QUOTES_USE_CHECK */
-#if defined( LIBC1_IFDEFD_MEMX_CHECK )
-/* Copy N bytes of SRC to DEST. */
-extern __ptr_t memcpy __P ((__ptr_t __dest, __const __ptr_t __src,
- size_t __n));
-#endif /* LIBC1_IFDEFD_MEMX_CHECK */
-
-
#if defined( MACHINE_ANSI_H_VA_LIST_CHECK )
# define _BSD_VA_LIST_ __builtin_va_list
#endif /* MACHINE_ANSI_H_VA_LIST_CHECK */
extern size_t
strlen(), strspn();
#endif /* SYSV68_STRING_CHECK */
-
-
-#if defined( WINDISS_VALIST_CHECK )
-#include <stdarg.h>
-#endif /* WINDISS_VALIST_CHECK */
#if defined( ALPHA_SBRK_CHECK )
extern void *sbrk(ptrdiff_t increment);
#endif /* ALPHA_SBRK_CHECK */
-
-
-#if defined( SOLARIS_UNISTD_CHECK )
-#ident "@(#)unistd.h 1.33 95/08/28 SMI"
-extern int getpagesize();
-extern pid_t getpgid(pid_t);
-extern int getpagesize();
-extern int getpgid();
-#endif /* SOLARIS_UNISTD_CHECK */
-
-
-#if defined( ULTRIX_UNISTD_CHECK )
-@(#)unistd.h 6.1 (ULTRIX)
- getgroups(),
- getpagesize(),
- fork(),
- vfork(),
-
-#endif /* ULTRIX_UNISTD_CHECK */
+++ /dev/null
-/* DO NOT EDIT THIS FILE.
-
- It has been auto-edited by fixincludes from:
-
- "fixinc/tests/inc/widec.h"
-
- This had to be done to correct non-standard usages in the
- original, manufacturer supplied header file. */
-
-
-
-#if defined( SOLARIS_WIDEC_CHECK )
-#include <euc.h>
-#include <wchar.h>
-#endif /* SOLARIS_WIDEC_CHECK */
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * config.gcc (Obsolete configurations): Remove list of
+ configurations.
+ (Unsupported targets list): Add *-*-linux*aout*, *-*-linux*libc1*,
+ *-*-solaris2.[0-6], *-*-solaris2.[0-6].*, *-*-sysv*. Remove other
+ targets matched by those patterns.
+ (strongarm*-*-*, ep9312*-*-*, xscale-*-*, parisc*-*-*,
+ m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
+ alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
+ arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
+ hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
+ i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
+ i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
+ i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
+ i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
+ mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
+ powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
+ powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
+ strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
+ vax-*-ultrix*, xscale-*-elf, xscale-*-coff,
+ i[34567]86-*-linux*aout*, i[34567]86-*-linux*libc1): Remove.
+ Make code for Solaris 7 and greater unconditional for Solaris.
+ (ep9312-*-*, parisc1*, m680[012]0-*-*, parisc*-*-*, mt-*-*):
+ Remove --with-* handling.
+ * config/rs6000/sysv4.h (-mwindiss): Remove from all specs.
+ (LIB_WINDISS_SPEC, CPP_OS_WINDISS_SPEC, STARTFILE_WINDISS_SPEC,
+ ENDFILE_WINDISS_SPEC, LINK_START_WINDISS_SPEC,
+ LINK_OS_WINDISS_SPEC): Remove.
+ * config/rs6000/sysv4.opt (mwindiss): Remove.
+ * configure.ac (strongarm*-*-*, xscale*-*-*): Remove.
+ * configure: Regenerate.
+ * doc/cpp.texi: Don't mention BeOS.
+ * doc/extend.texi (interrupt): Don't mention MS1.
+ * doc/install.texi: (i386-@var{any}-sysv, m68k-bull-sysv,
+ m68k-hp-hpux, m68000-hp-hpux, m68000-att-sysv,
+ alphaev5-cray-unicosmk*, xscale-*-*, i?86-*-linux*aout,
+ i?86-*-sco3.2v5*, i?86-*-udk, m68k-hp-hpux, powerpc-*-sysv4,
+ powerpc-*-sysv4, powerpcle-*-sysv4, *-*-sysv*, vax-dec-ultrix):
+ Remove.
+ * doc/invoke.texi (MT Options): Remove.
+ (-mwindiss): Remove.
+ (CRIS Options): Remove cris-axis-aout references.
+ (HPPA Options): Don't mention hppa1.1-*-pro.
+ * doc/md.texi: (MorphoTech family): Remove.
+ * libgcc2.c: Don't handle UWIN.
+ * config/alpha/t-unicosmk: Remove.
+ * config/alpha/unicosmk.h: Remove.
+ * config/arm/kaos-arm.h: Remove.
+ * config/arm/kaos-strongarm.h: Remove.
+ * config/arm/strongarm-coff.h: Remove.
+ * config/arm/strongarm-elf.h: Remove.
+ * config/arm/strongarm-pe.h: Remove.
+ * config/arm/t-strongarm-pe: Remove.
+ * config/arm/t-xscale-coff: Remove.
+ * config/arm/t-xscale-elf: Remove.
+ * config/arm/xscale-coff.h: Remove.
+ * config/arm/xscale-elf.h: Remove.
+ * config/chorus.h: Remove.
+ * config/cris/aout.h: Remove.
+ * config/cris/aout.opt: Remove.
+ * config/cris/t-aout: Remove.
+ * config/i386/beos-elf.h: Remove.
+ * config/i386/kaos-i386.h: Remove.
+ * config/i386/ptx4-i.h: Remove.
+ * config/i386/sco5.h: Remove.
+ * config/i386/sco5.opt: Remove.
+ * config/i386/sysv4-cpp.h: Remove.
+ * config/i386/sysv5.h: Remove.
+ * config/i386/t-beos: Remove.
+ * config/i386/t-sco5: Remove.
+ * config/i386/t-uwin: Remove.
+ * config/i386/uwin.asm: Remove.
+ * config/i386/uwin.h: Remove.
+ * config/kaos.h: Remove.
+ * config/mips/windiss.h: Remove.
+ * config/mt: Remove directory.
+ * config/pa/pa-osf.h: Remove.
+ * config/pa/pa-pro-end.h: Remove.
+ * config/pa/t-pro: Remove.
+ * config/ptx4.h: Remove.
+ * config/rs6000/beos.h: Remove.
+ * config/rs6000/kaos-ppc.h: Remove.
+ * config/rs6000/t-beos: Remove.
+ * config/rs6000/windiss.h: Remove.
+ * config/sh/kaos-sh.h: Remove.
+ * config/sol2-6.h: Remove.
+ * config/sparc/sol26-sld.h: Remove.
+ * config/sparc/sysv4-only.h: Remove.
+ * config/vax/bsd.h: Remove.
+ * config/vax/t-memfuncs: Remove.
+ * config/vax/ultrix.h: Remove.
+ * config/vax/vaxv.h: Remove.
+ * config/windiss.h: Remove.
+
2008-06-06 Uros Bizjak <ubizjak@gmail.com>
PR rtl-optimization/36438
md_file=
# Obsolete configurations.
-case ${target} in
- mt-* \
- | strongarm*-* \
- | ep9312*-* \
- | xscale*-* \
- | parisc*-* \
- | m680[012]0-* \
- | *-*-beos* \
- | *-*-kaos* \
- | *-*-linux*aout* \
- | *-*-linux*libc1* \
- | *-*-solaris2.[0-6] \
- | *-*-solaris2.[0-6].* \
- | *-*-sysv* \
- | *-*-windiss* \
- | alpha*-*-unicosmk* \
- | cris-*-aout \
- | hppa1.1-*-pro* \
- | hppa1.1-*-osf* \
- | hppa1.1-*-bsd* \
- | i[34567]86-sequent-ptx4* \
- | i[34567]86-*-sco3.2v5* \
- | i[34567]86-*-uwin* \
- | powerpc-*-chorusos* \
- | vax-*-bsd* \
- | vax-*-ultrix* \
- )
- if test "x$enable_obsolete" != xyes; then
- echo "*** Configuration ${target} is obsolete." >&2
- echo "*** Specify --enable-obsolete to build it anyway." >&2
- echo "*** Support will be REMOVED in the next major release of GCC," >&2
- echo "*** unless a maintainer comes forward." >&2
- exit 1
- fi;;
-esac
+#case ${target} in
+# )
+# if test "x$enable_obsolete" != xyes; then
+# echo "*** Configuration ${target} is obsolete." >&2
+# echo "*** Specify --enable-obsolete to build it anyway." >&2
+# echo "*** Support will be REMOVED in the next major release of GCC," >&2
+# echo "*** unless a maintainer comes forward." >&2
+# exit 1
+# fi;;
+#esac
# Unsupported targets list. Do not put an entry in this list unless
# it would otherwise be caught by a more permissive pattern. The list
# should be in alphabetical order.
case ${target} in
- alpha*-*-linux*libc1* \
- | i[34567]86-sequent-sysv \
- | i[34567]86-sequent-sysv[123]* \
- | i[34567]86-go32-* \
+ i[34567]86-go32-* \
| i[34567]86-*-go32* \
- | m68k-*-linux*aout* \
- | m68k-*-linux*libc1* \
| mips64orion*-*-rtems* \
- | powerpc-*-linux*libc1* \
- | sparc-*-linux*aout* \
- | sparc-*-linux*libc1* \
| sparc-hal-solaris2* \
| thumb-*-* \
+ | *-*-linux*aout* \
| *-*-linux*coff* \
+ | *-*-linux*libc1* \
| *-*-linux*oldld* \
| *-*-rtemsaout* \
| *-*-rtemscoff* \
+ | *-*-solaris2.[0-6] \
+ | *-*-solaris2.[0-6].* \
+ | *-*-sysv* \
| vax-*-vms* \
)
echo "*** Configuration ${target} not supported" 1>&2
am33_2.0-*-linux*)
cpu_type=mn10300
;;
-strongarm*-*-*)
- cpu_type=arm
- ;;
arm*-*-*)
cpu_type=arm
extra_headers="mmintrin.h arm_neon.h"
crisv32-*)
cpu_type=cris
;;
-ep9312*-*-*)
- cpu_type=arm
- ;;
frv*) cpu_type=frv
;;
fido-*-*)
cpu_type=m68k
extra_headers=math-68881.h
;;
-xscale-*-*)
- cpu_type=arm
- extra_headers="mmintrin.h"
- ;;
i[34567]86-*-*)
cpu_type=i386
extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
extra_headers=ia64intrin.h
need_64bit_hwint=yes
;;
-hppa*-*-* | parisc*-*-*)
+hppa*-*-*)
cpu_type=pa
;;
m32r*-*-*)
cpu_type=m32r
;;
-m680[012]0-*-*)
- cpu_type=m68k
- extra_headers=math-68881.h
- ;;
m68k-*-*)
extra_headers=math-68881.h
;;
esac
fbsd_tm_file="${fbsd_tm_file} freebsd-spec.h freebsd.h"
;;
-*-*-linux*libc1* | *-*-linux*aout*)
- # Avoid the generic linux case.
- ;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
# Must come before *-*-gnu* (because of *-*-linux-gnu* systems).
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
then tmake_file=${cpu_type}/t-$rest
fi
;;
-alpha*-*-unicosmk*)
- use_collect2=yes
- tm_file="${tm_file} alpha/unicosmk.h"
-
- # Don't include t-ieee for now because we don't support that yet
- # tmake_file="alpha/t-ieee"
- tmake_file="alpha/t-unicosmk"
- use_fixproto=yes
- ;;
alpha*-*-linux*)
tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
target_cpu_default="MASK_GAS"
tm_file="elfos.h arm/elf.h arm/aout.h ${tm_file} vx-common.h vxworks.h arm/vxworks.h"
tmake_file="${tmake_file} arm/t-arm arm/t-vxworks"
;;
-arm*-*-freebsd*|strongarm*-*-freebsd*)
+arm*-*-freebsd*)
tm_file="dbxelf.h elfos.h ${fbsd_tm_file} arm/elf.h arm/aout.h arm/freebsd.h arm/arm.h"
tmake_file="${tmake_file} arm/t-arm arm/t-strongarm-elf"
;;
tmake_file="arm/t-arm arm/t-arm-elf t-rtems arm/t-rtems"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
;;
-arm*-*-elf | ep9312-*-elf)
+arm*-*-elf)
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
tmake_file="arm/t-arm arm/t-arm-elf"
tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
extra_options="${extra_options} arm/pe.opt"
extra_objs="pe.o"
;;
-arm*-*-kaos*)
- tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h kaos.h arm/kaos-arm.h"
- tmake_file="arm/t-arm arm/t-arm-elf"
- tmake_file="${tmake_file} arm/t-arm-softfp soft-fp/t-softfp"
- ;;
avr-*-rtems*)
tm_file="avr/avr.h dbxelf.h avr/rtems.h rtems.h"
tmake_file="avr/t-avr t-rtems avr/t-rtems"
tmake_file=bfin/t-bfin
use_collect2=no
;;
-cris-*-aout)
- tm_file="dbxelf.h ${tm_file} cris/aout.h"
- gas=yes
- tmake_file="cris/t-cris cris/t-aout"
- extra_options="${extra_options} cris/aout.opt"
- ;;
crisv32-*-elf | crisv32-*-none)
tm_file="dbxelf.h elfos.h ${tm_file}"
tmake_file="cris/t-cris"
tm_file="h8300/h8300.h dbxcoff.h h8300/coff.h"
use_fixproto=yes
;;
-hppa*64*-*-linux* | parisc*64*-*-linux*)
+hppa*64*-*-linux*)
target_cpu_default="MASK_PA_11|MASK_PA_20"
tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h svr4.h linux.h \
pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h pa/pa64-linux.h"
gas=yes gnu_ld=yes
need_64bit_hwint=yes
;;
-hppa*-*-linux* | parisc*-*-linux*)
+hppa*-*-linux*)
target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h pa/pa-linux.h \
pa/pa32-regs.h pa/pa32-linux.h"
#hppa*-*-openbsd*)
# target_cpu_default="MASK_PA_11"
# ;;
-hppa1.1-*-pro*)
- target_cpu_default="MASK_PORTABLE_RUNTIME|MASK_NO_SPACE_REGS|MASK_SOFT_FLOAT"
- tm_file="${tm_file} pa/pa32-regs.h dbxelf.h elfos.h pa/elf.h \
- pa/pa-pro-end.h libgloss.h"
- tmake_file="pa/t-pro"
- ;;
-hppa1.1-*-osf*)
- target_cpu_default="MASK_PA_11"
- tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h pa/pa-osf.h"
- tmake_file="pa/t-pa"
- use_collect2=yes
- ;;
-hppa1.1-*-bsd*)
- target_cpu_default="MASK_PA_11"
- tm_file="${tm_file} pa/pa32-regs.h dbxelf.h pa/som.h"
- tmake_file="pa/t-pa"
- use_collect2=yes
- ;;
hppa[12]*-*-hpux10*)
case ${target} in
hppa1.1-*-* | hppa2*-*-*)
tmake_file="i386/t-i386elf t-svr4"
use_fixproto=yes
;;
-i[34567]86-sequent-ptx4* | i[34567]86-sequent-sysv4*)
- if test x$gas = xyes
- then
- tm_file="${tm_file} usegas.h"
- fi
- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ptx4.h i386/ptx4-i.h"
- tmake_file=t-svr4
- extra_parts="crtbegin.o crtend.o"
- use_fixproto=yes
- ;;
i[34567]86-*-aout*)
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h i386/i386-aout.h"
use_fixproto=yes
;;
-i[34567]86-*-beoself* | i[34567]86-*-beos*)
- tmake_file='i386/t-beos i386/t-crtpic'
- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/beos-elf.h"
- extra_parts='crtbegin.o crtend.o'
- ;;
i[34567]86-*-freebsd*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
;;
extra_parts="crtbegin.o crtend.o crti.o crtn.o"
tmake_file="i386/t-rtems-i386 i386/t-crtstuff t-rtems"
;;
-i[34567]86-*-sco3.2v5*) # 80386 running SCO Open Server 5
- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/sco5.h"
- if test x$gas = xyes
- then
- tm_file="usegas.h ${tm_file}"
- fi
- tmake_file=i386/t-sco5
- extra_parts="crtbegin.o crtend.o"
- extra_options="${extra_options} i386/sco5.opt"
- use_fixproto=yes
- ;;
i[34567]86-*-solaris2*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h sol2.h"
case ${target} in
- *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
- tm_file="${tm_file} sol2-6.h"
- ;;
*-*-solaris2.1[0-9]*)
tm_file="${tm_file} sol2-10.h"
;;
if test x$gas = xyes; then
tm_file="usegas.h ${tm_file}"
fi
- case ${target} in
- *-*-solaris2.[789] | *-*-solaris2.1[0-9]*)
- tm_file="$tm_file tm-dwarf2.h"
- ;;
- esac
+ tm_file="$tm_file tm-dwarf2.h"
case ${target} in
*-*-solaris2.1[0-9]*)
tm_file="${tm_file} i386/x86-64.h i386/sol2-10.h"
esac
case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
"":yes:* | yes:yes:* )
- case ${target} in
- *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
- thread_file=posix95
- ;;
- *)
- thread_file=posix
- ;;
- esac
+ thread_file=posix
;;
"":*:yes | yes:*:yes )
thread_file=solaris
;;
esac
;;
-i[34567]86-*-sysv5*) # Intel x86 on System V Release 5
- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h i386/sysv5.h"
- if test x$stabs = xyes
- then
- tm_file="${tm_file} dbx.h"
- fi
- tmake_file="i386/t-crtpic t-svr4"
- extra_parts="crtbegin.o crtend.o"
- if test x$enable_threads = xyes; then
- thread_file='posix'
- fi
- use_fixproto=yes
- ;;
-i[34567]86-*-sysv4*) # Intel 80386's running system V.4
- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h i386/sysv4.h i386/sysv4-cpp.h"
- if test x$stabs = xyes
- then
- tm_file="${tm_file} dbx.h"
- fi
- tmake_file="i386/t-crtpic t-svr4"
- extra_parts="crtbegin.o crtend.o"
- use_fixproto=yes
- ;;
i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
tm_file="${tm_file} i386/unix.h i386/att.h elfos.h svr4.h vx-common.h"
case ${target} in
;;
esac
;;
-i[34567]86-*-uwin*)
- tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygwin.h i386/uwin.h"
- tmake_file="i386/t-cygwin i386/t-uwin"
- extra_objs=winnt.o
- extra_options="${extra_options} i386/cygming.opt"
- target_gtfiles="\$(srcdir)/config/i386/winnt.c"
- if test x$enable_threads = xyes; then
- thread_file='win32'
- fi
- use_fixproto=yes
- ;;
i[34567]86-*-interix3*)
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h i386/i386-interix.h i386/i386-interix3.h interix.h interix3.h"
tmake_file="i386/t-interix"
tm_file="${tm_file} dbxcoff.h"
fi
;;
-i[34567]86-*-kaos*)
- tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h kaos.h i386/kaos-i386.h"
- tmake_file="i386/t-i386elf t-svr4"
- ;;
ia64*-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h ia64/sysv4.h ia64/elf.h"
tmake_file="ia64/t-ia64"
tm_file="${tm_file} m68k/m68k-none.h m68k/m68kemb.h dbxcoff.h m68k/coff.h dbx.h"
use_fixproto=yes
;;
-m68020-*-elf* | m68k-*-elf* | fido-*-elf*)
+m68k-*-elf* | fido-*-elf*)
case ${target} in
fido-*-elf*)
# Check that $with_cpu makes sense.
esac
extra_parts="crtbegin.o crtend.o"
;;
-m68010-*-netbsdelf* | m68k*-*-netbsdelf*)
+m68k*-*-netbsdelf*)
default_m68k_cpu=68020
default_cf_cpu=5475
tm_file="${tm_file} dbxelf.h elfos.h netbsd.h netbsd-elf.h m68k/netbsd-elf.h"
tm_file="elfos.h ${tm_file} svr4.h mips/elf.h vx-common.h vxworks.h mips/vxworks.h"
tmake_file="${tmake_file} mips/t-vxworks"
;;
-mips-wrs-windiss) # Instruction-level simulator for VxWorks.
- xm_defines=POSIX
- tm_file="elfos.h mips/mips.h svr4.h mips/elf.h windiss.h mips/windiss.h"
- tmake_file="${tmake_file} mips/t-elf mips/t-libgcc-mips16"
- thread_file=
- ;;
mipstx39-*-elf* | mipstx39el-*-elf*)
tm_file="elfos.h ${tm_file} mips/r3900.h mips/elf.h"
tmake_file="mips/t-r3900 mips/t-libgcc-mips16"
use_collect2=no
use_fixproto=yes
;;
-mt-*-elf)
- tm_file="dbxelf.h elfos.h svr4.h ${tm_file}"
- tmake_file="${tmake_file} mt/t-mt"
- ;;
pdp11-*-bsd)
tm_file="${tm_file} pdp11/2bsd.h"
use_fixproto=yes
extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
tmake_file="rs6000/t-fprules t-slibgcc-elf-ver t-gnu rs6000/t-linux64 rs6000/t-fprules-softfp soft-fp/t-softfp"
;;
-powerpc-*-beos*)
- tm_file="${tm_file} rs6000/aix.h rs6000/beos.h rs6000/xcoff.h"
- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-beos"
- extra_headers=
- use_fixproto=yes
- ;;
powerpc-*-darwin*)
extra_options="${extra_options} rs6000/darwin.opt"
extra_parts="crt2.o"
tmake_file="${tmake_file} rs6000/t-netbsd"
extra_options="${extra_options} rs6000/sysv4.opt"
;;
-powerpc-*-chorusos*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h chorus.h"
- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos rs6000/t-ppccomm"
- extra_options="${extra_options} rs6000/sysv4.opt"
- case ${enable_threads} in
- yes | posix)
- thread_file='posix'
- ;;
- esac
- use_fixproto=yes
- ;;
powerpc-*-eabispe*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/eabispe.h"
extra_options="${extra_options} rs6000/sysv4.opt"
;;
esac
;;
-powerpc-wrs-windiss*) # Instruction-level simulator for VxWorks.
- tm_file="${tm_file} elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/windiss.h"
- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
- extra_options="${extra_options} rs6000/sysv4.opt"
- thread_file=""
- use_fixproto=yes
- ;;
powerpc-*-lynxos*)
xm_defines=POSIX
tm_file="${tm_file} dbxelf.h elfos.h rs6000/sysv4.h rs6000/lynx.h lynx.h"
gnu_ld=yes
gas=yes
;;
-powerpcle-*-sysv*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcos rs6000/t-ppccomm"
- extra_options="${extra_options} rs6000/sysv4.opt"
- use_fixproto=yes
- ;;
powerpcle-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
extra_options="${extra_options} rs6000/sysv4.opt"
;;
-powerpc-*-kaos*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h kaos.h rs6000/kaos-ppc.h"
- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
- extra_options="${extra_options} rs6000/sysv4.opt"
- ;;
-powerpcle-*-kaos*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/sysv4le.h kaos.h rs6000/kaos-ppc.h"
- tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-ppcgas rs6000/t-ppccomm"
- extra_options="${extra_options} rs6000/sysv4.opt"
- ;;
rs6000-ibm-aix4.[12]* | powerpc-ibm-aix4.[12]*)
tm_file="${tm_file} rs6000/aix.h rs6000/aix41.h rs6000/xcoff.h"
tmake_file="rs6000/t-fprules rs6000/t-fprules-fpbit rs6000/t-newas"
tmake_file=score/t-score-elf
extra_objs="score7.o score3.o"
;;
-sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
+sh-*-elf* | sh[12346l]*-*-elf* | \
sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
sh-*-linux* | sh[2346lbe]*-*-linux* | \
sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
case ${target} in
sh*-*-linux*) tmake_file="${tmake_file} sh/t-linux"
tm_file="${tm_file} linux.h sh/linux.h" ;;
- sh*-*-kaos*) tm_file="${tm_file} sh/embed-elf.h kaos.h sh/kaos-sh.h"
- ;;
sh*-*-netbsd*) tm_file="${tm_file} netbsd.h netbsd-elf.h sh/netbsd-elf.h" ;;
sh*-superh-elf) if test x$with_libgloss != xno; then
with_libgloss=yes
sparc-*-solaris2*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sol2.h"
case ${target} in
- *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
- tm_file="${tm_file} sol2-6.h"
- ;;
*-*-solaris2.1[0-9]*)
tm_file="${tm_file} sol2-10.h"
;;
else
tmake_file="$tmake_file t-slibgcc-sld"
fi
- case ${target} in
- *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
- if test x$gnu_ld = xno; then
- tm_file="${tm_file} sparc/sol26-sld.h"
- fi
- ;;
- *-*-solaris2.[789] | *-*-solaris2.1[0-9]*)
- tm_file="sparc/biarch64.h ${tm_file} sparc/sol2-bi.h"
- if test x$gnu_ld = xyes; then
- tm_file="${tm_file} sparc/sol2-gld-bi.h"
- fi
- if test x$gas = xyes; then
- tm_file="${tm_file} sparc/sol2-gas-bi.h"
- fi
- tm_file="${tm_file} tm-dwarf2.h"
- tmake_file="$tmake_file sparc/t-sol2-64"
- test x$with_cpu != x || with_cpu=v9
- ;;
- esac
+ tm_file="sparc/biarch64.h ${tm_file} sparc/sol2-bi.h"
+ if test x$gnu_ld = xyes; then
+ tm_file="${tm_file} sparc/sol2-gld-bi.h"
+ fi
+ if test x$gas = xyes; then
+ tm_file="${tm_file} sparc/sol2-gas-bi.h"
+ fi
+ tm_file="${tm_file} tm-dwarf2.h"
+ tmake_file="$tmake_file sparc/t-sol2-64"
+ test x$with_cpu != x || with_cpu=v9
c_target_objs="sol2-c.o"
cxx_target_objs="sol2-c.o"
extra_objs="sol2.o"
extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
case ${enable_threads}:${have_pthread_h}:${have_thread_h} in
"":yes:* | yes:yes:* )
- case ${target} in
- *-*-solaris2.[0-6] | *-*-solaris2.[0-6].*)
- thread_file=posix95
- ;;
- *)
- thread_file=posix
- ;;
- esac
+ thread_file=posix
;;
"":*:yes | yes:*:yes )
thread_file=solaris
;;
esac
;;
-sparc-*-sysv4*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sysv4-only.h"
- tmake_file=t-svr4
- extra_parts="crtbegin.o crtend.o"
- use_fixproto=yes
- ;;
sparc-wrs-vxworks)
tm_file="${tm_file} elfos.h svr4.h sparc/sysv4.h vx-common.h vxworks.h sparc/vxworks.h"
tmake_file="${tmake_file} sparc/t-vxworks"
c_target_objs="${c_target_objs} spu-c.o"
cxx_target_objs="${cxx_target_objs} spu-c.o"
;;
-strongarm-*-elf*)
- tm_file="arm/strongarm-elf.h dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
- tmake_file="arm/t-arm arm/t-strongarm-elf"
- out_file=arm/arm.c
- md_file=arm/arm.md
- extra_modes=arm/arm-modes.def
- use_fixproto=yes
- ;;
-strongarm-*-pe)
- tm_file="arm/semi.h arm/aout.h arm/coff.h dbxcoff.h arm/strongarm-coff.h arm/arm.h arm/pe.h arm/strongarm-pe.h"
- tmake_file="arm/t-arm arm/t-strongarm-pe"
- out_file=arm/arm.c
- md_file=arm/arm.md
- extra_modes=arm/arm-modes.def
- extra_options="${extra_options} arm/pe.opt"
- extra_objs=pe.o
- use_fixproto=yes
- ;;
-strongarm-*-kaos*)
- tm_file="arm/strongarm-elf.h dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h kaos.h arm/kaos-strongarm.h"
- tmake_file="arm/t-arm arm/t-strongarm-elf"
- out_file=arm/arm.c
- md_file=arm/arm.md
- extra_modes=arm/arm-modes.def
- ;;
v850e1-*-*)
target_cpu_default="TARGET_CPU_v850e1"
tm_file="dbxelf.h elfos.h svr4.h v850/v850.h"
cxx_target_objs="v850-c.o"
use_fixproto=yes
;;
-vax-*-bsd*) # VAXen running BSD
- tm_file="${tm_file} vax/bsd.h"
- tmake_file=vax/t-memfuncs
- use_collect2=yes
- use_fixproto=yes
- ;;
-vax-*-sysv*) # VAXen running system V
- tm_file="${tm_file} vax/vaxv.h"
- tmake_file=vax/t-memfuncs
- use_fixproto=yes
- ;;
vax-*-netbsdelf*)
tm_file="${tm_file} elfos.h netbsd.h netbsd-elf.h vax/elf.h vax/netbsd-elf.h"
;;
tm_file="vax/vax.h vax/openbsd1.h openbsd.h vax/openbsd.h"
use_collect2=yes
;;
-vax-*-ultrix*) # VAXen running ultrix
- tm_file="${tm_file} vax/ultrix.h"
- tmake_file=vax/t-memfuncs
- use_fixproto=yes
- ;;
-xscale-*-elf)
- tm_file="arm/xscale-elf.h dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h"
- tmake_file="arm/t-arm arm/t-xscale-elf"
- out_file=arm/arm.c
- md_file=arm/arm.md
- extra_modes=arm/arm-modes.def
- use_fixproto=yes
- ;;
-xscale-*-coff)
- tm_file="arm/semi.h arm/aout.h arm/coff.h dbxcoff.h arm/xscale-coff.h arm/arm.h"
- tmake_file="arm/t-arm arm/t-xscale-coff"
- out_file=arm/arm.c
- md_file=arm/arm.md
- extra_modes=arm/arm-modes.def
- use_fixproto=yes
- ;;
xstormy16-*-elf)
# For historical reasons, the target files omit the 'x'.
tm_file="dbxelf.h elfos.h svr4.h stormy16/stormy16.h"
esac
case ${target} in
-i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
- tmake_file="${tmake_file} i386/t-gmm_malloc"
- ;;
i[34567]86-*-linux* | x86_64-*-linux*)
tmake_file="${tmake_file} i386/t-pmm_malloc"
;;
# This block sets nothing except for with_cpu.
if test x$with_cpu = x ; then
case ${target} in
- ep9312-*-*)
- # A Cirrus ARM variant.
- with_cpu="ep9312"
- ;;
i386-*-*)
with_cpu=i386
;;
frv550-*-*linux*)
with_cpu=fr550
;;
- m680[012]0-*-*)
- with_cpu=`echo ${target} | sed 's/-.*$//'`
- ;;
m68k*-*-*)
case "$with_arch" in
"cf")
esac
fi
-# Similarly for --with-float
-if test x$with_float = x; then
- case ${target} in
- ep9312-*-*)
- with_float=hard
- ;;
- esac
-fi
-
# Similarly for --with-schedule.
if test x$with_schedule = x; then
case ${target} in
- hppa1* | parisc1*)
+ hppa1*)
# Override default PA8000 scheduling model.
with_schedule=7100LC
;;
esac
;;
- fido-*-* | m680[012]0-*-* | m68k*-*-*)
+ fido-*-* | m68k*-*-*)
supported_defaults="arch cpu"
case "$with_arch" in
"" | "m68k"| "cf")
esac
;;
- hppa*-*-* | parisc*-*-*)
+ hppa*-*-*)
supported_defaults="arch schedule"
case "$with_arch" in
esac
;;
- mt-*-*)
- supported_defaults="arch"
-
- case "$with_arch" in
- "" \
- | ms1-64-001 \
- | ms1-16-002 \
- | ms1-16-003 \
- | ms2 \
- | "")
- # OK
- ;;
- *)
- echo "Unknown arch used in --with-arch=$with_arch" 1>&2
- exit 1
- ;;
- esac
- ;;
-
powerpc*-*-* | rs6000-*-*)
supported_defaults="cpu float tune"
fi
;;
- hppa*-*-* | parisc*-*-*)
+ hppa*-*-*)
target_cpu_default2="MASK_BIG_SWITCH"
if test x$gas = xyes
then
fi
;;
- fido*-*-* | m680[012]0-*-* | m68k*-*-*)
+ fido*-*-* | m68k*-*-*)
target_cpu_default2=$m68k_cpu_ident
if [ x"$m68k_arch_family" != x ]; then
tmake_file="m68k/t-$m68k_arch_family $tmake_file"
+++ /dev/null
-# This file is empty for now.
-
+++ /dev/null
-/* Definitions of target machine for GNU compiler, for DEC Alpha on Cray
- T3E running Unicos/Mk.
- Copyright (C) 2001, 2002, 2004, 2005, 2007
- Free Software Foundation, Inc.
- Contributed by Roman Lechtchinsky (rl@cs.tu-berlin.de)
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_ABI_UNICOSMK
-#define TARGET_ABI_UNICOSMK 1
-
-/* CAM requires a slash before floating-pointing instruction suffixes. */
-
-#undef TARGET_AS_SLASH_BEFORE_SUFFIX
-#define TARGET_AS_SLASH_BEFORE_SUFFIX 1
-
-/* The following defines are necessary for the standard headers to work
- correctly. */
-
-#define TARGET_OS_CPP_BUILTINS() \
- do { \
- builtin_define ("__unix"); \
- builtin_define ("_UNICOS=205"); \
- builtin_define ("_CRAY"); \
- builtin_define ("_CRAYT3E"); \
- builtin_define ("_CRAYMPP"); \
- builtin_define ("_CRAYIEEE"); \
- builtin_define ("_ADDR64"); \
- builtin_define ("_LD64"); \
- builtin_define ("__UNICOSMK__"); \
- } while (0)
-
-#define SHORT_TYPE_SIZE 32
-
-#undef INT_TYPE_SIZE
-#define INT_TYPE_SIZE 64
-
-/* This is consistent with the definition Cray CC uses. */
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 64
-
-/*
-#define SIZE_TYPE "unsigned int"
-#define PTRDIFF_TYPE "int"
-*/
-
-/* Alphas are operated in big endian mode on the Cray T3E. */
-
-#undef BITS_BIG_ENDIAN
-#undef BYTES_BIG_ENDIAN
-#undef WORDS_BIG_ENDIAN
-#define BITS_BIG_ENDIAN 0
-#define BYTES_BIG_ENDIAN 1
-#define WORDS_BIG_ENDIAN 1
-
-
-/* Every structure's size must be a multiple of this. */
-
-#undef STRUCTURE_SIZE_BOUNDARY
-#define STRUCTURE_SIZE_BOUNDARY 64
-
-/* No data type wants to be aligned rounder than this. */
-
-#undef BIGGEST_ALIGNMENT
-#define BIGGEST_ALIGNMENT 256
-
-/* Include the frame pointer in fixed_regs and call_used_regs as it can't be
- used as a general-purpose register even in frameless functions.
- ??? The global_regs hack is needed for now because -O2 sometimes tries to
- eliminate $15 increments/decrements in frameless functions. */
-
-#undef CONDITIONAL_REGISTER_USAGE
-#define CONDITIONAL_REGISTER_USAGE \
- do { \
- fixed_regs[15] = 1; \
- call_used_regs[15] = 1; \
- global_regs[15] = 1; \
- } while(0)
-\f
-/* The stack frame grows downward. */
-
-#define FRAME_GROWS_DOWNWARD 1
-
-/* Define the offset between two registers, one to be eliminated, and the
- other its replacement, at the start of a routine. This is somewhat
- complicated on the T3E which is why we use a function. */
-
-#undef INITIAL_ELIMINATION_OFFSET
-#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
- do { \
- (OFFSET) = unicosmk_initial_elimination_offset ((FROM), (TO)); \
- } while (0)
-
-
-/* Define this if stack space is still allocated for a parameter passed
- in a register. On the T3E, stack space is preallocated for all outgoing
- arguments, including those passed in registers. To avoid problems, we
- assume that at least 48 bytes (i.e. enough space for all arguments passed
- in registers) are allocated. */
-
-#define REG_PARM_STACK_SPACE(DECL) 48
-#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1
-
-/* If an argument can't be passed in registers even though not all argument
- registers have been used yet, it is passed on the stack in the space
- preallocated for these registers. */
-
-#define STACK_PARMS_IN_REG_PARM_AREA
-
-/* Define a data type for recording info about an argument list
- during the scan of that argument list. This data type should
- hold all necessary information about the function itself
- and about the args processed so far, enough to enable macros
- such as FUNCTION_ARG to determine where the next arg should go.
-
- On Unicos/Mk, this is a structure that contains various information for
- the static subroutine information block (SSIB) and the call information
- word (CIW). */
-
-typedef struct {
-
- /* The overall number of arguments. */
- int num_args;
-
- /* The overall size of the arguments in words. */
- int num_arg_words;
-
- /* The number of words passed in registers. */
- int num_reg_words;
-
- /* If an argument must be passed in the stack, all subsequent arguments
- must be passed there, too. This flag indicates whether this is the
- case. */
- int force_stack;
-
- /* This array indicates whether a word is passed in an integer register or
- a floating point one. */
-
- /* For each of the 6 register arguments, the corresponding flag in this
- array indicates whether the argument is passed in an integer or a
- floating point register. */
- int reg_args_type[6];
-
-} unicosmk_arg_info;
-
-#undef CUMULATIVE_ARGS
-#define CUMULATIVE_ARGS unicosmk_arg_info
-
-/* Initialize a variable CUM of type CUMULATIVE_ARGS for a call to a
- function whose data type is FNTYPE. For a library call, FNTYPE is 0. */
-
-#undef INIT_CUMULATIVE_ARGS
-#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, INDIRECT, N_NAMED_ARGS) \
- do { (CUM).num_args = 0; \
- (CUM).num_arg_words = 0; \
- (CUM).num_reg_words = 0; \
- (CUM).force_stack = 0; \
- } while(0)
-
-/* Update the data in CUM to advance over an argument of mode MODE and data
- type TYPE. (TYPE is null for libcalls where that information may not be
- available.)
-
- On Unicos/Mk, at most 6 words can be passed in registers. Structures
- which fit in two words are passed in registers, larger structures are
- passed on stack. */
-
-#undef FUNCTION_ARG_ADVANCE
-#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
-do { \
- int size; \
- \
- size = ALPHA_ARG_SIZE (MODE, TYPE, NAMED); \
- \
- if (size > 2 \
- || (CUM).num_reg_words + size > 6 \
- || targetm.calls.must_pass_in_stack (MODE, TYPE)) \
- (CUM).force_stack = 1; \
- \
- if (! (CUM).force_stack) \
- { \
- int i; \
- int isfloat; \
- isfloat = (GET_MODE_CLASS (MODE) == MODE_COMPLEX_FLOAT \
- || GET_MODE_CLASS (MODE) == MODE_FLOAT); \
- for (i = 0; i < size; i++) \
- { \
- (CUM).reg_args_type[(CUM).num_reg_words] = isfloat; \
- ++(CUM).num_reg_words; \
- } \
- } \
- (CUM).num_arg_words += size; \
- ++(CUM).num_args; \
-} while(0)
-
-/* This ensures that $15 increments/decrements in leaf functions won't get
- eliminated. */
-
-#undef EPILOGUE_USES
-#define EPILOGUE_USES(REGNO) ((REGNO) == 26 || (REGNO) == 15)
-
-/* Would have worked, only the stack doesn't seem to be executable
-#undef TRAMPOLINE_TEMPLATE
-#define TRAMPOLINE_TEMPLATE(FILE) \
-do { fprintf (FILE, "\tbr $1,0\n"); \
- fprintf (FILE, "\tldq $0,12($1)\n"); \
- fprintf (FILE, "\tldq $1,20($1)\n"); \
- fprintf (FILE, "\tjmp $31,(r0)\n"); \
- fprintf (FILE, "\tbis $31,$31,$31\n"); \
- fprintf (FILE, "\tbis $31,$31,$31\n"); \
-} while (0) */
-
-/* We don't support nested functions (yet). */
-
-#undef TRAMPOLINE_TEMPLATE
-#define TRAMPOLINE_TEMPLATE(FILE) gcc_unreachable ()
-\f
-/* Specify the machine mode that this machine uses for the index in the
- tablejump instruction. On Unicos/Mk, we don't support relative case
- vectors yet, thus the entries should be absolute addresses. */
-
-#undef CASE_VECTOR_MODE
-#define CASE_VECTOR_MODE DImode
-
-#undef CASE_VECTOR_PC_RELATIVE
-
-/* Define this as 1 if `char' should by default be signed; else as 0. */
-/* #define DEFAULT_SIGNED_CHAR 1 */
-
-/* There are no read-only sections on Unicos/Mk. */
-
-#undef READONLY_DATA_SECTION_ASM_OP
-
-/* We take care of this in unicosmk_file_start. */
-
-#undef ASM_OUTPUT_SOURCE_FILENAME
-
-/* This is how to output a label for a jump table. Arguments are the same as
- for (*targetm.asm_out.internal_label), except the insn for the jump table is
- passed. */
-
-#undef ASM_OUTPUT_CASE_LABEL
-#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,TABLEINSN) \
- (*targetm.asm_out.internal_label) (FILE, PREFIX, NUM)
-
-/* CAM has some restrictions with respect to string literals. It won't
- accept lines with more that 256 characters which means that we have
- to split long strings. Moreover, it only accepts escape sequences of
- the form \nnn in the range 0 to 127. We generate .byte directives for
- escapes characters greater than 127. And finally, ` must be escaped. */
-
-#undef ASM_OUTPUT_ASCII
-#define ASM_OUTPUT_ASCII(MYFILE, MYSTRING, MYLENGTH) \
- do { \
- FILE *_hide_asm_out_file = (MYFILE); \
- const unsigned char *_hide_p = (const unsigned char *) (MYSTRING); \
- int _hide_thissize = (MYLENGTH); \
- int _size_so_far = 0; \
- { \
- FILE *asm_out_file = _hide_asm_out_file; \
- const unsigned char *p = _hide_p; \
- int thissize = _hide_thissize; \
- int in_ascii = 0; \
- int i; \
- \
- for (i = 0; i < thissize; i++) \
- { \
- register int c = p[i]; \
- \
- if (c > 127) \
- { \
- if (in_ascii) \
- { \
- fprintf (asm_out_file, "\"\n"); \
- in_ascii = 0; \
- } \
- \
- fprintf (asm_out_file, "\t.byte\t%d\n", c); \
- } \
- else \
- { \
- if (! in_ascii) \
- { \
- fprintf (asm_out_file, "\t.ascii\t\""); \
- in_ascii = 1; \
- _size_so_far = 0; \
- } \
- else if (_size_so_far >= 64) \
- { \
- fprintf (asm_out_file, "\"\n\t.ascii\t\""); \
- _size_so_far = 0; \
- } \
- \
- if (c == '\"' || c == '\\' || c == '`') \
- putc ('\\', asm_out_file); \
- if (c >= ' ') \
- putc (c, asm_out_file); \
- else \
- fprintf (asm_out_file, "\\%.3o", c); \
- ++ _size_so_far; \
- } \
- } \
- if (in_ascii) \
- fprintf (asm_out_file, "\"\n"); \
- } \
- } while(0)
-
-/* This is how to output an element of a case-vector that is absolute. */
-
-#undef ASM_OUTPUT_ADDR_VEC_ELT
-#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
- fprintf (FILE, "\t.quad $L%d\n", (VALUE))
-
-/* This is how to output an element of a case-vector that is relative.
- (Unicos/Mk does not use such vectors yet). */
-
-#undef ASM_OUTPUT_ADDR_DIFF_ELT
-#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) gcc_unreachable ()
-
-/* We can't output case vectors in the same section as the function code
- because CAM doesn't allow data definitions in code sections. Thus, we
- simply record the case vectors and put them in a separate section after
- the function. */
-
-#define ASM_OUTPUT_ADDR_VEC(LAB,VEC) \
- unicosmk_defer_case_vector ((LAB),(VEC))
-
-#define ASM_OUTPUT_ADDR_DIFF_VEC(LAB,VEC) gcc_unreachable ()
-
-/* This is how to output an assembler line that says to advance the location
- counter to a multiple of 2**LOG bytes. Annoyingly, CAM always uses zeroes
- to fill the unused space which does not work in code sections. We have to
- be careful not to use the .align directive in code sections. */
-
-#undef ASM_OUTPUT_ALIGN
-#define ASM_OUTPUT_ALIGN(STREAM,LOG) unicosmk_output_align (STREAM, LOG)
-
-/* This is how to advance the location counter by SIZE bytes. */
-
-#undef ASM_OUTPUT_SKIP
-#define ASM_OUTPUT_SKIP(STREAM,SIZE) \
- fprintf ((STREAM), "\t.byte\t0:"HOST_WIDE_INT_PRINT_UNSIGNED"\n",\
- (SIZE));
-
-/* This says how to output an assembler line to define a global common
- symbol. We need the alignment information because it has to be supplied
- in the section header. */
-
-#undef ASM_OUTPUT_COMMON
-#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
- unicosmk_output_common ((FILE), (NAME), (SIZE), (ALIGN))
-
-/* This says how to output an assembler line to define a local symbol. */
-
-#undef ASM_OUTPUT_LOCAL
-#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
- do { switch_to_section (data_section); \
- fprintf (FILE, "\t.align\t%d\n", floor_log2 ((ALIGN) / BITS_PER_UNIT));\
- ASM_OUTPUT_LABEL ((FILE), (NAME)); \
- fprintf (FILE, "\t.byte 0:"HOST_WIDE_INT_PRINT_UNSIGNED"\n",(SIZE));\
- } while (0)
-
-/* CAM does not allow us to declare a symbol as external first and then
- define it in the same file later. Thus, we keep a list of all external
- references, remove all symbols defined locally from it and output it at
- the end of the asm file. */
-
-#define ASM_OUTPUT_EXTERNAL(FILE,DECL,NAME) \
- unicosmk_add_extern ((NAME))
-
-#define ASM_OUTPUT_EXTERNAL_LIBCALL(STREAM,SYMREF) \
- unicosmk_add_extern (XSTR ((SYMREF), 0))
-
-/* This is how to declare an object. We don't have to output anything if
- it is a global variable because those go into unique `common' sections
- and the section name is globally visible. For local variables, we simply
- output the label. In any case, we have to record that no extern
- declaration should be generated for the symbol. */
-
-#define ASM_DECLARE_OBJECT_NAME(STREAM,NAME,DECL) \
- do { tree name_tree; \
- name_tree = get_identifier ((NAME)); \
- TREE_ASM_WRITTEN (name_tree) = 1; \
- if (!TREE_PUBLIC (DECL)) \
- { \
- assemble_name (STREAM, NAME); \
- fputs (":\n", STREAM); \
- } \
- } while(0)
-
-/* Switch into a generic section. */
-#define TARGET_ASM_NAMED_SECTION unicosmk_asm_named_section
-#define TARGET_ASM_INIT_SECTIONS unicosmk_init_sections
-
-#undef ASM_OUTPUT_MAX_SKIP_ALIGN
-#define ASM_OUTPUT_MAX_SKIP_ALIGN(STREAM,POWER,MAXSKIP)
-\f
-#undef NM_FLAGS
-
-#undef OBJECT_FORMAT_COFF
-
-/* We cannot generate debugging information on Unicos/Mk. */
-
-#undef SDB_DEBUGGING_INFO
-#undef MIPS_DEBUGGING_INFO
-#undef DBX_DEBUGGING_INFO
-#undef DWARF2_DEBUGGING_INFO
-#undef DWARF2_UNWIND_INFO
-#undef INCOMING_RETURN_ADDR_RTX
-#undef PREFERRED_DEBUGGING_TYPE
-
-/* We don't need a start file. */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-/* These are the libraries we have to link with.
- ??? The Craylibs directory should be autoconfed. */
-#undef LIB_SPEC
-#define LIB_SPEC "-L/opt/ctl/craylibs/craylibs -lu -lm -lc -lsma"
-
-#define EH_FRAME_IN_DATA_SECTION 1
+++ /dev/null
-/* Definitions of target machine for GNU compiler.
- kaOS on arm architecture version.
- Copyright (C) 2003, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (ARM/kaOS[ELF])", stderr);
-
+++ /dev/null
-/* Definitions of target machine for GNU compiler.
- kaOS on strongarm architecture version.
- Copyright (C) 2003, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (StrongARM/kaOS[ELF])", stderr);
-
+++ /dev/null
-/* Definitions for StrongARM systems using COFF
- Copyright (C) 1999, 2007 Free Software Foundation, Inc.
- Contributed by Catherine Moore <clm@cygnus.com>
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-/* Run-time Target Specification. */
-#ifndef SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_strongarm
-#endif
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (StrongARM/COFF)", stderr);
+++ /dev/null
-/* Definitions for non-Linux based StrongARM systems using ELF
- Copyright (C) 1999, 2001, 2007 Free Software Foundation, Inc.
- Contributed by Catherine Moore <clm@cygnus.com>
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-/* Run-time Target Specification. */
-#ifndef TARGET_VERSION
-#define TARGET_VERSION fputs (" (StrongARM/ELF non-Linux)", stderr);
-#endif
-
-#ifndef SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_strongarm
-#endif
-
+++ /dev/null
-/* Definitions of target machine for GNU compiler, for ARM with PE obj format.
- Copyright (C) 1999, 2007 Free Software Foundation, Inc.
- Contributed by Doug Evans (dje@cygnus.com).
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (StrongARM/PE)", stderr);
+++ /dev/null
-LIB1ASMSRC = arm/lib1funcs.asm
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- echo '#ifndef __ARMEB__' >> fp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
- echo '#endif' >> fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#ifndef __ARMEB__' > dp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
- echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c
- echo '#endif' >> dp-bit.c
- cat $(srcdir)/config/fp-bit.c >> dp-bit.c
-
-pe.o: $(srcdir)/config/arm/pe.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(RTL_H) output.h flags.h $(TREE_H) expr.h toplev.h $(TM_P_H)
- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/config/arm/pe.c
-
-MULTILIB_OPTIONS = mhard-float/msoft-float
-MULTILIB_DIRNAMES = fpu soft
-MULTILIB_MATCHES =
-EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# Currently there is a bug somewhere in GCC's alias analysis
-# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
-# Disabling function inlining is a workaround for this problem.
-TARGET_LIBGCC2_CFLAGS = -fno-inline
+++ /dev/null
-LIB1ASMSRC = arm/lib1funcs.asm
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- echo '#ifndef __ARMEB__' >> fp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
- echo '#endif' >> fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#ifndef __ARMEB__' > dp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
- echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c
- echo '#endif' >> dp-bit.c
- cat $(srcdir)/config/fp-bit.c >> dp-bit.c
-
-MULTILIB_OPTIONS = mbig-endian
-MULTILIB_DIRNAMES = be
-MULTILIB_EXCEPTIONS =
-MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle
-
-# Note XScale does not support hard FP
-
-MULTILIB_OPTIONS += mthumb-interwork
-MULTILIB_DIRNAMES += interwork
-
-MULTILIB_OPTIONS += mthumb
-MULTILIB_DIRNAMES += thumb
-MULTILIB_EXCEPTIONS += *mhard-float/*mthumb*
-
-MULTILIB_REDUNDANT_DIRS = interwork/thumb=thumb
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# Currently there is a bug somewhere in GCC's alias analysis
-# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
-# Disabling function inlining is a workaround for this problem.
-TARGET_LIBGCC2_CFLAGS = -fno-inline
+++ /dev/null
-LIB1ASMSRC = arm/lib1funcs.asm
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- echo '#ifndef __ARMEB__' >> fp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c
- echo '#endif' >> fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#ifndef __ARMEB__' > dp-bit.c
- echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c
- echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c
- echo '#endif' >> dp-bit.c
- cat $(srcdir)/config/fp-bit.c >> dp-bit.c
-
-MULTILIB_OPTIONS = mbig-endian
-MULTILIB_DIRNAMES = be
-MULTILIB_EXCEPTIONS =
-MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle
-
-# Note XScale does not support hard FP
-
-MULTILIB_OPTIONS += mthumb-interwork
-MULTILIB_DIRNAMES += interwork
-
-MULTILIB_OPTIONS += mthumb
-MULTILIB_DIRNAMES += thumb
-MULTILIB_EXCEPTIONS += *mhard-float/*mthumb*
-
-MULTILIB_REDUNDANT_DIRS = interwork/thumb=thumb
-
-# The iWMMXt multilibs are suppressed for now because gcc only
-# supports generating them with the IWMMXT or AAPCS ABIs, neither of
-# which is the default. Until GCC can generate code for an iWMMXt
-# which will work with the default ABI it is not possible to safely
-# generate these multilibs.
-#
-# MULTILIB_OPTIONS += mcpu=iwmmxt
-# MULTILIB_DIRNAMES += iwmmxt
-# MULTILIB_REDUNDANT_DIRS += interwork/thumb/iwmmxt=thumb
-
-EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# Currently there is a bug somewhere in GCC's alias analysis
-# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
-# Disabling function inlining is a workaround for this problem.
-TARGET_LIBGCC2_CFLAGS = -fno-inline
-
-# Assemble startup files.
-$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
- -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
-
-$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
- -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm
+++ /dev/null
-/* Definitions for XScale systems using COFF
- Copyright (C) 1999, 2000, 2001, 2007 Free Software Foundation, Inc.
- Contributed by Catherine Moore <clm@cygnus.com>
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-/* Run-time Target Specification. */
-#undef SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_xscale
-
-#undef SUBTARGET_EXTRA_ASM_SPEC
-#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale}"
-
-#undef MULTILIB_DEFAULTS
-#define MULTILIB_DEFAULTS \
- { "mlittle-endian", "mno-thumb-interwork", "marm" }
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (XScale/COFF)", stderr);
+++ /dev/null
-/* Definitions for XScale architectures using ELF
- Copyright (C) 1999, 2000, 2001, 2007 Free Software Foundation, Inc.
- Contributed by Catherine Moore <clm@cygnus.com>
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-/* Run-time Target Specification. */
-#ifndef TARGET_VERSION
-#define TARGET_VERSION fputs (" (XScale/ELF non-Linux)", stderr);
-#endif
-
-#ifndef SUBTARGET_CPU_DEFAULT
-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_xscale
-#endif
-
-/* Note - there are three possible -mfpu= arguments that can be passed to
- the assembler:
-
- -mfpu=softvfp This is the default. It indicates thats doubles are
- stored in a format compatible with the VFP
- specification. This is the newer double format, whereby
- the endian-ness of the doubles matches the endian-ness
- of the memory architecture.
-
- -mfpu=fpa This is when -mhard-float is specified.
- [It is not known if any XScale's have been made with
- hardware floating point support, but nevertheless this
- is what happens].
-
- -mfpu=softfpa This is when -msoft-float is specified.
- This is the normal behavior of other arm configurations,
- which for backwards compatibility purposes default to
- supporting the old FPA format which was always big
- endian, regardless of the endian-ness of the memory
- system. */
-
-#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
- %{mhard-float:-mfpu=fpa} \
- %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-
-#ifndef MULTILIB_DEFAULTS
-#define MULTILIB_DEFAULTS \
- { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
-#endif
+++ /dev/null
-/* Definitions of target machine for GNU compiler.
- Sun Chorus OS big-endian
- Copyright (c) 2001, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#define DWARF2_DEBUGGING_INFO 1
-
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (Sun Chorus OS Embedded)");
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
-/* Type used for wchar_t, as a string used in a declaration. */
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
-
-#undef LINK_SPEC
-#define LINK_SPEC ""
+++ /dev/null
-/* Definitions for GCC. Part of the machine description for CRIS.
- Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
- Contributed by Axis Communications. Written by Hans-Peter Nilsson.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-/* After the first "Node:" comment comes all preprocessor directives and
- attached declarations described in the info files, the "Using and
- Porting GCC" manual (uapgcc), in the same order as found in the "Target
- macros" section in the gcc-2.9x CVS edition of 2000-03-17. FIXME: Not
- really, but needs an update anyway.
-
- There is no generic copy-of-uapgcc comment, you'll have to see uapgcc
- for that. If applicable, there is a CRIS-specific comment. The order
- of macro definitions follow the order in the manual. Every section in
- the manual (node in the info pages) has an introductory `Node:
- <subchapter>' comment. If no macros are defined for a section, only
- the section-comment is present. */
-
-/* This file defines the macros for a.out that are not covered by cris.h.
- Many macros are copied from elfos.h and should be in some generic
- config/gas-aout.h. */
-
-/* Node: Driver */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{melinux:crt0.o%s}\
- %{!melinux:%{sim*:crt1.o%s}%{!sim*:crt0.o%s}}"
-
-/* Override cris.h define. */
-#undef ENDFILE_SPEC
-
-#undef CRIS_CPP_SUBTARGET_SPEC
-#define CRIS_CPP_SUBTARGET_SPEC \
- "%{melinux:-D__gnu_linux__ -D__linux__ -D__unix__ -D__elinux__ -D__uclinux__\
- %{!ansi:%{!std=*:%{!undef:-Dlinux -Dunix -Delinux -Duclinux}}}}\
- %{mbest-lib-options:\
- %{!moverride-best-lib-options:\
- %{!march=*:%{!metrax*:%{!mcpu=*:-D__tune_v8 -D__CRIS_arch_tune=8}}}}}"
-
-#undef CRIS_CC1_SUBTARGET_SPEC
-#define CRIS_CC1_SUBTARGET_SPEC \
- "%{mbest-lib-options:\
- %{!moverride-best-lib-options:\
- %{!march=*:%{!mcpu=*:-mtune=v8}}}}"
-
-#undef CRIS_ASM_SUBTARGET_SPEC
-#define CRIS_ASM_SUBTARGET_SPEC "--em=crisaout"
-
-#undef CRIS_LINK_SUBTARGET_SPEC
-#define CRIS_LINK_SUBTARGET_SPEC \
- "-mcrisaout\
- %{sim2:%{!T*:-Tdata 0x4000000 -Tbss 0x8000000}}\
- %{melinux:-Ur -d\
- %{!shlib:%{!symbolic:-Bstatic}}\
- %{shlib:-Bdynamic}\
- %{symbolic:-Bdynamic}\
- %{static:-Bstatic}}\
- %{melinux-stacksize=*:-defsym __Stacksize=%*}"
-
-/* Previously controlled by target_flags. */
-#undef TARGET_ELF
-#define TARGET_ELF 0
-
-#undef CRIS_SUBTARGET_HANDLE_OPTION
-#define CRIS_SUBTARGET_HANDLE_OPTION(CODE, ARG, VALUE) \
- do \
- { \
- switch (CODE) \
- { \
- case OPT_melinux: \
- target_flags \
- |= (MASK_SVINTO \
- + MASK_STACK_ALIGN \
- + MASK_CONST_ALIGN \
- + MASK_DATA_ALIGN \
- + MASK_ETRAX4_ADD \
- + MASK_ALIGN_BY_32); \
- break; \
- \
- default: \
- break; \
- } \
- } \
- while (0)
-
-#undef CRIS_SUBTARGET_DEFAULT
-#define CRIS_SUBTARGET_DEFAULT 0
-
-
-/* Node: Run-time Target */
-
-/* For the cris-*-aout subtarget. */
-#undef TARGET_OS_CPP_BUILTINS
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("__AOUT__"); \
- } \
- while (0)
-
-
-/* Node: Storage Layout */
-
-/* All sections but the .bss is rounded up to a 4-byte multiple size. */
-#define MAX_OFILE_ALIGNMENT 32
-
-
-/* Node: Data Output */
-
-#define ESCAPES \
-"\1\1\1\1\1\1\1\1btn\1fr\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
-\0\0\"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
-\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\\\0\0\0\
-\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1\
-\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
-\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
-\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\
-\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1\1"
-
-/* Some svr4 assemblers have a limit on the number of characters which
- can appear in the operand of a .string directive. If your assembler
- has such a limitation, you should define STRING_LIMIT to reflect that
- limit. Note that at least some svr4 assemblers have a limit on the
- actual number of bytes in the double-quoted string, and that they
- count each character in an escape sequence as one byte. Thus, an
- escape sequence like \377 would count as four bytes.
-
- If your target assembler doesn't support the .string directive, you
- should define this to zero. */
-
-#define STRING_LIMIT ((unsigned) 256)
-
-#define STRING_ASM_OP "\t.string\t"
-#define ASCII_DATA_ASM_OP "\t.ascii\t"
-#define TYPE_ASM_OP "\t.type\t"
-#define SIZE_ASM_OP "\t.size\t"
-#define TYPE_OPERAND_FMT "@%s"
-
-/* The routine used to output NUL terminated strings. We use a special
- version of this for most svr4 targets because doing so makes the
- generated assembly code more compact (and thus faster to assemble)
- as well as more readable, especially for targets like the i386
- (where the only alternative is to output character sequences as
- comma separated lists of numbers). */
-
-#define ASM_OUTPUT_LIMITED_STRING(FILE, STR) \
- do \
- { \
- register const unsigned char *_limited_str = \
- (const unsigned char *) (STR); \
- register unsigned ch; \
- \
- fprintf ((FILE), "%s\"", STRING_ASM_OP); \
- \
- for (; (ch = *_limited_str); _limited_str++) \
- { \
- register int escape; \
- \
- switch (escape = ESCAPES[ch]) \
- { \
- case 0: \
- putc (ch, (FILE)); \
- break; \
- case 1: \
- fprintf ((FILE), "\\%03o", ch); \
- break; \
- default: \
- putc ('\\', (FILE)); \
- putc (escape, (FILE)); \
- break; \
- } \
- } \
- \
- fprintf ((FILE), "\"\n"); \
- } \
- while (0)
-
-/* The routine used to output sequences of byte values. We use a special
- version of this for most svr4 targets because doing so makes the
- generated assembly code more compact (and thus faster to assemble)
- as well as more readable. Note that if we find subparts of the
- character sequence which end with NUL (and which are shorter than
- STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING. */
-
-#undef ASM_OUTPUT_ASCII
-#define ASM_OUTPUT_ASCII(FILE, STR, LENGTH) \
- do \
- { \
- register const unsigned char *_ascii_bytes = \
- (const unsigned char *) (STR); \
- register const unsigned char *limit = _ascii_bytes + (LENGTH); \
- register unsigned bytes_in_chunk = 0; \
- \
- for (; _ascii_bytes < limit; _ascii_bytes++) \
- { \
- register const unsigned char *p; \
- \
- if (bytes_in_chunk >= 60) \
- { \
- fprintf ((FILE), "\"\n"); \
- bytes_in_chunk = 0; \
- } \
- \
- for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \
- continue; \
- \
- if (p < limit && (p - _ascii_bytes) <= (long)STRING_LIMIT) \
- { \
- if (bytes_in_chunk > 0) \
- { \
- fprintf ((FILE), "\"\n"); \
- bytes_in_chunk = 0; \
- } \
- \
- ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); \
- _ascii_bytes = p; \
- } \
- else \
- { \
- register int escape; \
- register unsigned ch; \
- \
- if (bytes_in_chunk == 0) \
- fprintf ((FILE), "%s\"", ASCII_DATA_ASM_OP); \
- \
- switch (escape = ESCAPES[ch = *_ascii_bytes]) \
- { \
- case 0: \
- putc (ch, (FILE)); \
- bytes_in_chunk++; \
- break; \
- case 1: \
- fprintf ((FILE), "\\%03o", ch); \
- bytes_in_chunk += 4; \
- break; \
- default: \
- putc ('\\', (FILE)); \
- putc (escape, (FILE)); \
- bytes_in_chunk += 2; \
- break; \
- } \
- } \
- } \
- \
- if (bytes_in_chunk > 0) \
- fprintf ((FILE), "\"\n"); \
- } \
- while (0)
-
-
-/* Node: Label Output */
-
-#define SET_ASM_OP "\t.set\t"
-
-#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \
- (*targetm.asm_out.globalize_label) (FILE, XSTR (FUN, 0))
-
-#define ASM_WEAKEN_LABEL(FILE, NAME) \
- do \
- { \
- fputs ("\t.weak\t", (FILE)); \
- assemble_name ((FILE), (NAME)); \
- fputc ('\n', (FILE)); \
- } \
- while (0)
-
-#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
- do \
- { \
- ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function"); \
- ASM_OUTPUT_LABEL(FILE, NAME); \
- } \
- while (0)
-
-#define ASM_DECLARE_OBJECT_NAME(FILE, NAME, DECL) \
- do \
- { \
- HOST_WIDE_INT size; \
- \
- ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \
- \
- size_directive_output = 0; \
- if (!flag_inhibit_size_directive \
- && (DECL) && DECL_SIZE (DECL)) \
- { \
- size_directive_output = 1; \
- size = int_size_in_bytes (TREE_TYPE (DECL)); \
- ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size); \
- } \
- \
- ASM_OUTPUT_LABEL (FILE, NAME); \
- } \
- while (0)
-
-#undef ASM_FINISH_DECLARE_OBJECT
-#define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)\
- do \
- { \
- const char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0); \
- HOST_WIDE_INT size; \
- \
- if (!flag_inhibit_size_directive \
- && DECL_SIZE (DECL) \
- && ! AT_END && TOP_LEVEL \
- && DECL_INITIAL (DECL) == error_mark_node \
- && !size_directive_output) \
- { \
- size_directive_output = 1; \
- size = int_size_in_bytes (TREE_TYPE (DECL)); \
- ASM_OUTPUT_SIZE_DIRECTIVE (FILE, name, size); \
- } \
- } \
- while (0)
-
-#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \
- do \
- { \
- if (!flag_inhibit_size_directive) \
- ASM_OUTPUT_MEASURED_SIZE (FILE, FNAME); \
- } \
- while (0)
-
-/* The configure machinery invokes the assembler without options, which is
- not how gcc invokes it. Without options, the multi-target assembler
- will probably be found, which is ELF by default. To counter that, we
- need to override ELF auto-host.h config stuff which we know collides
- with a.out. */
-#undef HAVE_GAS_HIDDEN
-
-
-/* Node: Alignment Output */
-
-#define SKIP_ASM_OP "\t.zero\t"
-
-#undef ASM_OUTPUT_SKIP
-#define ASM_OUTPUT_SKIP(FILE, SIZE) \
- fprintf (FILE, "%s%u\n", SKIP_ASM_OP, (int)(SIZE))
-
-/* Node: All Debuggers */
-
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
-
-
-/* Node: Misc */
-
-#define HANDLE_SYSV_PRAGMA 1
-
-/* In theory, this one isn't necessary, but over time, external tools have
- been primed on names with "." rather than "$". */
-#define NO_DOLLAR_IN_LABEL
-
-/* These are undocumented, but to keep a single
- CRIS_ASM_OUTPUT_ALIGNED_DECL_COMMON, we set this to an asm that will
- emit an error if ever output. It will not be emitted for a.out modulo
- careless hacking. */
-#define COMMON_ASM_OP "\t.err\t"
-#define LOCAL_ASM_OP "\t.err\t"
-
-#if defined(__CRIS__) && defined (__AOUT__) && defined (IN_GCC)
-
-#define CRIS_ABI_VERSION_SYMBOL_STRING ".$CRIS_ABI_V2"
-
-/* Make all a.out library functions have undefined references to the
- .$CRIS_ABI_V2 symbol, so it will be picked up. Used by GDB. GDB has
- a bug with reading a.out symbols; it does not see the GNU weak
- extensions, so we can't have .$CRIS_ABI_V2 weak. Weak. */
-__asm__ (".set .$abi_referer," CRIS_ABI_VERSION_SYMBOL_STRING);
-#endif
-
-/*
- * Local variables:
- * eval: (c-set-style "gnu")
- * indent-tabs-mode: t
- * End:
- */
+++ /dev/null
-; a.out-specific options for the CRIS port of the compiler.
-
-; Copyright (C) 2005, 2007 Free Software Foundation, Inc.
-;
-; This file is part of GCC.
-;
-; GCC 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 3, or (at your option) any later
-; version.
-;
-; GCC 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 GCC; see the file COPYING3. If not see
-; <http://www.gnu.org/licenses/>.
-
-; Legacy option.
-maout
-Target Report RejectNegative Undocumented
-
-melinux
-Target Report RejectNegative
-Compile for the MMU-less Etrax 100-based elinux system
-
-;; We don't parse it currently; it's just passed on to the linker.
-;; We might want to do something here someday.
-melinux-stacksize=
-Target Report RejectNegative Joined Var(cris_elinux_stacksize_str)
--melinux-stacksize=SIZE For elinux, request a specified stack-size for this program
+++ /dev/null
-LIB2FUNCS_STATIC_EXTRA = \
- tmpabi_symbol.c $(srcdir)/config/cris/mulsi3.asm
-
-MULTILIB_OPTIONS = melinux
-MULTILIB_DIRNAMES = elinux
-MULTILIB_EXTRA_OPTS = mbest-lib-options
-
-INSTALL_LIBGCC = install-multilib
-LIBGCC = stmp-multilib
-
-tmpabi_symbol.c: $(srcdir)/config/cris/cris_abi_symbol.c
- cp $(srcdir)/config/cris/cris_abi_symbol.c $@
+++ /dev/null
-/* Definitions for Intel x86 running BeOS
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2007
- Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-
-#define TARGET_VERSION fprintf (stderr, " (i386 BeOS/ELF)");
-
-/* Change debugging to Dwarf2. */
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-
-/* The SVR4 ABI for the i386 says that records and unions are returned
- in memory. */
-#undef DEFAULT_PCC_STRUCT_RETURN
-#define DEFAULT_PCC_STRUCT_RETURN 1
-
-#undef ASM_COMMENT_START
-#define ASM_COMMENT_START " #"
-
-#undef DBX_REGISTER_NUMBER
-#define DBX_REGISTER_NUMBER(n) \
- (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
-
-/* Output assembler code to FILE to increment profiler label # LABELNO
- for profiling a function entry. */
-
-#undef MCOUNT_NAME
-#define MCOUNT_NAME "mcount"
-
-#undef SIZE_TYPE
-#define SIZE_TYPE "long unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "long int"
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "short unsigned int"
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 16
-
-#define TARGET_DECLSPEC 1
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("__BEOS__"); \
- builtin_define ("__INTEL__"); \
- builtin_define ("_X86_"); \
- builtin_define ("__stdcall=__attribute__((__stdcall__))"); \
- builtin_define ("__cdecl=__attribute__((__cdecl__))"); \
- builtin_assert ("system=beos"); \
- } \
- while (0)
-
-/* BeOS uses lots of multichars, so don't warn about them unless the
- user explicitly asks for the warnings with -Wmultichar. Note that
- CC1_SPEC is used for both cc1 and cc1plus. */
-
-#undef CC1_SPEC
-#define CC1_SPEC "%{!no-fpic:%{!fno-pic:%{!fno-pie:%{!fpie:%{!fPIC:%{!fPIE:-fpic}}}}}} %{!Wmultichar: -Wno-multichar} %(cc1_cpu) %{profile:-p}"
-
-#undef CC1PLUS_SPEC
-#define CC1PLUS_SPEC "%{!Wctor-dtor-privacy:-Wno-ctor-dtor-privacy}"
-
-/* Provide a LINK_SPEC appropriate for BeOS. Here we provide support
- for the special GCC options -static and -shared, which allow us to
- link things in one of these three modes by applying the appropriate
- combinations of options at link-time. */
-
-/* If ELF is the default format, we should not use /lib/elf. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "%{!o*:-o %b} -m elf_i386_be -shared -Bsymbolic %{nostart:-e 0}"
-
-/* Provide start and end file specs appropriate to glibc. */
-
-/* LIB_SPEC for BeOS */
-#undef LIB_SPEC
-#define LIB_SPEC "-lnet -lroot"
-
-/* gcc runtime lib is built into libroot.so on BeOS */
-/* ??? This is gonna be lovely when the next release of gcc has
- some new symbol in, so that links start failing. */
-#undef LIBGCC_SPEC
-#define LIBGCC_SPEC ""
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "crti.o%s crtbegin.o%s %{!nostart:start_dyn.o%s} init_term_dyn.o%s %{p:i386-mcount.o%s}"
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "crtend.o%s crtn.o%s"
-
-/* A C statement (sans semicolon) to output to the stdio stream
- FILE the assembler definition of uninitialized global DECL named
- NAME whose size is SIZE bytes and alignment is ALIGN bytes.
- Try to use asm_output_aligned_bss to implement this macro. */
-
-#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
- asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
-
-/* A C statement to output to the stdio stream FILE an assembler
- command to advance the location counter to a multiple of 1<<LOG
- bytes if it is within MAX_SKIP bytes.
-
- This is used to align code labels according to Intel recommendations. */
-
-#ifdef HAVE_GAS_MAX_SKIP_P2ALIGN
-#define ASM_OUTPUT_MAX_SKIP_ALIGN(FILE,LOG,MAX_SKIP) \
- if ((LOG)!=0) \
- if ((MAX_SKIP)==0) fprintf ((FILE), "\t.p2align %d\n", (LOG)); \
- else fprintf ((FILE), "\t.p2align %d,,%d\n", (LOG), (MAX_SKIP))
-#endif
-
-/* For native compiler, use standard BeOS include file search paths
- rooted in /boot/develop/headers. For a cross compiler, don't
- expect the host to use the BeOS directory scheme, and instead look
- for the BeOS include files relative to TOOL_INCLUDE_DIR. Yes, we
- use ANSI string concatenation here (FIXME) */
-
-#ifndef CROSS_DIRECTORY_STRUCTURE
-#undef INCLUDE_DEFAULTS
-#define INCLUDE_DEFAULTS \
- { \
- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 },\
- { GCC_INCLUDE_DIR, "GCC", 0, 0 },\
- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1}, \
- { "/boot/develop/headers/be/add-ons/graphics", 0, 0, 0 },\
- { "/boot/develop/headers/be/devel", 0, 0, 0 },\
- { "/boot/develop/headers/be/translation", 0, 0, 0 },\
- { "/boot/develop/headers/be/mail", 0, 0, 0 },\
- { "/boot/develop/headers/gnu", 0, 0, 0 },\
- { "/boot/develop/headers/be/drivers", 0, 0, 0 },\
- { "/boot/develop/headers/be/opengl", 0, 0, 0 },\
- { "/boot/develop/headers/be/game", 0, 0, 0 },\
- { "/boot/develop/headers/be/support", 0, 0, 0 },\
- { "/boot/develop/headers/be/storage", 0, 0, 0 },\
- { "/boot/develop/headers/be/kernel", 0, 0, 0 },\
- { "/boot/develop/headers/be/net", 0, 0, 0 },\
- { "/boot/develop/headers/be/midi", 0, 0, 0 },\
- { "/boot/develop/headers/be/midi2", 0, 0, 0 },\
- { "/boot/develop/headers/be/media", 0, 0, 0 },\
- { "/boot/develop/headers/be/interface", 0, 0, 0 },\
- { "/boot/develop/headers/be/device", 0, 0, 0 },\
- { "/boot/develop/headers/be/app", 0, 0, 0 },\
- { "/boot/develop/headers/be/precompiled", 0, 0, 0 },\
- { "/boot/develop/headers/be/add-ons/input_server", 0, 0, 0 },\
- { "/boot/develop/headers/be/add-ons/net_server", 0, 0, 0 },\
- { "/boot/develop/headers/be/add-ons/screen_saver", 0, 0, 0 },\
- { "/boot/develop/headers/be/add-ons/tracker", 0, 0, 0 },\
- { "/boot/develop/headers/be/be_apps/Deskbar", 0, 0, 0 },\
- { "/boot/develop/headers/be/be_apps/NetPositive", 0, 0, 0 },\
- { "/boot/develop/headers/be/be_apps/Tracker", 0, 0, 0 },\
- { "/boot/develop/headers/be/drivers/tty", 0, 0, 0 },\
- { "/boot/develop/headers/be/net/netinet", 0, 0, 0 },\
- { "/boot/develop/headers/be/storage", 0, 0, 0 },\
- { "/boot/develop/headers/be", 0, 0, 0 },\
- { "/boot/develop/headers/cpp", 0, 0, 0 },\
- { "/boot/develop/headers/posix", 0, 0, 0 },\
- { "/boot/develop/headers", 0, 0, 0 }, \
- { 0, 0, 0, 0 } \
- }
-#else /* CROSS_DIRECTORY_STRUCTURE */
-#undef INCLUDE_DEFAULTS
-#define INCLUDE_DEFAULTS \
- { \
- { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1 },\
- { GCC_INCLUDE_DIR, "GCC", 0, 0 },\
- { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1}, \
- { CROSS_INCLUDE_DIR "/be/add-ons/graphics", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/devel", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/translation", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/mail", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/gnu", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/drivers", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/opengl", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/game", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/support", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/storage", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/kernel", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/net", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/midi", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/midi2", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/media", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/interface", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/device", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/app", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/precompiled", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/add-ons/input_server", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/add-ons/net_server", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/add-ons/screen_saver", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/add-ons/tracker", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/be_apps/Deskbar", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/be_apps/NetPositive", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/be_apps/Tracker", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/drivers/tty", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/net/netinet", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be/storage", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/be", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/cpp", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR "/posix", 0, 0, 0 },\
- { CROSS_INCLUDE_DIR , 0, 0, 0 }, \
- { 0, 0, 0, 0 } \
- }
-#endif
-
-/* Whee. LIBRARY_PATH is Be's LD_LIBRARY_PATH, which of course will
- cause nasty problems if we override it. */
-#define LIBRARY_PATH_ENV "BELIBRARIES"
-
-/* BeOS doesn't have a separate math library. */
-#define MATH_LIBRARY ""
-
-/* BeOS headers are C++-aware (and often use C++). */
-#define NO_IMPLICIT_EXTERN_C
-
-/* BeOS uses explicit import from shared libraries. */
-#define MULTIPLE_SYMBOL_SPACES 1
+++ /dev/null
-/* Definitions of target machine for GCC.
- kaOS on ia32 architecture version.
- Copyright (C) 2003, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (i386/kaOS[ELF])", stderr);
-
+++ /dev/null
-/* Target definitions for GCC for Intel 80386 running Dynix/ptx v4
- Copyright (C) 1996, 2002, 2007 Free Software Foundation, Inc.
-
- Modified from sysv4.h
- Originally written by Ron Guilmette (rfg@netcom.com).
- Modified by Tim Wright (timw@sequent.com).
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-
-#define TARGET_VERSION fprintf (stderr, " (i386 Sequent Dynix/ptx Version 4)");
-
-/* The svr4 ABI for the i386 says that records and unions are returned
- in memory. */
-
-#define SUBTARGET_RETURN_IN_MEMORY(TYPE, FNTYPE) \
- (TYPE_MODE (TYPE) == BLKmode \
- || (VECTOR_MODE_P (TYPE_MODE (TYPE)) && int_size_in_bytes (TYPE) == 8));
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("unix"); \
- builtin_define ("_SEQUENT_"); \
- builtin_assert ("system=unix"); \
- builtin_assert ("system=ptx4"); \
- } \
- while (0)
-
-#undef DBX_REGISTER_NUMBER
-#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n]
-
-/* The routine used to output sequences of byte values. We use a special
- version of this for most svr4 targets because doing so makes the
- generated assembly code more compact (and thus faster to assemble)
- as well as more readable. Note that if we find subparts of the
- character sequence which end with NUL (and which are shorter than
- STRING_LIMIT) we output those using ASM_OUTPUT_LIMITED_STRING. */
-
-#undef ASM_OUTPUT_ASCII
-#define ASM_OUTPUT_ASCII(FILE, STR, LENGTH) \
- do \
- { \
- const unsigned char *_ascii_bytes = \
- (const unsigned char *) (STR); \
- const unsigned char *limit = _ascii_bytes + (LENGTH); \
- unsigned bytes_in_chunk = 0; \
- for (; _ascii_bytes < limit; _ascii_bytes++) \
- { \
- const unsigned char *p; \
- if (bytes_in_chunk >= 64) \
- { \
- fputc ('\n', (FILE)); \
- bytes_in_chunk = 0; \
- } \
- for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \
- continue; \
- if (p < limit && (p - _ascii_bytes) <= (long) STRING_LIMIT) \
- { \
- if (bytes_in_chunk > 0) \
- { \
- fputc ('\n', (FILE)); \
- bytes_in_chunk = 0; \
- } \
- ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); \
- _ascii_bytes = p; \
- } \
- else \
- { \
- if (bytes_in_chunk == 0) \
- fprintf ((FILE), "\t.byte\t"); \
- else \
- fputc (',', (FILE)); \
- fprintf ((FILE), "0x%02x", *_ascii_bytes); \
- bytes_in_chunk += 5; \
- } \
- } \
- if (bytes_in_chunk > 0) \
- fprintf ((FILE), "\n"); \
- } \
- while (0)
+++ /dev/null
-/* Definitions for Intel 386 running SCO Unix System V 3.2 Version 5.
- Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004,
- 2007 Free Software Foundation, Inc.
- Contributed by Kean Johnston (jkj@sco.com)
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (i386, SCO OpenServer 5 Syntax)");
-
-#undef ASM_QUAD
-
-#undef GLOBAL_ASM_OP
-#define GLOBAL_ASM_OP "\t.globl\t"
-
-#undef BSS_SECTION_ASM_OP
-#define BSS_SECTION_ASM_OP "\t.section\t.bss, \"aw\", @nobits"
-
-/*
- * NOTE: We really do want CTORS_SECTION_ASM_OP and DTORS_SECTION_ASM_OP.
- * Here's the reason why. If we dont define them, and we dont define them
- * to always emit to the same section, the default is to emit to "named"
- * ctors and dtors sections. This would be great if we could use GNU ld,
- * but we can't. The native linker could possibly be trained to coalesce
- * named ctors sections, but that hasn't been done either. So if we don't
- * define these, many C++ ctors and dtors dont get run, because they never
- * wind up in the ctors/dtors arrays.
- */
-#define CTORS_SECTION_ASM_OP "\t.section\t.ctors, \"aw\""
-#define DTORS_SECTION_ASM_OP "\t.section\t.dtors, \"aw\""
-
-#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
-#undef X86_FILE_START_VERSION_DIRECTIVE
-#define X86_FILE_START_VERSION_DIRECTIVE true
-
-/* A C statement (sans semicolon) to output to the stdio stream
- FILE the assembler definition of uninitialized global DECL named
- NAME whose size is SIZE bytes and alignment is ALIGN bytes.
- Try to use asm_output_aligned_bss to implement this macro. */
-
-#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
- asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN)
-
-#undef DBX_REGISTER_NUMBER
-#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n]
-
-#define DWARF2_DEBUGGING_INFO 1
-#define DBX_DEBUGGING_INFO 1
-
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-
-#undef DWARF2_UNWIND_INFO
-#define DWARF2_UNWIND_INFO 1
-
-#undef NO_IMPLICIT_EXTERN_C
-#define NO_IMPLICIT_EXTERN_C 1
-
-#undef SWITCH_TAKES_ARG
-#define SWITCH_TAKES_ARG(CHAR) \
- (DEFAULT_SWITCH_TAKES_ARG(CHAR) \
- || (CHAR) == 'h' \
- || (CHAR) == 'R' \
- || (CHAR) == 'Y' \
- || (CHAR) == 'z')
-
-#undef WORD_SWITCH_TAKES_ARG
-#define WORD_SWITCH_TAKES_ARG(STR) \
- (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
- && strcmp (STR, "Tdata") && strcmp (STR, "Ttext") \
- && strcmp (STR, "Tbss"))
-
-#undef TARGET_SUBTARGET_DEFAULT
-#define TARGET_SUBTARGET_DEFAULT (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS)
-
-/*
- * Define sizes and types
- */
-#undef SIZE_TYPE
-#undef PTRDIFF_TYPE
-#undef WCHAR_TYPE
-#undef WCHAR_TYPE_SIZE
-#undef WINT_TYPE
-#define SIZE_TYPE "unsigned int"
-#define PTRDIFF_TYPE "int"
-#define WCHAR_TYPE "long int"
-#define WCHAR_TYPE_SIZE BITS_PER_WORD
-#define WINT_TYPE "long int"
-
-/*
- * New for multilib support. Set the default switches for multilib,
- * which is -melf.
- */
-#define MULTILIB_DEFAULTS { "melf" }
-
-\f
-/* Please note that these specs may look messy but they are required in
- order to emulate the SCO Development system as closely as possible.
- With SCO Open Server 5.0, you now get the linker and assembler free,
- so that is what these specs are targeted for. These utilities are
- very argument sensitive: a space in the wrong place breaks everything.
- So please forgive this mess. It works.
-
- Parameters which can be passed to gcc, and their SCO equivalents:
- GCC Parameter SCO Equivalent
- -ansi -a ansi
- -posix -a posix
- -Xpg4 -a xpg4
- -Xpg4plus -a xpg4plus
- -Xods30 -a ods30
-
- As with SCO, the default is XPG4 plus mode. SCO also allows you to
- specify a C dialect with -Xt, -Xa, -Xc, -Xk and -Xm. These are passed
- on to the assembler and linker in the same way that the SCO compiler
- does.
-
- SCO also allows you to compile, link and generate either ELF or COFF
- binaries. With gcc, we now only support ELF mode.
-
- GCC also requires that the user has installed OSS646, the Execution
- Environment Update, or is running release 5.0.7 or later. This has
- many fixes to the ELF link editor and assembler, and a considerably
- improved libc and RTLD.
-
- In terms of tool usage, we want to use the standard link editor always,
- and either the GNU assembler or the native assembler. With OSS646 the
- native assembler has grown up quite a bit. Some of the specs below
- assume that /usr/gnu is the prefix for the GNU tools, because thats
- where the SCO provided ones go. This is especially important for
- include and library search path ordering. We want to look in /usr/gnu
- first because frequently people are linking against -lintl, and they
- MEAN to link with gettext. What they get is the SCO intl library. Its
- a REAL pity that GNU gettext chose that name; perhaps in a future
- version they can be persuaded to change it to -lgnuintl and have a
- link so that -lintl will work for other systems. The same goes for
- header files. We want /usr/gnu/include searched for before the system
- header files. Hence the -isystem /usr/gnu/include in the CPP_SPEC.
- We get /usr/gnu/lib first by virtue of the MD_STARTFILE_PREFIX below.
-*/
-
-#define MD_STARTFILE_PREFIX "/usr/gnu/lib/"
-#define MD_STARTFILE_PREFIX_1 "/usr/ccs/lib/"
-
-#if USE_GAS
-# define MD_EXEC_PREFIX "/usr/gnu/bin/"
-#else
-# define MD_EXEC_PREFIX "/usr/ccs/bin/elf/"
-#endif
-
-/* Always use the system linker, please. */
-#ifndef DEFAULT_LINKER
-# define DEFAULT_LINKER "/usr/ccs/bin/elf/ld"
-#endif
-
-/* Set up assembler flags for PIC and ELF compilations */
-#undef ASM_SPEC
-
-#if USE_GAS
- /* Leave ASM_SPEC undefined so we pick up the master copy from gcc.c */
-#else
-#define ASM_SPEC \
- "%{Ym,*} %{Yd,*} %{Wa,*:%*} \
- -E%{Xa:a}%{!Xa:%{Xc:c}%{!Xc:%{Xk:k}%{!Xk:%{Xt:t}%{!Xt:a}}}},%{ansi:ansi}%{!ansi:%{posix:posix}%{!posix:%{Xpg4:xpg4}%{!Xpg4:%{Xpg4plus:XPG4PLUS}%{!Xpg4plus:%{Xods30:ods30}%{!Xods30:XPG4PLUS}}}}},ELF %{Qn:} %{!Qy:-Qn}"
-#endif
-
-/*
- * Use crti.o for shared objects, crt1.o for normal executables. Make sure
- * to recognize both -G and -shared as a valid way of introducing shared
- * library generation. This is important for backwards compatibility.
- */
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
- "%{pg:%e-pg not supported on this platform} \
- %{p:%{pp:%e-p and -pp specified - pick one}} \
- %{!shared:\
- %{!symbolic: \
- %{!G: \
- %{pp:pcrt1elf.o%s}%{p:mcrt1.o%s}%{!p:%{!pp:crt1.o%s}}}}} \
- crti.o%s \
- %{ansi:values-Xc.o%s} \
- %{!ansi: \
- %{traditional:values-Xt.o%s} \
- %{!traditional: \
- %{Xa:values-Xa.o%s} \
- %{!Xa:%{Xc:values-Xc.o%s} \
- %{!Xc:%{Xk:values-Xk.o%s} \
- %{!Xk:%{Xt:values-Xt.o%s} \
- %{!Xt:values-Xa.o%s}}}}}} \
- crtbegin.o%s"
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "crtend.o%s crtn.o%s"
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("__unix"); \
- builtin_define ("_SCO_DS"); \
- builtin_define ("_SCO_DS_LL"); \
- builtin_define ("_SCO_ELF"); \
- builtin_define ("_M_I386"); \
- builtin_define ("_M_XENIX"); \
- builtin_define ("_M_UNIX"); \
- builtin_assert ("system=svr3"); \
- if (flag_iso) \
- cpp_define (pfile, "_STRICT_ANSI"); \
- } \
- while (0)
-
-#undef CPP_SPEC
-#define CPP_SPEC "\
- -isystem /usr/gnu/include \
- %{!Xods30:-D_STRICT_NAMES} \
- %{!ansi:%{!posix:%{!Xods30:-D_SCO_XPG_VERS=4}}} \
- %{ansi:-isystem include/ansi%s -isystem /usr/include/ansi} \
- %{!ansi: \
- %{posix:-isystem include/posix%s -isystem /usr/include/posix \
- -D_POSIX_C_SOURCE=2 -D_POSIX_SOURCE=1} \
- %{!posix:%{Xpg4:-isystem include/xpg4%s -isystem /usr/include/xpg4 \
- -D_XOPEN_SOURCE=1} \
- %{!Xpg4:-D_M_I86 -D_M_I86SM -D_M_INTERNAT -D_M_SDATA -D_M_STEXT \
- -D_M_BITFIELDS -D_M_SYS5 -D_M_SYSV -D_M_SYSIII \
- -D_M_WORDSWAP -Dunix -DM_I386 -DM_UNIX -DM_XENIX \
- %{Xods30:-isystem include/ods_30_compat%s \
- -isystem /usr/include/ods_30_compat \
- -D_SCO_ODS_30 -DM_I86 -DM_I86SM -DM_SDATA -DM_STEXT \
- -DM_BITFIELDS -DM_SYS5 -DM_SYSV -DM_INTERNAT -DM_SYSIII \
- -DM_WORDSWAP}}}} \
- %{scointl:-DM_INTERNAT -D_M_INTERNAT} \
- %{Xa:-D_SCO_C_DIALECT=1} \
- %{!Xa:%{Xc:-D_SCO_C_DIALECT=3} \
- %{!Xc:%{Xk:-D_SCO_C_DIALECT=4} \
- %{!Xk:%{Xt:-D_SCO_C_DIALECT=2} \
- %{!Xt:-D_SCO_C_DIALECT=1}}}}"
-
-#undef LINK_SPEC
-#define LINK_SPEC \
- "%{!shared:%{!symbolic:%{!G:-E%{Xa:a}%{!Xa:%{Xc:c}%{!Xc:%{Xk:k}%{!Xk:%{Xt:t}%{!Xt:a}}}},%{ansi:ansi}%{!ansi:%{posix:posix}%{!posix:%{Xpg4:xpg4}%{!Xpg4:%{Xpg4plus:XPG4PLUS}%{!Xpg4plus:%{Xods30:ods30}%{!Xods30:XPG4PLUS}}}}},ELF}}} \
- %{YP,*} %{YL,*} %{YU,*} \
- %{!YP,*:%{p:-YP,/usr/ccs/libp:/lib/libp:/usr/lib/libp:/usr/ccs/lib:/lib:/usr/lib} \
- %{!p:-YP,/usr/ccs/lib:/lib:/usr/lib}} \
- %{h*} %{static:-dn -Bstatic %{G:%e-G and -static are mutually exclusive}} \
- %{shared:%{!G:-G}} %{G:%{!shared:-G}} %{shared:%{G:-G}} \
- %{shared:-dy %{symbolic:-Bsymbolic -G} %{z*}} %{R*} %{Y*} \
- %{Qn:} %{!Qy:-Qn} -z alt_resolve"
-
-/* Library spec. If we are not building a shared library, provide the
- standard libraries, as per the SCO compiler. */
-
-#undef LIB_SPEC
-#define LIB_SPEC \
- "%{shared:%{!G:pic/libgcc.a%s}} \
- %{G:%{!shared:pic/libgcc.a%s}} \
- %{shared:%{G:pic/libgcc.a%s}} \
- %{p:%{!pp:-lelfprof -lelf}} %{pp:%{!p:-lelfprof -lelf}} \
- %{!shared:%{!symbolic:%{!G:-lcrypt -lgen -lc}}}"
-
-#undef LIBGCC_SPEC
-#define LIBGCC_SPEC \
- "%{!shared:%{!G:-lgcc}}"
-
-/* Handle special EH pointer encodings. Absolute, pc-relative, and
- indirect are handled automatically. */
-#define ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(FILE, ENCODING, SIZE, ADDR, DONE) \
- do { \
- if ((SIZE) == 4 && ((ENCODING) & 0x70) == DW_EH_PE_datarel) \
- { \
- fputs (ASM_LONG, FILE); \
- assemble_name (FILE, XSTR (ADDR, 0)); \
- fputs (((ENCODING) & DW_EH_PE_indirect ? "@GOT" : "@GOTOFF"), FILE); \
- goto DONE; \
- } \
- } while (0)
-
-/* Used by crtstuff.c to initialize the base of data-relative relocations.
- These are GOT relative on x86, so return the pic register. */
-#ifdef __PIC__
-#define CRT_GET_RFIB_DATA(BASE) \
- { \
- register void *ebx_ __asm__("ebx"); \
- BASE = ebx_; \
- }
-#else
-#define CRT_GET_RFIB_DATA(BASE) \
- __asm__ ("call\t.LPR%=\n" \
- ".LPR%=:\n\t" \
- "pop{l}\t%0\n\t" \
- /* Due to a GAS bug, this cannot use EAX. That encodes \
- smaller than the traditional EBX, which results in the \
- offset being off by one. */ \
- "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \
- "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}" \
- : "=d"(BASE))
-#endif
-
+++ /dev/null
-; SCO Unix-specific options.
-
-; Copyright (C) 2005, 2007 Free Software Foundation, Inc.
-;
-; This file is part of GCC.
-;
-; GCC 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 3, or (at your option) any later
-; version.
-;
-; GCC 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 GCC; see the file COPYING3. If not see
-; <http://www.gnu.org/licenses/>.
-
-;; Legacy option
-melf
-Target RejectNegative
-Generate ELF output
+++ /dev/null
-/* Target definitions for GCC for Intel 80386 running System V.4
- Copyright (C) 1991, 2001, 2002, 2007 Free Software Foundation, Inc.
-
- Written by Ron Guilmette (rfg@netcom.com).
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("unix"); \
- builtin_define ("__svr4__"); \
- builtin_assert ("system=unix"); \
- builtin_assert ("system=svr4"); \
- } \
- while (0)
-
+++ /dev/null
-/* Definitions for Intel 386 running System V Release 5 (i.e. UnixWare 7)
- Copyright (C) 1999, 2007 Free Software Foundation, Inc.
- Contributed by Robert Lipe (robertlipe@usa.net)
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-
-/* Dwarf2 is supported by native debuggers */
-
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-
-/* Add -lcrt for Dwarf2 abbreviation table */
-#undef LIB_SPEC
-#define LIB_SPEC "%{pthread:-lthread} %{pthreadT:-lthreadT} \
- %{!shared:%{!symbolic:-lc -lcrt}}"
-
-#undef CPP_SPEC
-#define CPP_SPEC "%{pthread:-D_REENTRANT} %{pthreadT:-D_REENTRANT}"
+++ /dev/null
-# There are system headers elsewhere, but these are the ones that
-# we are most likely to want to apply any fixes to.
-SYSTEM_HEADER_DIR = /boot/develop/headers/posix
-CROSS_SYSTEM_HEADER_DIR = $(tooldir)/sys-include/posix
+++ /dev/null
-# We multilib libgcc for -fPIC, to get real PIC code in it.
-# NOTE: We must use -fPIC on crt{begi,end}.o else we get an RTLD error
-# "cant set protections on segment of length blah at 0x8048000".
-CRTSTUFF_T_CFLAGS = -fPIC -fno-omit-frame-pointer
-
-MULTILIB_OPTIONS = fPIC
-MULTILIB_DIRNAMES = pic
-MULTILIB_MATCHES = fPIC=fpic
-MULTILIB_EXTRA_OPTS =
-
-LIBGCC=stmp-multilib
-INSTALL_LIBGCC=install-multilib
-
-# See all the declarations.
-FIXPROTO_DEFINES = -D_XOPEN_SOURCE -D_POSIX_C_SOURCE=2
+++ /dev/null
-#
-# This is included *after* t-cygwin to override LIB1ASMSRC.
-#
-LIB1ASMSRC = i386/uwin.asm
-
+++ /dev/null
-/* stuff needed for libgcc on win32. */
-
-#ifdef L_chkstk
-
- .global __chkstk
- .global __alloca
-__chkstk:
-__alloca:
- pushl %ecx /* save temp */
- movl %esp,%ecx /* get sp */
- addl $0x8,%ecx /* and point to return addr */
-
-probe: cmpl $0x1000,%eax /* > 4k ?*/
- jb done
-
- subl $0x1000,%ecx /* yes, move pointer down 4k*/
- orl $0x0,(%ecx) /* probe there */
- subl $0x1000,%eax /* decrement count */
- jmp probe /* and do it again */
-
-done: subl %eax,%ecx
- orl $0x0,(%ecx) /* less that 4k, just peek here */
-
- movl %esp,%eax
- movl %ecx,%esp /* decrement stack */
-
- movl (%eax),%ecx /* recover saved temp */
- movl 4(%eax),%eax /* get return address */
- jmp *%eax
-
-
-#endif
+++ /dev/null
-/* Operating system specific defines to be used when targeting GCC for
- hosting on U/WIN (Windows32), using GNU tools and the Windows32 API
- Library, as distinct from winnt.h, which is used to build GCC for use
- with a windows style library and tool set and uses the Microsoft tools.
- Copyright (C) 1999, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
- Contributed by Mumit Khan <khan@xraylith.wisc.edu>.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-/* Most of this is the same as for Cygwin32, except for changing some
- specs. */
-
-#define STANDARD_INCLUDE_COMPONENT "UWIN"
-#define SYSTEM_INCLUDE_DIR "/usr/gnu/include"
-#undef MD_STARTFILE_PREFIX
-#define MD_STARTFILE_PREFIX "/usr/gnu/lib/"
-
-#undef MAYBE_UWIN_CPP_BUILTINS
-#define MAYBE_UWIN_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("WINNT"); \
- builtin_define ("_WIN32"); \
- builtin_define ("__WIN32__"); \
- builtin_define ("_UWIN"); \
- builtin_define ("__UWIN__"); \
- builtin_define ("__MSVCRT__"); \
- builtin_define ("_STD_INCLUDE_DIR=mingw32"); \
- } \
- while (0)
-
-#undef CPP_SPEC
-#define CPP_SPEC "-remap %{posix:-D_POSIX_SOURCE} \
- -include /usr/include/astwin32.h \
- -idirafter /usr/gnu/include/mingw32"
-
-/* For Windows applications, include more libraries, but always include
- kernel32. */
-#undef LIB_SPEC
-#define LIB_SPEC \
- "%{pg:-lgmon} %{mwindows:-luser32 -lgdi32 -lcomdlg32} -lkernel32 -ladvapi32"
-
-/* Include in the mingw32 libraries with libgcc */
-#undef LIBGCC_SPEC
-#define LIBGCC_SPEC "-lgnuwin -lposix -lgcc -last -lmoldname -lmsvcrt"
-
-/* Specify a different entry point when linking a DLL */
-#undef LINK_SPEC
-#define LINK_SPEC \
- "%{mwindows:--subsystem windows} %{mdll:--dll -e _DllMainCRTStartup@12} \
- %{!mdll:-u _main}"
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "%{mdll:dllcrt2%O%s} %{!mdll:crt2%O%s} %{pg:gcrt2%O%s}"
-
-/* These are PE BFD bug workarounds. Should go away eventually. */
-
-/* Write the extra assembler code needed to declare a function
- properly. If we are generating SDB debugging information, this
- will happen automatically, so we only need to handle other cases. */
-#undef ASM_DECLARE_FUNCTION_NAME
-#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
- do \
- { \
- i386_pe_maybe_record_exported_symbol (DECL, NAME, 0); \
- } \
- while (0)
-
-#undef ASM_OUTPUT_EXTERNAL
-#undef ASM_OUTPUT_EXTERNAL_LIBCALL
-
+++ /dev/null
-/* Definitions of target machine for GCC.
- common kaOS definitions for all architectures.
- Copyright (C) 2003, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-/* Specify predefined symbols in preprocessor. */
-#define TARGET_OS_CPP_BUILTINS() \
- do { \
- builtin_define ("__kaOS__"); \
- } while (0)
-
-
-/* do not link any library implicitly for kaOS target. */
-#undef LIB_SPEC
-#define LIB_SPEC ""
+++ /dev/null
-/* Support for GCC on MIPS using WindISS simulator.
- Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
- Contributed by CodeSourcery, LLC.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (MIPS WindISS)");
-
-/* Combination of mips.h and svr4.h. */
-#undef SWITCH_TAKES_ARG
-#define SWITCH_TAKES_ARG(CHAR) \
- (DEFAULT_SWITCH_TAKES_ARG (CHAR) \
- || (CHAR) == 'G' \
- || (CHAR) == 'h' \
- || (CHAR) == 'x' \
- || (CHAR) == 'z')
-
-#undef SUBTARGET_CPP_SPEC
-#define SUBTARGET_CPP_SPEC \
-"%{!DCPU=*: %{mips3|mips4|mips64:-DCPU=MIPS64;:-DCPU=MIPS32}} \
- %{EL|mel:-DMIPSEL;:-DMIPSEB} \
- %{msoft-float:-DSOFT_FLOAT} \
- %{mips1:-D_WRS_R3K_EXC_SUPPORT}"
-
-#undef ASM_SPEC
-#define ASM_SPEC "\
-%{!G:-G 0} %{G*} %(endian_spec) %{mips1} %{mips2} %{mips3} %{mips4} \
-%{mips32} %{mips32r2} %{mips64} \
-%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} \
-%(subtarget_asm_optimizing_spec) \
-%(subtarget_asm_debugging_spec) \
-%{mabi=*} %{!mabi*: %(asm_abi_default_spec)} \
-%{mgp32} %{mgp64} %{march=*} %{mxgot:-xgot} \
-%{mtune=*} %{v} \
-%(subtarget_asm_spec)"
-
-#undef LINK_SPEC
-/* LINK_SPEC is clobbered in svr4.h. ugh! */
-#define LINK_SPEC "\
--m elf32mipswindiss \
-%{!G:-G 0} %{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64} \
-%{bestGnum}"
-
-/* Diab libs MIPS{,E,F,L,M,W,X,Y,Z}{,H,N,S}
-
- .
- E - Elf (small-data/const=8
- F - Elf Far (small-data/const=0)
- L - Little Elf
- M - Little Elf Far
- W - elf32 bigmips
- X - elf32 bigmips (far?)
- Y - elf32 littlemips
- Z - elf32 littlemips (far?)
-
- . - Integer routines
- H - Hard float
- N - No float
- S - Soft float
-
- Want {F,M}{,H,S}
-
-*/
-
-#undef LIB_SPEC
-#define LIB_SPEC "--start-group -li -lcfp -lwindiss -lram -limpl -limpfp --end-group"
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "crt0.o%s crtbegin.o%s"
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "crtend.o%s"
-
-/* We have no shared libraries. These two shouldn't be necessary. */
-#undef LINK_SHLIB_SPEC
-#define LINK_SHLIB_SPEC ""
-#undef LINK_EH_SPEC
-#define LINK_EH_SPEC ""
-
-#undef CRTSAVRES_DEFAULT_SPEC
-#define CRTSAVRES_DEFAULT_SPEC ""
-
-/* No sdata. */
-#undef MIPS_DEFAULT_GVALUE
-#define MIPS_DEFAULT_GVALUE 0
+++ /dev/null
- Copyright (C) 2005 Free Software Foundation, Inc.
-
- Copying and distribution of this file, with or without modification,
- are permitted in any medium without royalty provided the copyright
- notice and this notice are preserved.
-
---------------------------------------------------------------------------
-
- MS1 ABI
- =========
-
-Sizes and alignments
---------------------
-
- Type Size (bytes) Alignment (bytes)
-
- char 1 1
- short 2 2
- int 4 4
- unsigned 4 4
- long 4 4
- long long 8 8
- float 4 4
- double 8 8
- pointers 4 4
-
-* alignment within aggregates (structs and unions) is as above, with
- padding added if needed
-* aggregates have alignment equal to that of their most aligned
- member
-* aggregates have sizes which are a multiple of their alignment
-
-
-Floating point
---------------
-
-All emulated using IEEE floating point conventions.
-
-Registers
-----------------
-
-r0 always zero
-r1 argument register 1
-r2 argument register 2
-r3 argument register 3
-r4 argument register 4
-r5 callee must save
-r6 callee must save
-r7 call clobbers
-r8 call clobbers
-r9 call clobbers
-r10 call clobbers
-r11 function return value
-r12 frame pointer
-r13 stack pointer
-r14 linkage pointer
-r15 interrupt pointer
-
-Stack alignment 8 bytes
-
-Structures passed <= 32 bits as values, else as pointers
-
-The MS1 Stack
----------------
-
-Space is allocated as needed in the stack frame for the following at compile
-time:
-
-* Outgoing parameters beyond the fourth
-
-* All automatic arrays, automatic data aggregates, automatic
- scalars which must be addressable, and automatic scalars for
- which there is no room in registers
-
-* Compiler-generated temporary values (typically when there are
- too many for the compiler to keep them all in registers)
-
-Space can be allocated dynamically (at runtime) in the stack frame for the
-following:
-
-* Memory allocated using the alloca() function of the C library
-
-Addressable automatic variables on the stack are addressed with positive
-offsets relative to r12; dynamically allocated space is addressed with positive
-offsets from the pointer returned by alloca().
-
-Stack Frame
------------
-
- +-----------------------+
- | Parameter Word 1 |
- +-----------------------+ <-sp
- | Previous FP |
- +-----------------------+
- | Return address |
- +-----------------------+
- | Saved Registers |
- +-----------------------+
- | ... |
- +-----------------------+
- | Local Variables |
- +-----------------------+ <-fp
- | Alloca |
- +-----------------------+
- | ... |
- +-----------------------+
- | Parameter Word 2 |
- +-----------------------+
- | Parameter Word 1 |
- +-----------------------+ <-sp
-
-
-Parameter Assignment to Registers
----------------------------------
-
-Consider the parameters in a function call as ordered from left (first
-parameter) to right. GR contains the number of the next available
-general-purpose register. STARG is the address of the next available stack
-parameter word.
-
-INITIALIZE:
- Set GR=r1 and STARG to point to parameter word 1.
-
-SCAN:
- If there are no more parameters, terminate.
- Otherwise, select one of the following depending on the type
- of the next parameter:
-
- SIMPLE ARG:
-
- A SIMPLE ARG is one of the following:
-
- * One of the simple integer types which will fit into a
- general-purpose register,
- * A pointer to an object of any type,
- * A struct or union small enough to fit in a register (<= 32 bits)
- * A larger struct or union, which shall be treated as a
- pointer to the object or to a copy of the object.
- (See below for when copies are made.)
-
- If GR > r4, go to STACK. Otherwise, load the parameter value into
- general-purpose register GR and advance GR to the next general-purpose
- register. Values shorter than the register size are sign-extended or
- zero-extended depending on whether they are signed or unsigned. Then
- go to SCAN.
-
- DOUBLE or LONG LONG
-
- If GR > r3, go to STACK. Otherwise, if GR is odd, advance GR to the
- next register. Load the 64-bit long long or double value into register
- pair GR and GR+1. Advance GR to GR+2 and go to SCAN.
-
- STACK:
-
- Parameters not otherwise handled above are passed in the parameter
- words of the caller's stack frame. SIMPLE ARGs, as defined above, are
- considered to have size and alignment equal to the size of a
- general-purpose register, with simple argument types shorter than this
- sign- or zero-extended to this width. Round STARG up to a multiple of
- the alignment requirement of the parameter and copy the argument
- byte-for-byte into STARG, STARG+1, ... STARG+size-1. Set STARG to
- STARG+size and go to SCAN.
-
-
-Structure passing
------------------
-
-As noted above, code which passes structures and unions by value is implemented
-specially. (In this section, "struct" will refer to structs and unions
-inclusively.) Structs small enough to fit in a register are passed by value in
-a single register or in a stack frame slot the size of a register. Structs
-containing a single double or long long component are passed by value in two
-registers or in a stack frame slot the size of two registers. Other structs
-are handled by passing the address of the structure. In this case, a copy of
-the structure will be made if necessary in order to preserve the pass-by-value
-semantics.
-
-Copies of large structs are made under the following rules:
-
- ANSI mode K&R Mode
- --------- --------
-Normal param Callee copies if needed Caller copies
-Varargs (...) param Caller copies Caller copies
-
-In the case of normal (non-varargs) large-struct parameters in ANSI mode, the
-callee is responsible for producing the same effect as if a copy of the
-structure were passed, preserving the pass-by-value semantics. This may be
-accomplished by having the callee make a copy, but in some cases the callee may
-be able to determine that a copy is not necessary in order to produce the same
-results. In such cases, the callee may choose to avoid making a copy of the
-parameter.
-
-
-Varargs handling
-----------------
-
-No special changes are needed for handling varargs parameters other than the
-caller knowing that a copy is needed on struct parameters larger than a
-register (see above).
-
-The varargs macros set up a register save area for the general-purpose
-registers to be saved. Because the save area lies between the caller and
-callee stack frames, the saved register parameters are contiguous with
-parameters passed on the stack. A pointer advances from the register save area
-into the caller's stack frame.
-
-
-Function return values
-----------------------
-
- Type Register
- ---- --------
- int r11
- short r11
- long r11
- long long stack
- float r11
- double stack
-
+++ /dev/null
-# crti.asm for mt
-#
-# Copyright (C) 2005 Free Software Foundation, Inc.
-#
-# This file 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.
-#
-# In addition to the permissions in the GNU General Public License, the
-# Free Software Foundation gives you unlimited permission to link the
-# compiled version of this file with other programs, and to distribute
-# those programs without any restriction coming from the use of this
-# file. (The General Public License restrictions do apply in other
-# respects; for example, they cover modification of the file, and
-# distribution when not linked into another program.)
-#
-# This file 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 GCC; see the file COPYING. If not, write to the Free
-# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception, if you link this library with files
-# compiled with GCC to produce an executable, this does not cause
-# the resulting executable to be covered by the GNU General Public License.
-# This exception does not however invalidate any other reasons why
-# the executable file might be covered by the GNU General Public License.
-#
-
-# This file just make a stack frame for the contents of the .fini and
-# .init sections. Users may put any desired instructions in those
-# sections.
-
- .file "crti.asm"
-
- .section ".init"
- .global _init
- .type _init,#function
- .align 4
-_init:
- subi sp, sp, #4
- stw r14, sp, #0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
-
- .section ".fini"
- .global _fini
- .type _fini,#function
- .align 4
-_fini:
- subi sp, sp, #4
- stw r14, sp, #0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
- or r0, r0, r0
+++ /dev/null
-# crtn.asm for mt
-
-# Copyright (C) 2005 Free Software Foundation, Inc.
-#
-# This file 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.
-#
-# In addition to the permissions in the GNU General Public License, the
-# Free Software Foundation gives you unlimited permission to link the
-# compiled version of this file with other programs, and to distribute
-# those programs without any restriction coming from the use of this
-# file. (The General Public License restrictions do apply in other
-# respects; for example, they cover modification of the file, and
-# distribution when not linked into another program.)
-#
-# This file 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 GCC; see the file COPYING. If not, write to the Free
-# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-# As a special exception, if you link this library with files
-# compiled with GCC to produce an executable, this does not cause
-# the resulting executable to be covered by the GNU General Public License.
-# This exception does not however invalidate any other reasons why
-# the executable file might be covered by the GNU General Public License.
-#
-
-# This file just makes sure that the .fini and .init sections do in
-# fact return. Users may put any desired instructions in those sections.
-# This file is the last thing linked into any executable.
-
- .file "crtn.asm"
-
- .section ".init"
- .align 4
- ldw r14, sp, #0
- addi sp, sp, #4
- nop
- jal r0, r14
- or r0, r0, r0
-
- .section ".fini"
- .align 4
-
- ldw r14, sp, #0
- addi sp, sp, #4
- nop
- jal r0, r14
- or r0, r0, r0
+++ /dev/null
-/* Copyright (C) 2005 Free Software Foundation,
-
-This file is part of GCC.
-
-GCC 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.
-
-In addition to the permissions in the GNU General Public License, the
-Free Software Foundation gives you unlimited permission to link the
-compiled version of this file into combinations with other programs,
-and to distribute those combinations without any restriction coming
-from the use of this file. (The General Public License restrictions
-do apply in other respects; for example, they cover modification of
-the file, and distribution when not linked into a combine
-executable.)
-
-GCC 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 GCC; see the file COPYING. If not, write to the Free
-Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA. */
-
-#define BITS_PER_UNIT 8
-
-typedef int HItype __attribute__ ((mode (HI)));
-typedef unsigned int UHItype __attribute__ ((mode (HI)));
-
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-
-typedef int word_type __attribute__ ((mode (__word__)));
-
-struct SIstruct {HItype low, high;};
-
-typedef union
-{
- struct SIstruct s;
- SItype ll;
-} SIunion;
-
-SItype
-__lshrsi3 (SItype u, word_type b)
-{
- SIunion w;
- word_type bm;
- SIunion uu;
-
- if (b == 0)
- return u;
-
- uu.ll = u;
-
- bm = (sizeof (HItype) * BITS_PER_UNIT) - b;
- if (bm <= 0)
- {
- w.s.high = 0;
- w.s.low = (UHItype)uu.s.high >> -bm;
- }
- else
- {
- UHItype carries = (UHItype)uu.s.high << bm;
- w.s.high = (UHItype)uu.s.high >> b;
- w.s.low = ((UHItype)uu.s.low >> b) | carries;
- }
-
- return w.ll;
-}
-
-SItype
-__ashlsi3 (SItype u, word_type b)
-{
- SIunion w;
- word_type bm;
- SIunion uu;
-
- if (b == 0)
- return u;
-
- uu.ll = u;
-
- bm = (sizeof (HItype) * BITS_PER_UNIT) - b;
- if (bm <= 0)
- {
- w.s.low = 0;
- w.s.high = (UHItype)uu.s.low << -bm;
- }
- else
- {
- UHItype carries = (UHItype)uu.s.low >> bm;
- w.s.low = (UHItype)uu.s.low << b;
- w.s.high = ((UHItype)uu.s.high << b) | carries;
- }
-
- return w.ll;
-}
-
-SItype
-__ashrsi3 (SItype u, word_type b)
-{
- SIunion w;
- word_type bm;
- SIunion uu;
-
- if (b == 0)
- return u;
-
- uu.ll = u;
-
- bm = (sizeof (HItype) * BITS_PER_UNIT) - b;
- if (bm <= 0)
- {
- /* w.s.high = 1..1 or 0..0 */
- w.s.high = uu.s.high >> (sizeof (HItype) * BITS_PER_UNIT - 1);
- w.s.low = uu.s.high >> -bm;
- }
- else
- {
- UHItype carries = (UHItype)uu.s.high << bm;
- w.s.high = uu.s.high >> b;
- w.s.low = ((UHItype)uu.s.low >> b) | carries;
- }
-
- return w.ll;
-}
-
-USItype
-__mulsi3 (USItype a, USItype b)
-{
- USItype c = 0;
-
- while (a != 0)
- {
- if (a & 1)
- c += b;
- a >>= 1;
- b <<= 1;
- }
-
- return c;
-}
-
-USItype
-udivmodsi4(USItype num, USItype den, word_type modwanted)
-{
- USItype bit = 1;
- USItype res = 0;
-
- while (den < num && bit && !(den & (1L<<31)))
- {
- den <<=1;
- bit <<=1;
- }
- while (bit)
- {
- if (num >= den)
- {
- num -= den;
- res |= bit;
- }
- bit >>=1;
- den >>=1;
- }
- if (modwanted) return num;
- return res;
-}
-
-SItype
-__divsi3 (SItype a, SItype b)
-{
- word_type neg = 0;
- SItype res;
-
- if (a < 0)
- {
- a = -a;
- neg = !neg;
- }
-
- if (b < 0)
- {
- b = -b;
- neg = !neg;
- }
-
- res = udivmodsi4 (a, b, 0);
-
- if (neg)
- res = -res;
-
- return res;
-}
-
-SItype
-__modsi3 (SItype a, SItype b)
-{
- word_type neg = 0;
- SItype res;
-
- if (a < 0)
- {
- a = -a;
- neg = 1;
- }
-
- if (b < 0)
- b = -b;
-
- res = udivmodsi4 (a, b, 1);
-
- if (neg)
- res = -res;
-
- return res;
-}
-
-SItype
-__udivsi3 (SItype a, SItype b)
-{
- return udivmodsi4 (a, b, 0);
-}
-
-SItype
-__umodsi3 (SItype a, SItype b)
-{
- return udivmodsi4 (a, b, 1);
-}
+++ /dev/null
-/* Prototypes for exported functions defined in ms1.c
- Copyright (C) 2005, 2007 Free Software Foundation, Inc.
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-extern void mt_init_expanders (void);
-extern void mt_expand_prologue (void);
-extern void mt_expand_epilogue (enum epilogue_type);
-extern unsigned mt_compute_frame_size (int);
-extern void mt_override_options (void);
-extern int mt_initial_elimination_offset (int, int);
-extern const char * mt_asm_output_opcode (FILE *, const char *);
-extern int mt_epilogue_uses (int);
-extern void mt_add_loop (void);
-
-#ifdef TREE_CODE
-extern const char * mt_cannot_inline_p (tree);
-extern int mt_function_arg_boundary (enum machine_mode, tree);
-extern void mt_function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-extern int mt_return_in_memory (const_tree,const_tree);
-#endif
-
-#ifdef RTX_CODE
-extern void mt_expand_eh_return (rtx *);
-extern void mt_emit_eh_epilogue (rtx *);
-extern void mt_print_operand (FILE *, rtx, int);
-extern void mt_print_operand_address (FILE *, rtx);
-extern int mt_check_split (rtx, enum machine_mode);
-extern int mt_reg_ok_for_base_p (rtx, int);
-extern int mt_legitimate_address_p (enum machine_mode, rtx, int);
-/* Predicates for machine description. */
-extern int uns_arith_operand (rtx, enum machine_mode);
-extern int arith_operand (rtx, enum machine_mode);
-extern int reg_or_0_operand (rtx, enum machine_mode);
-extern int big_const_operand (rtx, enum machine_mode);
-extern int single_const_operand (rtx, enum machine_mode);
-extern void mt_emit_cbranch (enum rtx_code, rtx, rtx, rtx);
-extern void mt_set_memflags (rtx);
-extern rtx mt_return_addr_rtx (int);
-extern void mt_split_words (enum machine_mode, enum machine_mode, rtx *);
-extern void mt_final_prescan_insn (rtx, rtx *, int);
-#endif
-
-#ifdef TREE_CODE
-#ifdef RTX_CODE
-extern void mt_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
-extern rtx mt_function_arg (const CUMULATIVE_ARGS *, enum machine_mode, tree, int, int);
-extern enum reg_class mt_secondary_reload_class (enum reg_class, enum machine_mode, rtx);
-extern rtx mt_function_value (const_tree, enum machine_mode, const_tree);
-#endif
-#endif
+++ /dev/null
-/* Target definitions for the MorphoRISC1
- Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
- Contributed by Red Hat, Inc.
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-#include "rtl.h"
-#include "regs.h"
-#include "hard-reg-set.h"
-#include "real.h"
-#include "insn-config.h"
-#include "conditions.h"
-#include "insn-attr.h"
-#include "recog.h"
-#include "toplev.h"
-#include "output.h"
-#include "integrate.h"
-#include "tree.h"
-#include "function.h"
-#include "expr.h"
-#include "optabs.h"
-#include "libfuncs.h"
-#include "flags.h"
-#include "tm_p.h"
-#include "ggc.h"
-#include "insn-flags.h"
-#include "obstack.h"
-#include "except.h"
-#include "target.h"
-#include "target-def.h"
-#include "basic-block.h"
-
-/* Frame pointer register mask. */
-#define FP_MASK (1 << (GPR_FP))
-
-/* Link register mask. */
-#define LINK_MASK (1 << (GPR_LINK))
-
-/* Given a SIZE in bytes, advance to the next word. */
-#define ROUND_ADVANCE(SIZE) (((SIZE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
-
-/* A C structure for machine-specific, per-function data.
- This is added to the cfun structure. */
-struct machine_function GTY(())
-{
- /* Flags if __builtin_return_address (n) with n >= 1 was used. */
- int ra_needs_full_frame;
- struct rtx_def * eh_stack_adjust;
- int interrupt_handler;
- int has_loops;
-};
-
-/* Define the information needed to generate branch and scc insns.
- This is stored from the compare operation. */
-struct rtx_def * mt_compare_op0;
-struct rtx_def * mt_compare_op1;
-
-/* Current frame information calculated by compute_frame_size. */
-struct mt_frame_info current_frame_info;
-
-/* Zero structure to initialize current_frame_info. */
-struct mt_frame_info zero_frame_info;
-
-/* mt doesn't have unsigned compares need a library call for this. */
-struct rtx_def * mt_ucmpsi3_libcall;
-
-static int mt_flag_delayed_branch;
-
-\f
-static rtx
-mt_struct_value_rtx (tree fndecl ATTRIBUTE_UNUSED,
- int incoming ATTRIBUTE_UNUSED)
-{
- return gen_rtx_REG (Pmode, RETVAL_REGNUM);
-}
-
-/* Implement RETURN_ADDR_RTX. */
-rtx
-mt_return_addr_rtx (int count)
-{
- if (count != 0)
- return NULL_RTX;
-
- return get_hard_reg_initial_val (Pmode, GPR_LINK);
-}
-
-/* The following variable value indicates the number of nops required
- between the current instruction and the next instruction to avoid
- any pipeline hazards. */
-static int mt_nops_required = 0;
-static const char * mt_nop_reasons = "";
-
-/* Implement ASM_OUTPUT_OPCODE. */
-const char *
-mt_asm_output_opcode (FILE *f ATTRIBUTE_UNUSED, const char *ptr)
-{
- if (mt_nops_required)
- fprintf (f, ";# need %d nops because of %s\n\t",
- mt_nops_required, mt_nop_reasons);
-
- while (mt_nops_required)
- {
- fprintf (f, "nop\n\t");
- -- mt_nops_required;
- }
-
- return ptr;
-}
-
-/* Given an insn, return whether it's a memory operation or a branch
- operation, otherwise return TYPE_ARITH. */
-static enum attr_type
-mt_get_attr_type (rtx complete_insn)
-{
- rtx insn = PATTERN (complete_insn);
-
- if (JUMP_P (complete_insn))
- return TYPE_BRANCH;
- if (CALL_P (complete_insn))
- return TYPE_BRANCH;
-
- if (GET_CODE (insn) != SET)
- return TYPE_ARITH;
-
- if (SET_DEST (insn) == pc_rtx)
- return TYPE_BRANCH;
-
- if (GET_CODE (SET_DEST (insn)) == MEM)
- return TYPE_STORE;
-
- if (GET_CODE (SET_SRC (insn)) == MEM)
- return TYPE_LOAD;
-
- return TYPE_ARITH;
-}
-
-/* A helper routine for insn_dependent_p called through note_stores. */
-
-static void
-insn_dependent_p_1 (rtx x, const_rtx pat ATTRIBUTE_UNUSED, void *data)
-{
- rtx * pinsn = (rtx *) data;
-
- if (*pinsn && reg_mentioned_p (x, *pinsn))
- *pinsn = NULL_RTX;
-}
-
-/* Return true if anything in insn X is (anti,output,true)
- dependent on anything in insn Y. */
-
-static bool
-insn_dependent_p (rtx x, rtx y)
-{
- rtx tmp;
-
- if (! INSN_P (x) || ! INSN_P (y))
- return 0;
-
- tmp = PATTERN (y);
- note_stores (PATTERN (x), insn_dependent_p_1, &tmp);
- if (tmp == NULL_RTX)
- return true;
-
- tmp = PATTERN (x);
- note_stores (PATTERN (y), insn_dependent_p_1, &tmp);
- return (tmp == NULL_RTX);
-}
-
-
-/* Return true if anything in insn X is true dependent on anything in
- insn Y. */
-static bool
-insn_true_dependent_p (rtx x, rtx y)
-{
- rtx tmp;
-
- if (! INSN_P (x) || ! INSN_P (y))
- return 0;
-
- tmp = PATTERN (y);
- note_stores (PATTERN (x), insn_dependent_p_1, &tmp);
- return (tmp == NULL_RTX);
-}
-
-/* The following determines the number of nops that need to be
- inserted between the previous instructions and current instruction
- to avoid pipeline hazards on the mt processor. Remember that
- the function is not called for asm insns. */
-
-void
-mt_final_prescan_insn (rtx insn,
- rtx * opvec ATTRIBUTE_UNUSED,
- int noperands ATTRIBUTE_UNUSED)
-{
- rtx prev_i;
- enum attr_type prev_attr;
-
- mt_nops_required = 0;
- mt_nop_reasons = "";
-
- /* ms2 constraints are dealt with in reorg. */
- if (TARGET_MS2)
- return;
-
- /* Only worry about real instructions. */
- if (! INSN_P (insn))
- return;
-
- /* Find the previous real instructions. */
- for (prev_i = PREV_INSN (insn);
- prev_i != NULL
- && (! INSN_P (prev_i)
- || GET_CODE (PATTERN (prev_i)) == USE
- || GET_CODE (PATTERN (prev_i)) == CLOBBER);
- prev_i = PREV_INSN (prev_i))
- {
- /* If we meet a barrier, there is no flow through here. */
- if (BARRIER_P (prev_i))
- return;
- }
-
- /* If there isn't one then there is nothing that we need do. */
- if (prev_i == NULL || ! INSN_P (prev_i))
- return;
-
- prev_attr = mt_get_attr_type (prev_i);
-
- /* Delayed branch slots already taken care of by delay branch scheduling. */
- if (prev_attr == TYPE_BRANCH)
- return;
-
- switch (mt_get_attr_type (insn))
- {
- case TYPE_LOAD:
- case TYPE_STORE:
- /* Avoid consecutive memory operation. */
- if ((prev_attr == TYPE_LOAD || prev_attr == TYPE_STORE)
- && TARGET_MS1_64_001)
- {
- mt_nops_required = 1;
- mt_nop_reasons = "consecutive mem ops";
- }
- /* Drop through. */
-
- case TYPE_ARITH:
- case TYPE_COMPLEX:
- /* One cycle of delay is required between load
- and the dependent arithmetic instruction. */
- if (prev_attr == TYPE_LOAD
- && insn_true_dependent_p (prev_i, insn))
- {
- mt_nops_required = 1;
- mt_nop_reasons = "load->arith dependency delay";
- }
- break;
-
- case TYPE_BRANCH:
- if (insn_dependent_p (prev_i, insn))
- {
- if (prev_attr == TYPE_ARITH && TARGET_MS1_64_001)
- {
- /* One cycle of delay between arith
- instructions and branch dependent on arith. */
- mt_nops_required = 1;
- mt_nop_reasons = "arith->branch dependency delay";
- }
- else if (prev_attr == TYPE_LOAD)
- {
- /* Two cycles of delay are required
- between load and dependent branch. */
- if (TARGET_MS1_64_001)
- mt_nops_required = 2;
- else
- mt_nops_required = 1;
- mt_nop_reasons = "load->branch dependency delay";
- }
- }
- break;
-
- default:
- fatal_insn ("mt_final_prescan_insn, invalid insn #1", insn);
- break;
- }
-}
-
-/* Print debugging information for a frame. */
-static void
-mt_debug_stack (struct mt_frame_info * info)
-{
- int regno;
-
- if (!info)
- {
- error ("info pointer NULL");
- gcc_unreachable ();
- }
-
- fprintf (stderr, "\nStack information for function %s:\n",
- ((current_function_decl && DECL_NAME (current_function_decl))
- ? IDENTIFIER_POINTER (DECL_NAME (current_function_decl))
- : "<unknown>"));
-
- fprintf (stderr, "\ttotal_size = %d\n", info->total_size);
- fprintf (stderr, "\tpretend_size = %d\n", info->pretend_size);
- fprintf (stderr, "\targs_size = %d\n", info->args_size);
- fprintf (stderr, "\textra_size = %d\n", info->extra_size);
- fprintf (stderr, "\treg_size = %d\n", info->reg_size);
- fprintf (stderr, "\tvar_size = %d\n", info->var_size);
- fprintf (stderr, "\tframe_size = %d\n", info->frame_size);
- fprintf (stderr, "\treg_mask = 0x%x\n", info->reg_mask);
- fprintf (stderr, "\tsave_fp = %d\n", info->save_fp);
- fprintf (stderr, "\tsave_lr = %d\n", info->save_lr);
- fprintf (stderr, "\tinitialized = %d\n", info->initialized);
- fprintf (stderr, "\tsaved registers =");
-
- /* Print out reg_mask in a more readable format. */
- for (regno = GPR_R0; regno <= GPR_LAST; regno++)
- if ( (1 << regno) & info->reg_mask)
- fprintf (stderr, " %s", reg_names[regno]);
-
- putc ('\n', stderr);
- fflush (stderr);
-}
-
-/* Print a memory address as an operand to reference that memory location. */
-
-static void
-mt_print_operand_simple_address (FILE * file, rtx addr)
-{
- if (!addr)
- error ("PRINT_OPERAND_ADDRESS, null pointer");
-
- else
- switch (GET_CODE (addr))
- {
- case REG:
- fprintf (file, "%s, #0", reg_names[REGNO (addr)]);
- break;
-
- case PLUS:
- {
- rtx reg = 0;
- rtx offset = 0;
- rtx arg0 = XEXP (addr, 0);
- rtx arg1 = XEXP (addr, 1);
-
- if (GET_CODE (arg0) == REG)
- {
- reg = arg0;
- offset = arg1;
- if (GET_CODE (offset) == REG)
- fatal_insn ("PRINT_OPERAND_ADDRESS, 2 regs", addr);
- }
-
- else if (GET_CODE (arg1) == REG)
- reg = arg1, offset = arg0;
- else if (CONSTANT_P (arg0) && CONSTANT_P (arg1))
- {
- fprintf (file, "%s, #", reg_names[GPR_R0]);
- output_addr_const (file, addr);
- break;
- }
- fprintf (file, "%s, #", reg_names[REGNO (reg)]);
- output_addr_const (file, offset);
- break;
- }
-
- case LABEL_REF:
- case SYMBOL_REF:
- case CONST_INT:
- case CONST:
- output_addr_const (file, addr);
- break;
-
- default:
- fatal_insn ("PRINT_OPERAND_ADDRESS, invalid insn #1", addr);
- break;
- }
-}
-
-/* Implement PRINT_OPERAND_ADDRESS. */
-void
-mt_print_operand_address (FILE * file, rtx addr)
-{
- if (GET_CODE (addr) == AND
- && GET_CODE (XEXP (addr, 1)) == CONST_INT
- && INTVAL (XEXP (addr, 1)) == -3)
- mt_print_operand_simple_address (file, XEXP (addr, 0));
- else
- mt_print_operand_simple_address (file, addr);
-}
-
-/* Implement PRINT_OPERAND. */
-void
-mt_print_operand (FILE * file, rtx x, int code)
-{
- switch (code)
- {
- case '#':
- /* Output a nop if there's nothing for the delay slot. */
- if (dbr_sequence_length () == 0)
- fputs ("\n\tnop", file);
- return;
-
- case 'H':
- fprintf(file, "#%%hi16(");
- output_addr_const (file, x);
- fprintf(file, ")");
- return;
-
- case 'L':
- fprintf(file, "#%%lo16(");
- output_addr_const (file, x);
- fprintf(file, ")");
- return;
-
- case 'N':
- fprintf(file, "#%ld", ~INTVAL (x));
- return;
-
- case 'z':
- if (GET_CODE (x) == CONST_INT && INTVAL (x) == 0)
- {
- fputs (reg_names[GPR_R0], file);
- return;
- }
-
- case 0:
- /* Handled below. */
- break;
-
- default:
- /* output_operand_lossage ("mt_print_operand: unknown code"); */
- fprintf (file, "unknown code");
- return;
- }
-
- switch (GET_CODE (x))
- {
- case REG:
- fputs (reg_names[REGNO (x)], file);
- break;
-
- case CONST:
- case CONST_INT:
- fprintf(file, "#%ld", INTVAL (x));
- break;
-
- case MEM:
- mt_print_operand_address(file, XEXP (x,0));
- break;
-
- case LABEL_REF:
- case SYMBOL_REF:
- output_addr_const (file, x);
- break;
-
- default:
- fprintf(file, "Uknown code: %d", GET_CODE (x));
- break;
- }
-
- return;
-}
-
-/* Implement INIT_CUMULATIVE_ARGS. */
-void
-mt_init_cumulative_args (CUMULATIVE_ARGS * cum, tree fntype, rtx libname,
- tree fndecl ATTRIBUTE_UNUSED, int incoming)
-{
- *cum = 0;
-
- if (TARGET_DEBUG_ARG)
- {
- fprintf (stderr, "\nmt_init_cumulative_args:");
-
- if (incoming)
- fputs (" incoming", stderr);
-
- if (fntype)
- {
- tree ret_type = TREE_TYPE (fntype);
- fprintf (stderr, " return = %s,",
- tree_code_name[ (int)TREE_CODE (ret_type) ]);
- }
-
- if (libname && GET_CODE (libname) == SYMBOL_REF)
- fprintf (stderr, " libname = %s", XSTR (libname, 0));
-
- if (cfun->returns_struct)
- fprintf (stderr, " return-struct");
-
- putc ('\n', stderr);
- }
-}
-
-/* Compute the slot number to pass an argument in.
- Returns the slot number or -1 if passing on the stack.
-
- CUM is a variable of type CUMULATIVE_ARGS which gives info about
- the preceding args and about the function being called.
- MODE is the argument's machine mode.
- TYPE is the data type of the argument (as a tree).
- This is null for libcalls where that information may
- not be available.
- NAMED is nonzero if this argument is a named parameter
- (otherwise it is an extra parameter matching an ellipsis).
- INCOMING_P is zero for FUNCTION_ARG, nonzero for FUNCTION_INCOMING_ARG.
- *PREGNO records the register number to use if scalar type. */
-
-static int
-mt_function_arg_slotno (const CUMULATIVE_ARGS * cum,
- enum machine_mode mode,
- tree type,
- int named ATTRIBUTE_UNUSED,
- int incoming_p ATTRIBUTE_UNUSED,
- int * pregno)
-{
- int regbase = FIRST_ARG_REGNUM;
- int slotno = * cum;
-
- if (mode == VOIDmode || targetm.calls.must_pass_in_stack (mode, type))
- return -1;
-
- if (slotno >= MT_NUM_ARG_REGS)
- return -1;
-
- * pregno = regbase + slotno;
-
- return slotno;
-}
-
-/* Implement FUNCTION_ARG. */
-rtx
-mt_function_arg (const CUMULATIVE_ARGS * cum,
- enum machine_mode mode,
- tree type,
- int named,
- int incoming_p)
-{
- int slotno, regno;
- rtx reg;
-
- slotno = mt_function_arg_slotno (cum, mode, type, named, incoming_p, ®no);
-
- if (slotno == -1)
- reg = NULL_RTX;
- else
- reg = gen_rtx_REG (mode, regno);
-
- return reg;
-}
-
-/* Implement FUNCTION_ARG_ADVANCE. */
-void
-mt_function_arg_advance (CUMULATIVE_ARGS * cum,
- enum machine_mode mode,
- tree type ATTRIBUTE_UNUSED,
- int named)
-{
- int slotno, regno;
-
- /* We pass 0 for incoming_p here, it doesn't matter. */
- slotno = mt_function_arg_slotno (cum, mode, type, named, 0, ®no);
-
- * cum += (mode != BLKmode
- ? ROUND_ADVANCE (GET_MODE_SIZE (mode))
- : ROUND_ADVANCE (int_size_in_bytes (type)));
-
- if (TARGET_DEBUG_ARG)
- fprintf (stderr,
- "mt_function_arg_advance: words = %2d, mode = %4s, named = %d, size = %3d\n",
- *cum, GET_MODE_NAME (mode), named,
- (*cum) * UNITS_PER_WORD);
-}
-
-/* Implement hook TARGET_ARG_PARTIAL_BYTES.
-
- Returns the number of bytes at the beginning of an argument that
- must be put in registers. The value must be zero for arguments
- that are passed entirely in registers or that are entirely pushed
- on the stack. */
-static int
-mt_arg_partial_bytes (CUMULATIVE_ARGS * pcum,
- enum machine_mode mode,
- tree type,
- bool named ATTRIBUTE_UNUSED)
-{
- int cum = * pcum;
- int words;
-
- if (mode == BLKmode)
- words = ((int_size_in_bytes (type) + UNITS_PER_WORD - 1)
- / UNITS_PER_WORD);
- else
- words = (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
-
- if (! targetm.calls.pass_by_reference (&cum, mode, type, named)
- && cum < MT_NUM_ARG_REGS
- && (cum + words) > MT_NUM_ARG_REGS)
- {
- int bytes = (MT_NUM_ARG_REGS - cum) * UNITS_PER_WORD;
-
- if (TARGET_DEBUG)
- fprintf (stderr, "function_arg_partial_nregs = %d\n", bytes);
- return bytes;
- }
-
- return 0;
-}
-
-
-/* Implement TARGET_PASS_BY_REFERENCE hook. */
-static bool
-mt_pass_by_reference (CUMULATIVE_ARGS * cum ATTRIBUTE_UNUSED,
- enum machine_mode mode ATTRIBUTE_UNUSED,
- const_tree type,
- bool named ATTRIBUTE_UNUSED)
-{
- return (type && int_size_in_bytes (type) > 4 * UNITS_PER_WORD);
-}
-
-/* Implement FUNCTION_ARG_BOUNDARY. */
-int
-mt_function_arg_boundary (enum machine_mode mode ATTRIBUTE_UNUSED,
- tree type ATTRIBUTE_UNUSED)
-{
- return BITS_PER_WORD;
-}
-
-/* Implement REG_OK_FOR_BASE_P. */
-int
-mt_reg_ok_for_base_p (rtx x, int strict)
-{
- if (strict)
- return (((unsigned) REGNO (x)) < FIRST_PSEUDO_REGISTER);
- return 1;
-}
-
-/* Helper function of mt_legitimate_address_p. Return true if XINSN
- is a simple address, otherwise false. */
-static bool
-mt_legitimate_simple_address_p (enum machine_mode mode ATTRIBUTE_UNUSED,
- rtx xinsn, int strict)
-{
- if (TARGET_DEBUG)
- {
- fprintf (stderr, "\n========== GO_IF_LEGITIMATE_ADDRESS, %sstrict\n",
- strict ? "" : "not ");
- debug_rtx (xinsn);
- }
-
- if (GET_CODE (xinsn) == REG && mt_reg_ok_for_base_p (xinsn, strict))
- return true;
-
- if (GET_CODE (xinsn) == PLUS
- && GET_CODE (XEXP (xinsn, 0)) == REG
- && mt_reg_ok_for_base_p (XEXP (xinsn, 0), strict)
- && GET_CODE (XEXP (xinsn, 1)) == CONST_INT
- && SMALL_INT (XEXP (xinsn, 1)))
- return true;
-
- return false;
-}
-
-
-/* Helper function of GO_IF_LEGITIMATE_ADDRESS. Return nonzero if
- XINSN is a legitimate address on MT. */
-int
-mt_legitimate_address_p (enum machine_mode mode, rtx xinsn, int strict)
-{
- if (mt_legitimate_simple_address_p (mode, xinsn, strict))
- return 1;
-
- if ((mode) == SImode
- && GET_CODE (xinsn) == AND
- && GET_CODE (XEXP (xinsn, 1)) == CONST_INT
- && INTVAL (XEXP (xinsn, 1)) == -3)
- return mt_legitimate_simple_address_p (mode, XEXP (xinsn, 0), strict);
- else
- return 0;
-}
-
-/* Return truth value of whether OP can be used as an operands where a
- register or 16-bit unsigned integer is needed. */
-
-int
-uns_arith_operand (rtx op, enum machine_mode mode)
-{
- if (GET_CODE (op) == CONST_INT && SMALL_INT_UNSIGNED (op))
- return 1;
-
- return register_operand (op, mode);
-}
-
-/* Return truth value of whether OP can be used as an operands where a
- 16-bit integer is needed. */
-
-int
-arith_operand (rtx op, enum machine_mode mode)
-{
- if (GET_CODE (op) == CONST_INT && SMALL_INT (op))
- return 1;
-
- return register_operand (op, mode);
-}
-
-/* Return truth value of whether OP is a register or the constant 0. */
-
-int
-reg_or_0_operand (rtx op, enum machine_mode mode)
-{
- switch (GET_CODE (op))
- {
- case CONST_INT:
- return INTVAL (op) == 0;
-
- case REG:
- case SUBREG:
- return register_operand (op, mode);
-
- default:
- break;
- }
-
- return 0;
-}
-
-/* Return truth value of whether OP is a constant that requires two
- loads to put in a register. */
-
-int
-big_const_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-{
- if (GET_CODE (op) == CONST_INT && CONST_OK_FOR_LETTER_P (INTVAL (op), 'M'))
- return 1;
-
- return 0;
-}
-
-/* Return truth value of whether OP is a constant that require only
- one load to put in a register. */
-
-int
-single_const_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-{
- if (big_const_operand (op, mode)
- || GET_CODE (op) == CONST
- || GET_CODE (op) == LABEL_REF
- || GET_CODE (op) == SYMBOL_REF)
- return 0;
-
- return 1;
-}
-
-/* True if the current function is an interrupt handler
- (either via #pragma or an attribute specification). */
-int interrupt_handler;
-enum processor_type mt_cpu;
-
-static struct machine_function *
-mt_init_machine_status (void)
-{
- struct machine_function *f;
-
- f = ggc_alloc_cleared (sizeof (struct machine_function));
-
- return f;
-}
-
-/* Implement OVERRIDE_OPTIONS. */
-void
-mt_override_options (void)
-{
- if (mt_cpu_string != NULL)
- {
- if (!strcmp (mt_cpu_string, "ms1-64-001"))
- mt_cpu = PROCESSOR_MS1_64_001;
- else if (!strcmp (mt_cpu_string, "ms1-16-002"))
- mt_cpu = PROCESSOR_MS1_16_002;
- else if (!strcmp (mt_cpu_string, "ms1-16-003"))
- mt_cpu = PROCESSOR_MS1_16_003;
- else if (!strcmp (mt_cpu_string, "ms2"))
- mt_cpu = PROCESSOR_MS2;
- else
- error ("bad value (%s) for -march= switch", mt_cpu_string);
- }
- else
- mt_cpu = PROCESSOR_MS1_16_002;
-
- if (flag_exceptions)
- {
- flag_omit_frame_pointer = 0;
- flag_gcse = 0;
- }
-
- /* We do delayed branch filling in machine dependent reorg */
- mt_flag_delayed_branch = flag_delayed_branch;
- flag_delayed_branch = 0;
-
- init_machine_status = mt_init_machine_status;
-}
-
-/* Do what is necessary for `va_start'. We look at the current function
- to determine if stdarg or varargs is used and return the address of the
- first unnamed parameter. */
-
-static void
-mt_setup_incoming_varargs (CUMULATIVE_ARGS *cum,
- enum machine_mode mode ATTRIBUTE_UNUSED,
- tree type ATTRIBUTE_UNUSED,
- int *pretend_size, int no_rtl)
-{
- int regno;
- int regs = MT_NUM_ARG_REGS - *cum;
-
- *pretend_size = regs < 0 ? 0 : GET_MODE_SIZE (SImode) * regs;
-
- if (no_rtl)
- return;
-
- for (regno = *cum; regno < MT_NUM_ARG_REGS; regno++)
- {
- rtx reg = gen_rtx_REG (SImode, FIRST_ARG_REGNUM + regno);
- rtx slot = gen_rtx_PLUS (Pmode,
- gen_rtx_REG (SImode, ARG_POINTER_REGNUM),
- GEN_INT (UNITS_PER_WORD * regno));
-
- emit_move_insn (gen_rtx_MEM (SImode, slot), reg);
- }
-}
-
-/* Returns the number of bytes offset between the frame pointer and the stack
- pointer for the current function. SIZE is the number of bytes of space
- needed for local variables. */
-
-unsigned int
-mt_compute_frame_size (int size)
-{
- int regno;
- unsigned int total_size;
- unsigned int var_size;
- unsigned int args_size;
- unsigned int pretend_size;
- unsigned int extra_size;
- unsigned int reg_size;
- unsigned int frame_size;
- unsigned int reg_mask;
-
- var_size = size;
- args_size = crtl->outgoing_args_size;
- pretend_size = crtl->args.pretend_args_size;
- extra_size = FIRST_PARM_OFFSET (0);
- total_size = extra_size + pretend_size + args_size + var_size;
- reg_size = 0;
- reg_mask = 0;
-
- /* Calculate space needed for registers. */
- for (regno = GPR_R0; regno <= GPR_LAST; regno++)
- {
- if (MUST_SAVE_REGISTER (regno))
- {
- reg_size += UNITS_PER_WORD;
- reg_mask |= 1 << regno;
- }
- }
-
- current_frame_info.save_fp = (df_regs_ever_live_p (GPR_FP)
- || frame_pointer_needed
- || interrupt_handler);
- current_frame_info.save_lr = (df_regs_ever_live_p (GPR_LINK)
- || profile_flag
- || interrupt_handler);
-
- reg_size += (current_frame_info.save_fp + current_frame_info.save_lr)
- * UNITS_PER_WORD;
- total_size += reg_size;
- total_size = ((total_size + 3) & ~3);
-
- frame_size = total_size;
-
- /* Save computed information. */
- current_frame_info.pretend_size = pretend_size;
- current_frame_info.var_size = var_size;
- current_frame_info.args_size = args_size;
- current_frame_info.reg_size = reg_size;
- current_frame_info.frame_size = args_size + var_size;
- current_frame_info.total_size = total_size;
- current_frame_info.extra_size = extra_size;
- current_frame_info.reg_mask = reg_mask;
- current_frame_info.initialized = reload_completed;
-
- return total_size;
-}
-
-/* Emit code to save REG in stack offset pointed to by MEM.
- STACK_OFFSET is the offset from the SP where the save will happen.
- This function sets the REG_FRAME_RELATED_EXPR note accordingly. */
-static void
-mt_emit_save_restore (enum save_direction direction,
- rtx reg, rtx mem, int stack_offset)
-{
- if (direction == FROM_PROCESSOR_TO_MEM)
- {
- rtx insn;
-
- insn = emit_move_insn (mem, reg);
- RTX_FRAME_RELATED_P (insn) = 1;
- REG_NOTES (insn)
- = gen_rtx_EXPR_LIST
- (REG_FRAME_RELATED_EXPR,
- gen_rtx_SET (VOIDmode,
- gen_rtx_MEM (SImode,
- gen_rtx_PLUS (SImode,
- stack_pointer_rtx,
- GEN_INT (stack_offset))),
- reg),
- REG_NOTES (insn));
- }
- else
- emit_move_insn (reg, mem);
-}
-
-
-/* Emit code to save the frame pointer in the prologue and restore
- frame pointer in epilogue. */
-
-static void
-mt_emit_save_fp (enum save_direction direction,
- struct mt_frame_info info)
-{
- rtx base_reg;
- int reg_mask = info.reg_mask & ~(FP_MASK | LINK_MASK);
- int offset = info.total_size;
- int stack_offset = info.total_size;
-
- /* If there is nothing to save, get out now. */
- if (! info.save_fp && ! info.save_lr && ! reg_mask)
- return;
-
- /* If offset doesn't fit in a 15-bit signed integer,
- uses a scratch registers to get a smaller offset. */
- if (CONST_OK_FOR_LETTER_P(offset, 'O'))
- base_reg = stack_pointer_rtx;
- else
- {
- /* Use the scratch register R9 that holds old stack pointer. */
- base_reg = gen_rtx_REG (SImode, GPR_R9);
- offset = 0;
- }
-
- if (info.save_fp)
- {
- offset -= UNITS_PER_WORD;
- stack_offset -= UNITS_PER_WORD;
- mt_emit_save_restore
- (direction, gen_rtx_REG (SImode, GPR_FP),
- gen_rtx_MEM (SImode,
- gen_rtx_PLUS (SImode, base_reg, GEN_INT (offset))),
- stack_offset);
- }
-}
-
-/* Emit code to save registers in the prologue and restore register
- in epilogue. */
-
-static void
-mt_emit_save_regs (enum save_direction direction,
- struct mt_frame_info info)
-{
- rtx base_reg;
- int regno;
- int reg_mask = info.reg_mask & ~(FP_MASK | LINK_MASK);
- int offset = info.total_size;
- int stack_offset = info.total_size;
-
- /* If there is nothing to save, get out now. */
- if (! info.save_fp && ! info.save_lr && ! reg_mask)
- return;
-
- /* If offset doesn't fit in a 15-bit signed integer,
- uses a scratch registers to get a smaller offset. */
- if (CONST_OK_FOR_LETTER_P(offset, 'O'))
- base_reg = stack_pointer_rtx;
- else
- {
- /* Use the scratch register R9 that holds old stack pointer. */
- base_reg = gen_rtx_REG (SImode, GPR_R9);
- offset = 0;
- }
-
- if (info.save_fp)
- {
- /* This just records the space for it, the actual move generated in
- mt_emit_save_fp (). */
- offset -= UNITS_PER_WORD;
- stack_offset -= UNITS_PER_WORD;
- }
-
- if (info.save_lr)
- {
- offset -= UNITS_PER_WORD;
- stack_offset -= UNITS_PER_WORD;
- mt_emit_save_restore
- (direction, gen_rtx_REG (SImode, GPR_LINK),
- gen_rtx_MEM (SImode,
- gen_rtx_PLUS (SImode, base_reg, GEN_INT (offset))),
- stack_offset);
- }
-
- /* Save any needed call-saved regs. */
- for (regno = GPR_R0; regno <= GPR_LAST; regno++)
- {
- if ((reg_mask & (1 << regno)) != 0)
- {
- offset -= UNITS_PER_WORD;
- stack_offset -= UNITS_PER_WORD;
- mt_emit_save_restore
- (direction, gen_rtx_REG (SImode, regno),
- gen_rtx_MEM (SImode,
- gen_rtx_PLUS (SImode, base_reg, GEN_INT (offset))),
- stack_offset);
- }
- }
-}
-
-/* Return true if FUNC is a function with the 'interrupt' attribute. */
-static bool
-mt_interrupt_function_p (tree func)
-{
- tree a;
-
- if (TREE_CODE (func) != FUNCTION_DECL)
- return false;
-
- a = lookup_attribute ("interrupt", DECL_ATTRIBUTES (func));
- return a != NULL_TREE;
-}
-
-/* Generate prologue code. */
-void
-mt_expand_prologue (void)
-{
- rtx size_rtx, insn;
- unsigned int frame_size;
-
- if (mt_interrupt_function_p (current_function_decl))
- {
- interrupt_handler = 1;
- if (cfun->machine)
- cfun->machine->interrupt_handler = 1;
- }
-
- mt_compute_frame_size (get_frame_size ());
-
- if (TARGET_DEBUG_STACK)
- mt_debug_stack (¤t_frame_info);
-
- /* Compute size of stack adjustment. */
- frame_size = current_frame_info.total_size;
-
- /* If offset doesn't fit in a 15-bit signed integer,
- uses a scratch registers to get a smaller offset. */
- if (CONST_OK_FOR_LETTER_P(frame_size, 'O'))
- size_rtx = GEN_INT (frame_size);
- else
- {
- /* We do not have any scratch registers. */
- gcc_assert (!interrupt_handler);
-
- size_rtx = gen_rtx_REG (SImode, GPR_R9);
- insn = emit_move_insn (size_rtx, GEN_INT (frame_size & 0xffff0000));
- insn = emit_insn (gen_iorsi3 (size_rtx, size_rtx,
- GEN_INT (frame_size & 0x0000ffff)));
- }
-
- /* Allocate stack for this frame. */
- /* Make stack adjustment and use scratch register if constant too
- large to fit as immediate. */
- if (frame_size)
- {
- insn = emit_insn (gen_subsi3 (stack_pointer_rtx,
- stack_pointer_rtx,
- size_rtx));
- RTX_FRAME_RELATED_P (insn) = 1;
- REG_NOTES (insn)
- = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR,
- gen_rtx_SET (VOIDmode,
- stack_pointer_rtx,
- gen_rtx_MINUS (SImode,
- stack_pointer_rtx,
- GEN_INT (frame_size))),
- REG_NOTES (insn));
- }
-
- /* Set R9 to point to old sp if required for access to register save
- area. */
- if ( current_frame_info.reg_size != 0
- && !CONST_OK_FOR_LETTER_P (frame_size, 'O'))
- emit_insn (gen_addsi3 (size_rtx, size_rtx, stack_pointer_rtx));
-
- /* Save the frame pointer. */
- mt_emit_save_fp (FROM_PROCESSOR_TO_MEM, current_frame_info);
-
- /* Now put the frame pointer into the frame pointer register. */
- if (frame_pointer_needed)
- {
- insn = emit_move_insn (frame_pointer_rtx, stack_pointer_rtx);
- RTX_FRAME_RELATED_P (insn) = 1;
- }
-
- /* Save the registers. */
- mt_emit_save_regs (FROM_PROCESSOR_TO_MEM, current_frame_info);
-
- /* If we are profiling, make sure no instructions are scheduled before
- the call to mcount. */
- if (profile_flag)
- emit_insn (gen_blockage ());
-}
-
-/* Implement EPILOGUE_USES. */
-int
-mt_epilogue_uses (int regno)
-{
- if (cfun->machine && cfun->machine->interrupt_handler && reload_completed)
- return 1;
- return regno == GPR_LINK;
-}
-
-/* Generate epilogue. EH_MODE is NORMAL_EPILOGUE when generating a
- function epilogue, or EH_EPILOGUE when generating an EH
- epilogue. */
-void
-mt_expand_epilogue (enum epilogue_type eh_mode)
-{
- rtx size_rtx, insn;
- unsigned frame_size;
-
- mt_compute_frame_size (get_frame_size ());
-
- if (TARGET_DEBUG_STACK)
- mt_debug_stack (& current_frame_info);
-
- /* Compute size of stack adjustment. */
- frame_size = current_frame_info.total_size;
-
- /* If offset doesn't fit in a 15-bit signed integer,
- uses a scratch registers to get a smaller offset. */
- if (CONST_OK_FOR_LETTER_P(frame_size, 'O'))
- size_rtx = GEN_INT (frame_size);
- else
- {
- /* We do not have any scratch registers. */
- gcc_assert (!interrupt_handler);
-
- size_rtx = gen_rtx_REG (SImode, GPR_R9);
- insn = emit_move_insn (size_rtx, GEN_INT (frame_size & 0xffff0000));
- insn = emit_insn (gen_iorsi3 (size_rtx, size_rtx,
- GEN_INT (frame_size & 0x0000ffff)));
- /* Set R9 to point to old sp if required for access to register
- save area. */
- emit_insn (gen_addsi3 (size_rtx, size_rtx, stack_pointer_rtx));
- }
-
- /* Restore sp if there was some possible change to it. */
- if (frame_pointer_needed)
- insn = emit_move_insn (stack_pointer_rtx, frame_pointer_rtx);
-
- /* Restore the registers. */
- mt_emit_save_fp (FROM_MEM_TO_PROCESSOR, current_frame_info);
- mt_emit_save_regs (FROM_MEM_TO_PROCESSOR, current_frame_info);
-
- /* Make stack adjustment and use scratch register if constant too
- large to fit as immediate. */
- if (frame_size)
- {
- if (CONST_OK_FOR_LETTER_P(frame_size, 'O'))
- /* Can handle this with simple add. */
- insn = emit_insn (gen_addsi3 (stack_pointer_rtx,
- stack_pointer_rtx,
- size_rtx));
- else
- /* Scratch reg R9 has the old sp value. */
- insn = emit_move_insn (stack_pointer_rtx,
- gen_rtx_REG (SImode, GPR_R9));
-
- REG_NOTES (insn)
- = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR,
- gen_rtx_SET (VOIDmode,
- stack_pointer_rtx,
- gen_rtx_PLUS (SImode,
- stack_pointer_rtx,
- GEN_INT (frame_size))),
- REG_NOTES (insn));
- }
-
- if (cfun->machine && cfun->machine->eh_stack_adjust != NULL_RTX)
- /* Perform the additional bump for __throw. */
- emit_insn (gen_addsi3 (stack_pointer_rtx,
- stack_pointer_rtx,
- cfun->machine->eh_stack_adjust));
-
- /* Generate the appropriate return. */
- if (eh_mode == EH_EPILOGUE)
- {
- emit_jump_insn (gen_eh_return_internal ());
- emit_barrier ();
- }
- else if (interrupt_handler)
- emit_jump_insn (gen_return_interrupt_internal ());
- else
- emit_jump_insn (gen_return_internal ());
-
- /* Reset state info for each function. */
- interrupt_handler = 0;
- current_frame_info = zero_frame_info;
- if (cfun->machine)
- cfun->machine->eh_stack_adjust = NULL_RTX;
-}
-
-
-/* Generate code for the "eh_return" pattern. */
-void
-mt_expand_eh_return (rtx * operands)
-{
- if (GET_CODE (operands[0]) != REG
- || REGNO (operands[0]) != EH_RETURN_STACKADJ_REGNO)
- {
- rtx sp = EH_RETURN_STACKADJ_RTX;
-
- emit_move_insn (sp, operands[0]);
- operands[0] = sp;
- }
-
- emit_insn (gen_eh_epilogue (operands[0]));
-}
-
-/* Generate code for the "eh_epilogue" pattern. */
-void
-mt_emit_eh_epilogue (rtx * operands ATTRIBUTE_UNUSED)
-{
- cfun->machine->eh_stack_adjust = EH_RETURN_STACKADJ_RTX; /* operands[0]; */
- mt_expand_epilogue (EH_EPILOGUE);
-}
-
-/* Handle an "interrupt" attribute. */
-static tree
-mt_handle_interrupt_attribute (tree * node,
- tree name,
- tree args ATTRIBUTE_UNUSED,
- int flags ATTRIBUTE_UNUSED,
- bool * no_add_attrs)
-{
- if (TREE_CODE (*node) != FUNCTION_DECL)
- {
- warning (OPT_Wattributes,
- "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
- *no_add_attrs = true;
- }
-
- return NULL_TREE;
-}
-
-/* Table of machine attributes. */
-const struct attribute_spec mt_attribute_table[] =
-{
- /* name, min, max, decl?, type?, func?, handler */
- { "interrupt", 0, 0, false, false, false, mt_handle_interrupt_attribute },
- { NULL, 0, 0, false, false, false, NULL }
-};
-
-/* Implement INITIAL_ELIMINATION_OFFSET. */
-int
-mt_initial_elimination_offset (int from, int to)
-{
- mt_compute_frame_size (get_frame_size ());
-
- if (from == FRAME_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
- return 0;
-
- else if (from == ARG_POINTER_REGNUM && to == STACK_POINTER_REGNUM)
- return current_frame_info.total_size;
-
- else if (from == ARG_POINTER_REGNUM && to == FRAME_POINTER_REGNUM)
- return current_frame_info.total_size;
-
- else
- gcc_unreachable ();
-}
-
-/* Generate a compare for CODE. Return a brand-new rtx that
- represents the result of the compare. */
-
-static rtx
-mt_generate_compare (enum rtx_code code, rtx op0, rtx op1)
-{
- rtx scratch0, scratch1, const_scratch;
-
- switch (code)
- {
- case GTU:
- case LTU:
- case GEU:
- case LEU:
- /* Need to adjust ranges for faking unsigned compares. */
- scratch0 = gen_reg_rtx (SImode);
- scratch1 = gen_reg_rtx (SImode);
- const_scratch = force_reg (SImode, GEN_INT(MT_MIN_INT));
- emit_insn (gen_addsi3 (scratch0, const_scratch, op0));
- emit_insn (gen_addsi3 (scratch1, const_scratch, op1));
- break;
- default:
- scratch0 = op0;
- scratch1 = op1;
- break;
- }
-
- /* Adjust compare operator to fake unsigned compares. */
- switch (code)
- {
- case GTU:
- code = GT; break;
- case LTU:
- code = LT; break;
- case GEU:
- code = GE; break;
- case LEU:
- code = LE; break;
- default:
- /* do nothing */
- break;
- }
-
- /* Generate the actual compare. */
- return gen_rtx_fmt_ee (code, VOIDmode, scratch0, scratch1);
-}
-
-/* Emit a branch of kind CODE to location LOC. */
-
-void
-mt_emit_cbranch (enum rtx_code code, rtx loc, rtx op0, rtx op1)
-{
- rtx condition_rtx, loc_ref;
-
- if (! reg_or_0_operand (op0, SImode))
- op0 = copy_to_mode_reg (SImode, op0);
-
- if (! reg_or_0_operand (op1, SImode))
- op1 = copy_to_mode_reg (SImode, op1);
-
- condition_rtx = mt_generate_compare (code, op0, op1);
- loc_ref = gen_rtx_LABEL_REF (VOIDmode, loc);
- emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx,
- gen_rtx_IF_THEN_ELSE (VOIDmode, condition_rtx,
- loc_ref, pc_rtx)));
-}
-
-/* Subfunction of the following function. Update the flags of any MEM
- found in part of X. */
-
-static void
-mt_set_memflags_1 (rtx x, int in_struct_p, int volatile_p)
-{
- int i;
-
- switch (GET_CODE (x))
- {
- case SEQUENCE:
- case PARALLEL:
- for (i = XVECLEN (x, 0) - 1; i >= 0; i--)
- mt_set_memflags_1 (XVECEXP (x, 0, i), in_struct_p, volatile_p);
- break;
-
- case INSN:
- mt_set_memflags_1 (PATTERN (x), in_struct_p, volatile_p);
- break;
-
- case SET:
- mt_set_memflags_1 (SET_DEST (x), in_struct_p, volatile_p);
- mt_set_memflags_1 (SET_SRC (x), in_struct_p, volatile_p);
- break;
-
- case MEM:
- MEM_IN_STRUCT_P (x) = in_struct_p;
- MEM_VOLATILE_P (x) = volatile_p;
- /* Sadly, we cannot use alias sets because the extra aliasing
- produced by the AND interferes. Given that two-byte quantities
- are the only thing we would be able to differentiate anyway,
- there does not seem to be any point in convoluting the early
- out of the alias check. */
- /* set_mem_alias_set (x, alias_set); */
- break;
-
- default:
- break;
- }
-}
-
-/* Look for any MEMs in the current sequence of insns and set the
- in-struct, unchanging, and volatile flags from the flags in REF.
- If REF is not a MEM, don't do anything. */
-
-void
-mt_set_memflags (rtx ref)
-{
- rtx insn;
- int in_struct_p, volatile_p;
-
- if (GET_CODE (ref) != MEM)
- return;
-
- in_struct_p = MEM_IN_STRUCT_P (ref);
- volatile_p = MEM_VOLATILE_P (ref);
-
- /* This is only called from mt.md, after having had something
- generated from one of the insn patterns. So if everything is
- zero, the pattern is already up-to-date. */
- if (! in_struct_p && ! volatile_p)
- return;
-
- for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
- mt_set_memflags_1 (insn, in_struct_p, volatile_p);
-}
-
-/* Implement SECONDARY_RELOAD_CLASS. */
-enum reg_class
-mt_secondary_reload_class (enum reg_class class ATTRIBUTE_UNUSED,
- enum machine_mode mode,
- rtx x)
-{
- if ((mode == QImode && (!TARGET_BYTE_ACCESS)) || mode == HImode)
- {
- if (GET_CODE (x) == MEM
- || (GET_CODE (x) == REG && true_regnum (x) == -1)
- || (GET_CODE (x) == SUBREG
- && (GET_CODE (SUBREG_REG (x)) == MEM
- || (GET_CODE (SUBREG_REG (x)) == REG
- && true_regnum (SUBREG_REG (x)) == -1))))
- return GENERAL_REGS;
- }
-
- return NO_REGS;
-}
-
-/* Handle FUNCTION_VALUE, FUNCTION_OUTGOING_VALUE, and LIBCALL_VALUE
- macros. */
-rtx
-mt_function_value (const_tree valtype, enum machine_mode mode, const_tree func_decl ATTRIBUTE_UNUSED)
-{
- if ((mode) == DImode || (mode) == DFmode)
- return gen_rtx_MEM (mode, gen_rtx_REG (mode, RETURN_VALUE_REGNUM));
-
- if (valtype)
- mode = TYPE_MODE (valtype);
-
- return gen_rtx_REG (mode, RETURN_VALUE_REGNUM);
-}
-
-/* Split a move into two smaller pieces.
- MODE indicates the reduced mode. OPERANDS[0] is the original destination
- OPERANDS[1] is the original src. The new destinations are
- OPERANDS[2] and OPERANDS[4], while the new sources are OPERANDS[3]
- and OPERANDS[5]. */
-
-void
-mt_split_words (enum machine_mode nmode,
- enum machine_mode omode,
- rtx *operands)
-{
- rtx dl,dh; /* src/dest pieces. */
- rtx sl,sh;
- int move_high_first = 0; /* Assume no overlap. */
-
- switch (GET_CODE (operands[0])) /* Dest. */
- {
- case SUBREG:
- case REG:
- if ((GET_CODE (operands[1]) == REG
- || GET_CODE (operands[1]) == SUBREG)
- && true_regnum (operands[0]) <= true_regnum (operands[1]))
- move_high_first = 1;
-
- if (GET_CODE (operands[0]) == SUBREG)
- {
- dl = gen_rtx_SUBREG (nmode, SUBREG_REG (operands[0]),
- SUBREG_BYTE (operands[0]) + GET_MODE_SIZE (nmode));
- dh = gen_rtx_SUBREG (nmode, SUBREG_REG (operands[0]), SUBREG_BYTE (operands[0]));
- }
- else if (GET_CODE (operands[0]) == REG && ! IS_PSEUDO_P (operands[0]))
- {
- int r = REGNO (operands[0]);
- dh = gen_rtx_REG (nmode, r);
- dl = gen_rtx_REG (nmode, r + HARD_REGNO_NREGS (r, nmode));
- }
- else
- {
- dh = gen_rtx_SUBREG (nmode, operands[0], 0);
- dl = gen_rtx_SUBREG (nmode, operands[0], GET_MODE_SIZE (nmode));
- }
- break;
-
- case MEM:
- switch (GET_CODE (XEXP (operands[0], 0)))
- {
- case POST_INC:
- case POST_DEC:
- gcc_unreachable ();
- default:
- dl = operand_subword (operands[0],
- GET_MODE_SIZE (nmode)/UNITS_PER_WORD,
- 0, omode);
- dh = operand_subword (operands[0], 0, 0, omode);
- }
- break;
- default:
- gcc_unreachable ();
- }
-
- switch (GET_CODE (operands[1]))
- {
- case REG:
- if (! IS_PSEUDO_P (operands[1]))
- {
- int r = REGNO (operands[1]);
-
- sh = gen_rtx_REG (nmode, r);
- sl = gen_rtx_REG (nmode, r + HARD_REGNO_NREGS (r, nmode));
- }
- else
- {
- sh = gen_rtx_SUBREG (nmode, operands[1], 0);
- sl = gen_rtx_SUBREG (nmode, operands[1], GET_MODE_SIZE (nmode));
- }
- break;
-
- case CONST_DOUBLE:
- if (operands[1] == const0_rtx)
- sh = sl = const0_rtx;
- else
- split_double (operands[1], & sh, & sl);
- break;
-
- case CONST_INT:
- if (operands[1] == const0_rtx)
- sh = sl = const0_rtx;
- else
- {
- int vl, vh;
-
- switch (nmode)
- {
- default:
- gcc_unreachable ();
- }
-
- sl = GEN_INT (vl);
- sh = GEN_INT (vh);
- }
- break;
-
- case SUBREG:
- sl = gen_rtx_SUBREG (nmode,
- SUBREG_REG (operands[1]),
- SUBREG_BYTE (operands[1]) + GET_MODE_SIZE (nmode));
- sh = gen_rtx_SUBREG (nmode,
- SUBREG_REG (operands[1]),
- SUBREG_BYTE (operands[1]));
- break;
-
- case MEM:
- switch (GET_CODE (XEXP (operands[1], 0)))
- {
- case POST_DEC:
- case POST_INC:
- gcc_unreachable ();
- break;
- default:
- sl = operand_subword (operands[1],
- GET_MODE_SIZE (nmode)/UNITS_PER_WORD,
- 0, omode);
- sh = operand_subword (operands[1], 0, 0, omode);
-
- /* Check if the DF load is going to clobber the register
- used for the address, and if so make sure that is going
- to be the second move. */
- if (GET_CODE (dl) == REG
- && true_regnum (dl)
- == true_regnum (XEXP (XEXP (sl, 0 ), 0)))
- move_high_first = 1;
- }
- break;
- default:
- gcc_unreachable ();
- }
-
- if (move_high_first)
- {
- operands[2] = dh;
- operands[3] = sh;
- operands[4] = dl;
- operands[5] = sl;
- }
- else
- {
- operands[2] = dl;
- operands[3] = sl;
- operands[4] = dh;
- operands[5] = sh;
- }
- return;
-}
-
-/* Implement TARGET_MUST_PASS_IN_STACK hook. */
-static bool
-mt_pass_in_stack (enum machine_mode mode ATTRIBUTE_UNUSED, const_tree type)
-{
- return (((type) != 0
- && (TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST
- || TREE_ADDRESSABLE (type))));
-}
-\f
-/* Increment the counter for the number of loop instructions in the
- current function. */
-
-void mt_add_loop (void)
-{
- cfun->machine->has_loops++;
-}
-
-
-/* Maximum loop nesting depth. */
-#define MAX_LOOP_DEPTH 4
-/* Maximum size of a loop (allows some headroom for delayed branch slot
- filling. */
-#define MAX_LOOP_LENGTH (200 * 4)
-
-/* We need to keep a vector of loops */
-typedef struct loop_info *loop_info;
-DEF_VEC_P (loop_info);
-DEF_VEC_ALLOC_P (loop_info,heap);
-
-/* Information about a loop we have found (or are in the process of
- finding). */
-struct loop_info GTY (())
-{
- /* loop number, for dumps */
- int loop_no;
-
- /* Predecessor block of the loop. This is the one that falls into
- the loop and contains the initialization instruction. */
- basic_block predecessor;
-
- /* First block in the loop. This is the one branched to by the dbnz
- insn. */
- basic_block head;
-
- /* Last block in the loop (the one with the dbnz insn */
- basic_block tail;
-
- /* The successor block of the loop. This is the one the dbnz insn
- falls into. */
- basic_block successor;
-
- /* The dbnz insn. */
- rtx dbnz;
-
- /* The initialization insn. */
- rtx init;
-
- /* The new initialization instruction. */
- rtx loop_init;
-
- /* The new ending instruction. */
- rtx loop_end;
-
- /* The new label placed at the end of the loop. */
- rtx end_label;
-
- /* The nesting depth of the loop. Set to -1 for a bad loop. */
- int depth;
-
- /* The length of the loop. */
- int length;
-
- /* Next loop in the graph. */
- struct loop_info *next;
-
- /* Vector of blocks only within the loop, (excluding those within
- inner loops). */
- VEC (basic_block,heap) *blocks;
-
- /* Vector of inner loops within this loop */
- VEC (loop_info,heap) *loops;
-};
-
-/* Information used during loop detection. */
-typedef struct loop_work GTY(())
-{
- /* Basic block to be scanned. */
- basic_block block;
-
- /* Loop it will be within. */
- loop_info loop;
-} loop_work;
-
-/* Work list. */
-DEF_VEC_O (loop_work);
-DEF_VEC_ALLOC_O (loop_work,heap);
-
-/* Determine the nesting and length of LOOP. Return false if the loop
- is bad. */
-
-static bool
-mt_loop_nesting (loop_info loop)
-{
- loop_info inner;
- unsigned ix;
- int inner_depth = 0;
-
- if (!loop->depth)
- {
- /* Make sure we only have one entry point. */
- if (EDGE_COUNT (loop->head->preds) == 2)
- {
- loop->predecessor = EDGE_PRED (loop->head, 0)->src;
- if (loop->predecessor == loop->tail)
- /* We wanted the other predecessor. */
- loop->predecessor = EDGE_PRED (loop->head, 1)->src;
-
- /* We can only place a loop insn on a fall through edge of a
- single exit block. */
- if (EDGE_COUNT (loop->predecessor->succs) != 1
- || !(EDGE_SUCC (loop->predecessor, 0)->flags & EDGE_FALLTHRU))
- loop->predecessor = NULL;
- }
-
- /* Mark this loop as bad for now. */
- loop->depth = -1;
- if (loop->predecessor)
- {
- for (ix = 0; VEC_iterate (loop_info, loop->loops, ix++, inner);)
- {
- if (!inner->depth)
- mt_loop_nesting (inner);
-
- if (inner->depth < 0)
- {
- inner_depth = -1;
- break;
- }
-
- if (inner_depth < inner->depth)
- inner_depth = inner->depth;
- loop->length += inner->length;
- }
-
- /* Set the proper loop depth, if it was good. */
- if (inner_depth >= 0)
- loop->depth = inner_depth + 1;
- }
- }
- return (loop->depth > 0
- && loop->predecessor
- && loop->depth < MAX_LOOP_DEPTH
- && loop->length < MAX_LOOP_LENGTH);
-}
-
-/* Determine the length of block BB. */
-
-static int
-mt_block_length (basic_block bb)
-{
- int length = 0;
- rtx insn;
-
- for (insn = BB_HEAD (bb);
- insn != NEXT_INSN (BB_END (bb));
- insn = NEXT_INSN (insn))
- {
- if (!INSN_P (insn))
- continue;
- if (CALL_P (insn))
- {
- /* Calls are not allowed in loops. */
- length = MAX_LOOP_LENGTH + 1;
- break;
- }
-
- length += get_attr_length (insn);
- }
- return length;
-}
-
-/* Scan the blocks of LOOP (and its inferiors) looking for uses of
- REG. Return true, if we find any. Don't count the loop's dbnz
- insn if it matches DBNZ. */
-
-static bool
-mt_scan_loop (loop_info loop, rtx reg, rtx dbnz)
-{
- unsigned ix;
- loop_info inner;
- basic_block bb;
-
- for (ix = 0; VEC_iterate (basic_block, loop->blocks, ix, bb); ix++)
- {
- rtx insn;
-
- for (insn = BB_HEAD (bb);
- insn != NEXT_INSN (BB_END (bb));
- insn = NEXT_INSN (insn))
- {
- if (!INSN_P (insn))
- continue;
- if (insn == dbnz)
- continue;
- if (reg_mentioned_p (reg, PATTERN (insn)))
- return true;
- }
- }
- for (ix = 0; VEC_iterate (loop_info, loop->loops, ix, inner); ix++)
- if (mt_scan_loop (inner, reg, NULL_RTX))
- return true;
-
- return false;
-}
-
-/* MS2 has a loop instruction which needs to be placed just before the
- loop. It indicates the end of the loop and specifies the number of
- loop iterations. It can be nested with an automatically maintained
- stack of counter and end address registers. It's an ideal
- candidate for doloop. Unfortunately, gcc presumes that loops
- always end with an explicit instruction, and the doloop_begin
- instruction is not a flow control instruction so it can be
- scheduled earlier than just before the start of the loop. To make
- matters worse, the optimization pipeline can duplicate loop exit
- and entrance blocks and fails to track abnormally exiting loops.
- Thus we cannot simply use doloop.
-
- What we do is emit a dbnz pattern for the doloop optimization, and
- let that be optimized as normal. Then in machine dependent reorg
- we have to repeat the loop searching algorithm. We use the
- flow graph to find closed loops ending in a dbnz insn. We then try
- and convert it to use the loop instruction. The conditions are,
-
- * the loop has no abnormal exits, duplicated end conditions or
- duplicated entrance blocks
-
- * the loop counter register is only used in the dbnz instruction
- within the loop
-
- * we can find the instruction setting the initial value of the loop
- counter
-
- * the loop is not executed more than 65535 times. (This might be
- changed to 2^32-1, and would therefore allow variable initializers.)
-
- * the loop is not nested more than 4 deep 5) there are no
- subroutine calls in the loop. */
-
-static void
-mt_reorg_loops (FILE *dump_file)
-{
- basic_block bb;
- loop_info loops = NULL;
- loop_info loop;
- int nloops = 0;
- unsigned dwork = 0;
- VEC (loop_work,heap) *works = VEC_alloc (loop_work,heap,20);
- loop_work *work;
- edge e;
- edge_iterator ei;
- bool replaced = false;
-
- /* Find all the possible loop tails. This means searching for every
- dbnz instruction. For each one found, create a loop_info
- structure and add the head block to the work list. */
- FOR_EACH_BB (bb)
- {
- rtx tail = BB_END (bb);
-
- while (GET_CODE (tail) == NOTE)
- tail = PREV_INSN (tail);
-
- bb->aux = NULL;
- if (recog_memoized (tail) == CODE_FOR_decrement_and_branch_until_zero)
- {
- /* A possible loop end */
-
- loop = XNEW (struct loop_info);
- loop->next = loops;
- loops = loop;
- loop->tail = bb;
- loop->head = BRANCH_EDGE (bb)->dest;
- loop->successor = FALLTHRU_EDGE (bb)->dest;
- loop->predecessor = NULL;
- loop->dbnz = tail;
- loop->depth = 0;
- loop->length = mt_block_length (bb);
- loop->blocks = VEC_alloc (basic_block, heap, 20);
- VEC_quick_push (basic_block, loop->blocks, bb);
- loop->loops = NULL;
- loop->loop_no = nloops++;
-
- loop->init = loop->end_label = NULL_RTX;
- loop->loop_init = loop->loop_end = NULL_RTX;
-
- work = VEC_safe_push (loop_work, heap, works, NULL);
- work->block = loop->head;
- work->loop = loop;
-
- bb->aux = loop;
-
- if (dump_file)
- {
- fprintf (dump_file, ";; potential loop %d ending at\n",
- loop->loop_no);
- print_rtl_single (dump_file, tail);
- }
- }
- }
-
- /* Now find all the closed loops.
- until work list empty,
- if block's auxptr is set
- if != loop slot
- if block's loop's start != block
- mark loop as bad
- else
- append block's loop's fallthrough block to worklist
- increment this loop's depth
- else if block is exit block
- mark loop as bad
- else
- set auxptr
- for each target of block
- add to worklist */
- while (VEC_iterate (loop_work, works, dwork++, work))
- {
- loop = work->loop;
- bb = work->block;
- if (bb == EXIT_BLOCK_PTR)
- /* We've reached the exit block. The loop must be bad. */
- loop->depth = -1;
- else if (!bb->aux)
- {
- /* We've not seen this block before. Add it to the loop's
- list and then add each successor to the work list. */
- bb->aux = loop;
- loop->length += mt_block_length (bb);
- VEC_safe_push (basic_block, heap, loop->blocks, bb);
- FOR_EACH_EDGE (e, ei, bb->succs)
- {
- if (!VEC_space (loop_work, works, 1))
- {
- if (dwork)
- {
- VEC_block_remove (loop_work, works, 0, dwork);
- dwork = 0;
- }
- else
- VEC_reserve (loop_work, heap, works, 1);
- }
- work = VEC_quick_push (loop_work, works, NULL);
- work->block = EDGE_SUCC (bb, ei.index)->dest;
- work->loop = loop;
- }
- }
- else if (bb->aux != loop)
- {
- /* We've seen this block in a different loop. If it's not
- the other loop's head, then this loop must be bad.
- Otherwise, the other loop might be a nested loop, so
- continue from that loop's successor. */
- loop_info other = bb->aux;
-
- if (other->head != bb)
- loop->depth = -1;
- else
- {
- VEC_safe_push (loop_info, heap, loop->loops, other);
- work = VEC_safe_push (loop_work, heap, works, NULL);
- work->loop = loop;
- work->block = other->successor;
- }
- }
- }
- VEC_free (loop_work, heap, works);
-
- /* Now optimize the loops. */
- for (loop = loops; loop; loop = loop->next)
- {
- rtx iter_reg, insn, init_insn;
- rtx init_val, loop_end, loop_init, end_label, head_label;
-
- if (!mt_loop_nesting (loop))
- {
- if (dump_file)
- fprintf (dump_file, ";; loop %d is bad\n", loop->loop_no);
- continue;
- }
-
- /* Get the loop iteration register. */
- iter_reg = SET_DEST (XVECEXP (PATTERN (loop->dbnz), 0, 1));
-
- if (!REG_P (iter_reg))
- {
- /* Spilled */
- if (dump_file)
- fprintf (dump_file, ";; loop %d has spilled iteration count\n",
- loop->loop_no);
- continue;
- }
-
- /* Look for the initializing insn */
- init_insn = NULL_RTX;
- for (insn = BB_END (loop->predecessor);
- insn != PREV_INSN (BB_HEAD (loop->predecessor));
- insn = PREV_INSN (insn))
- {
- if (!INSN_P (insn))
- continue;
- if (reg_mentioned_p (iter_reg, PATTERN (insn)))
- {
- rtx set = single_set (insn);
-
- if (set && rtx_equal_p (iter_reg, SET_DEST (set)))
- init_insn = insn;
- break;
- }
- }
-
- if (!init_insn)
- {
- if (dump_file)
- fprintf (dump_file, ";; loop %d has no initializer\n",
- loop->loop_no);
- continue;
- }
- if (dump_file)
- {
- fprintf (dump_file, ";; loop %d initialized by\n",
- loop->loop_no);
- print_rtl_single (dump_file, init_insn);
- }
-
- init_val = PATTERN (init_insn);
- if (GET_CODE (init_val) == SET)
- init_val = SET_SRC (init_val);
- if (GET_CODE (init_val) != CONST_INT || INTVAL (init_val) >= 65535)
- {
- if (dump_file)
- fprintf (dump_file, ";; loop %d has complex initializer\n",
- loop->loop_no);
- continue;
- }
-
- /* Scan all the blocks to make sure they don't use iter_reg. */
- if (mt_scan_loop (loop, iter_reg, loop->dbnz))
- {
- if (dump_file)
- fprintf (dump_file, ";; loop %d uses iterator\n",
- loop->loop_no);
- continue;
- }
-
- /* The loop is good for replacement. */
-
- /* loop is 1 based, dbnz is zero based. */
- init_val = GEN_INT (INTVAL (init_val) + 1);
-
- iter_reg = gen_rtx_REG (SImode, LOOP_FIRST + loop->depth - 1);
- end_label = gen_label_rtx ();
- head_label = XEXP (SET_SRC (XVECEXP (PATTERN (loop->dbnz), 0, 0)), 1);
- loop_end = gen_loop_end (iter_reg, head_label);
- loop_init = gen_loop_init (iter_reg, init_val, end_label);
- loop->init = init_insn;
- loop->end_label = end_label;
- loop->loop_init = loop_init;
- loop->loop_end = loop_end;
- replaced = true;
-
- if (dump_file)
- {
- fprintf (dump_file, ";; replacing loop %d initializer with\n",
- loop->loop_no);
- print_rtl_single (dump_file, loop->loop_init);
- fprintf (dump_file, ";; replacing loop %d terminator with\n",
- loop->loop_no);
- print_rtl_single (dump_file, loop->loop_end);
- }
- }
-
- /* Now apply the optimizations. Do it this way so we don't mess up
- the flow graph half way through. */
- for (loop = loops; loop; loop = loop->next)
- if (loop->loop_init)
- {
- emit_jump_insn_after (loop->loop_init, BB_END (loop->predecessor));
- delete_insn (loop->init);
- emit_label_before (loop->end_label, loop->dbnz);
- emit_jump_insn_before (loop->loop_end, loop->dbnz);
- delete_insn (loop->dbnz);
- }
-
- /* Free up the loop structures */
- while (loops)
- {
- loop = loops;
- loops = loop->next;
- VEC_free (loop_info, heap, loop->loops);
- VEC_free (basic_block, heap, loop->blocks);
- XDELETE (loop);
- }
-
- if (replaced && dump_file)
- {
- fprintf (dump_file, ";; Replaced loops\n");
- print_rtl (dump_file, get_insns ());
- }
-}
-
-/* Structures to hold branch information during reorg. */
-typedef struct branch_info
-{
- rtx insn; /* The branch insn. */
-
- struct branch_info *next;
-} branch_info;
-
-typedef struct label_info
-{
- rtx label; /* The label. */
- branch_info *branches; /* branches to this label. */
- struct label_info *next;
-} label_info;
-
-/* Chain of labels found in current function, used during reorg. */
-static label_info *mt_labels;
-
-/* If *X is a label, add INSN to the list of branches for that
- label. */
-
-static int
-mt_add_branches (rtx *x, void *insn)
-{
- if (GET_CODE (*x) == LABEL_REF)
- {
- branch_info *branch = xmalloc (sizeof (*branch));
- rtx label = XEXP (*x, 0);
- label_info *info;
-
- for (info = mt_labels; info; info = info->next)
- if (info->label == label)
- break;
-
- if (!info)
- {
- info = xmalloc (sizeof (*info));
- info->next = mt_labels;
- mt_labels = info;
-
- info->label = label;
- info->branches = NULL;
- }
-
- branch->next = info->branches;
- info->branches = branch;
- branch->insn = insn;
- }
- return 0;
-}
-
-/* If BRANCH has a filled delay slot, check if INSN is dependent upon
- it. If so, undo the delay slot fill. Returns the next insn, if
- we patch out the branch. Returns the branch insn, if we cannot
- patch out the branch (due to anti-dependency in the delay slot).
- In that case, the caller must insert nops at the branch target. */
-
-static rtx
-mt_check_delay_slot (rtx branch, rtx insn)
-{
- rtx slot;
- rtx tmp;
- rtx p;
- rtx jmp;
-
- gcc_assert (GET_CODE (PATTERN (branch)) == SEQUENCE);
- if (INSN_DELETED_P (branch))
- return NULL_RTX;
- slot = XVECEXP (PATTERN (branch), 0, 1);
-
- tmp = PATTERN (insn);
- note_stores (PATTERN (slot), insn_dependent_p_1, &tmp);
- if (tmp)
- /* Not dependent. */
- return NULL_RTX;
-
- /* Undo the delay slot. */
- jmp = XVECEXP (PATTERN (branch), 0, 0);
-
- tmp = PATTERN (jmp);
- note_stores (PATTERN (slot), insn_dependent_p_1, &tmp);
- if (!tmp)
- /* Anti dependent. */
- return branch;
-
- p = PREV_INSN (branch);
- NEXT_INSN (p) = slot;
- PREV_INSN (slot) = p;
- NEXT_INSN (slot) = jmp;
- PREV_INSN (jmp) = slot;
- NEXT_INSN (jmp) = branch;
- PREV_INSN (branch) = jmp;
- XVECEXP (PATTERN (branch), 0, 0) = NULL_RTX;
- XVECEXP (PATTERN (branch), 0, 1) = NULL_RTX;
- delete_insn (branch);
- return jmp;
-}
-
-/* Insert nops to satisfy pipeline constraints. We only deal with ms2
- constraints here. Earlier CPUs are dealt with by inserting nops with
- final_prescan (but that can lead to inferior code, and is
- impractical with ms2's JAL hazard).
-
- ms2 dynamic constraints
- 1) a load and a following use must be separated by one insn
- 2) an insn and a following dependent call must be separated by two insns
-
- only arith insns are placed in delay slots so #1 cannot happen with
- a load in a delay slot. #2 can happen with an arith insn in the
- delay slot. */
-
-static void
-mt_reorg_hazard (void)
-{
- rtx insn, next;
-
- /* Find all the branches */
- for (insn = get_insns ();
- insn;
- insn = NEXT_INSN (insn))
- {
- rtx jmp;
-
- if (!INSN_P (insn))
- continue;
-
- jmp = PATTERN (insn);
-
- if (GET_CODE (jmp) != SEQUENCE)
- /* If it's not got a filled delay slot, then it can't
- conflict. */
- continue;
-
- jmp = XVECEXP (jmp, 0, 0);
-
- if (recog_memoized (jmp) == CODE_FOR_tablejump)
- for (jmp = XEXP (XEXP (XVECEXP (PATTERN (jmp), 0, 1), 0), 0);
- !JUMP_TABLE_DATA_P (jmp);
- jmp = NEXT_INSN (jmp))
- continue;
-
- for_each_rtx (&PATTERN (jmp), mt_add_branches, insn);
- }
-
- /* Now scan for dependencies. */
- for (insn = get_insns ();
- insn && !INSN_P (insn);
- insn = NEXT_INSN (insn))
- continue;
-
- for (;
- insn;
- insn = next)
- {
- rtx jmp, tmp;
- enum attr_type attr;
-
- gcc_assert (INSN_P (insn) && !INSN_DELETED_P (insn));
- for (next = NEXT_INSN (insn);
- next;
- next = NEXT_INSN (next))
- {
- if (!INSN_P (next))
- continue;
- if (GET_CODE (PATTERN (next)) != USE)
- break;
- }
-
- jmp = insn;
- if (GET_CODE (PATTERN (insn)) == SEQUENCE)
- jmp = XVECEXP (PATTERN (insn), 0, 0);
-
- attr = recog_memoized (jmp) >= 0 ? get_attr_type (jmp) : TYPE_UNKNOWN;
-
- if (next && attr == TYPE_LOAD)
- {
- /* A load. See if NEXT is dependent, and if so insert a
- nop. */
-
- tmp = PATTERN (next);
- if (GET_CODE (tmp) == SEQUENCE)
- tmp = PATTERN (XVECEXP (tmp, 0, 0));
- note_stores (PATTERN (insn), insn_dependent_p_1, &tmp);
- if (!tmp)
- emit_insn_after (gen_nop (), insn);
- }
-
- if (attr == TYPE_CALL)
- {
- /* A call. Make sure we're not dependent on either of the
- previous two dynamic instructions. */
- int nops = 0;
- int count;
- rtx prev = insn;
- rtx rescan = NULL_RTX;
-
- for (count = 2; count && !nops;)
- {
- int type;
-
- prev = PREV_INSN (prev);
- if (!prev)
- {
- /* If we reach the start of the function, we must
- presume the caller set the address in the delay
- slot of the call instruction. */
- nops = count;
- break;
- }
-
- if (BARRIER_P (prev))
- break;
- if (LABEL_P (prev))
- {
- /* Look at branches to this label. */
- label_info *label;
- branch_info *branch;
-
- for (label = mt_labels;
- label;
- label = label->next)
- if (label->label == prev)
- {
- for (branch = label->branches;
- branch;
- branch = branch->next)
- {
- tmp = mt_check_delay_slot (branch->insn, jmp);
-
- if (tmp == branch->insn)
- {
- nops = count;
- break;
- }
-
- if (tmp && branch->insn == next)
- rescan = tmp;
- }
- break;
- }
- continue;
- }
- if (!INSN_P (prev) || GET_CODE (PATTERN (prev)) == USE)
- continue;
-
- if (GET_CODE (PATTERN (prev)) == SEQUENCE)
- {
- /* Look at the delay slot. */
- tmp = mt_check_delay_slot (prev, jmp);
- if (tmp == prev)
- nops = count;
- break;
- }
-
- type = (INSN_CODE (prev) >= 0 ? get_attr_type (prev)
- : TYPE_COMPLEX);
- if (type == TYPE_CALL || type == TYPE_BRANCH)
- break;
-
- if (type == TYPE_LOAD
- || type == TYPE_ARITH
- || type == TYPE_COMPLEX)
- {
- tmp = PATTERN (jmp);
- note_stores (PATTERN (prev), insn_dependent_p_1, &tmp);
- if (!tmp)
- {
- nops = count;
- break;
- }
- }
-
- if (INSN_CODE (prev) >= 0)
- count--;
- }
-
- if (rescan)
- for (next = NEXT_INSN (rescan);
- next && !INSN_P (next);
- next = NEXT_INSN (next))
- continue;
- while (nops--)
- emit_insn_before (gen_nop (), insn);
- }
- }
-
- /* Free the data structures. */
- while (mt_labels)
- {
- label_info *label = mt_labels;
- branch_info *branch, *next;
-
- mt_labels = label->next;
- for (branch = label->branches; branch; branch = next)
- {
- next = branch->next;
- free (branch);
- }
- free (label);
- }
-}
-
-/* Fixup the looping instructions, do delayed branch scheduling, fixup
- scheduling hazards. */
-
-static void
-mt_machine_reorg (void)
-{
- if (cfun->machine->has_loops && TARGET_MS2)
- mt_reorg_loops (dump_file);
-
- if (mt_flag_delayed_branch)
- dbr_schedule (get_insns ());
-
- if (TARGET_MS2)
- {
- /* Force all instructions to be split into their final form. */
- split_all_insns_noflow ();
- mt_reorg_hazard ();
- }
-}
-
-int
-mt_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED)
-{
- return (int_size_in_bytes (type) > UNITS_PER_WORD);
-}
-
-\f
-/* Initialize the GCC target structure. */
-const struct attribute_spec mt_attribute_table[];
-
-#undef TARGET_ATTRIBUTE_TABLE
-#define TARGET_ATTRIBUTE_TABLE mt_attribute_table
-#undef TARGET_STRUCT_VALUE_RTX
-#define TARGET_STRUCT_VALUE_RTX mt_struct_value_rtx
-#undef TARGET_PROMOTE_PROTOTYPES
-#define TARGET_PROMOTE_PROTOTYPES hook_bool_const_tree_true
-#undef TARGET_PASS_BY_REFERENCE
-#define TARGET_PASS_BY_REFERENCE mt_pass_by_reference
-#undef TARGET_MUST_PASS_IN_STACK
-#define TARGET_MUST_PASS_IN_STACK mt_pass_in_stack
-#undef TARGET_ARG_PARTIAL_BYTES
-#define TARGET_ARG_PARTIAL_BYTES mt_arg_partial_bytes
-#undef TARGET_SETUP_INCOMING_VARARGS
-#define TARGET_SETUP_INCOMING_VARARGS mt_setup_incoming_varargs
-#undef TARGET_MACHINE_DEPENDENT_REORG
-#define TARGET_MACHINE_DEPENDENT_REORG mt_machine_reorg
-
-struct gcc_target targetm = TARGET_INITIALIZER;
-\f
-#include "gt-mt.h"
+++ /dev/null
-/* Target Definitions for MorphoRISC1
- Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
- Contributed by Red Hat, Inc.
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-extern struct rtx_def * mt_ucmpsi3_libcall;
-
-enum processor_type
-{
- PROCESSOR_MS1_64_001,
- PROCESSOR_MS1_16_002,
- PROCESSOR_MS1_16_003,
- PROCESSOR_MS2
-};
-
-enum epilogue_type
-{
- EH_EPILOGUE,
- NORMAL_EPILOGUE
-};
-
-extern enum processor_type mt_cpu;
-
-\f
-/* Support for a compile-time default CPU, et cetera. The rules are:
- --with-arch is ignored if -march is specified. */
-#define OPTION_DEFAULT_SPECS \
- {"arch", "%{!march=*:-march=%(VALUE)}" }
-
-/* A C string constant that tells the GCC driver program options to pass to
- the assembler. */
-#undef ASM_SPEC
-#define ASM_SPEC "%{march=*} %{!march=*: -march=ms1-16-002}"
-
-/* A string to pass to at the end of the command given to the linker. */
-#undef LIB_SPEC
-#define LIB_SPEC "--start-group -lc -lsim --end-group \
-%{msim: ; \
-march=ms1-64-001:-T 64-001.ld%s; \
-march=ms1-16-002:-T 16-002.ld%s; \
-march=ms1-16-003:-T 16-003.ld%s; \
-march=ms2:-T ms2.ld%s; \
- :-T 16-002.ld}"
-
-/* A string to pass at the very beginning of the command given to the
- linker. */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "%{msim:crt0.o%s;\
-march=ms1-64-001:%{!mno-crt0:crt0-64-001.o%s} startup-64-001.o%s; \
-march=ms1-16-002:%{!mno-crt0:crt0-16-002.o%s} startup-16-002.o%s; \
-march=ms1-16-003:%{!mno-crt0:crt0-16-003.o%s} startup-16-003.o%s; \
-march=ms2:%{!mno-crt0:crt0-ms2.o%s} startup-ms2.o%s; \
- :%{!mno-crt0:crt0-16-002.o%s} startup-16-002.o%s} \
-crti.o%s crtbegin.o%s"
-
-/* A string to pass at the end of the command given to the linker. */
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "%{msim:exit.o%s; \
-march=ms1-64-001:exit-64-001.o%s; \
-march=ms1-16-002:exit-16-002.o%s; \
-march=ms1-16-003:exit-16-003.o%s; \
-march=ms2:exit-ms2.o%s; \
- :exit-16-002.o%s} \
- crtend.o%s crtn.o%s"
-\f
-/* Run-time target specifications. */
-
-#define TARGET_CPU_CPP_BUILTINS() \
- do \
- { \
- builtin_define_with_int_value ("__mt__", mt_cpu); \
- builtin_assert ("machine=mt"); \
- } \
- while (0)
-
-#define TARGET_MS1_64_001 (mt_cpu == PROCESSOR_MS1_64_001)
-#define TARGET_MS1_16_002 (mt_cpu == PROCESSOR_MS1_16_002)
-#define TARGET_MS1_16_003 (mt_cpu == PROCESSOR_MS1_16_003)
-#define TARGET_MS2 (mt_cpu == PROCESSOR_MS2)
-
-#define TARGET_VERSION fprintf (stderr, " (mt)");
-
-#define OVERRIDE_OPTIONS mt_override_options ()
-
-#define CAN_DEBUG_WITHOUT_FP 1
-
-\f
-/* Storage Layout. */
-
-#define BITS_BIG_ENDIAN 0
-
-#define BYTES_BIG_ENDIAN 1
-
-#define WORDS_BIG_ENDIAN 1
-
-#define UNITS_PER_WORD 4
-
-/* A macro to update MODE and UNSIGNEDP when an object whose type is TYPE and
- which has the specified mode and signedness is to be stored in a register.
- This macro is only called when TYPE is a scalar type.
-
- On most RISC machines, which only have operations that operate on a full
- register, define this macro to set M to `word_mode' if M is an integer mode
- narrower than `BITS_PER_WORD'. In most cases, only integer modes should be
- widened because wider-precision floating-point operations are usually more
- expensive than their narrower counterparts.
-
- For most machines, the macro definition does not change UNSIGNEDP. However,
- some machines, have instructions that preferentially handle either signed or
- unsigned quantities of certain modes. For example, on the DEC Alpha, 32-bit
- loads from memory and 32-bit add instructions sign-extend the result to 64
- bits. On such machines, set UNSIGNEDP according to which kind of extension
- is more efficient.
-
- Do not define this macro if it would never modify MODE. */
-#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \
- do \
- { \
- if (GET_MODE_CLASS (MODE) == MODE_INT \
- && GET_MODE_SIZE (MODE) < 4) \
- (MODE) = SImode; \
- } \
- while (0)
-
-/* Normal alignment required for function parameters on the stack, in bits.
- All stack parameters receive at least this much alignment regardless of data
- type. On most machines, this is the same as the size of an integer. */
-#define PARM_BOUNDARY 32
-
-/* Define this macro to the minimum alignment enforced by hardware for
- the stack pointer on this machine. The definition is a C
- expression for the desired alignment (measured in bits). This
- value is used as a default if PREFERRED_STACK_BOUNDARY is not
- defined. On most machines, this should be the same as
- PARM_BOUNDARY. */
-#define STACK_BOUNDARY 32
-
-/* Alignment required for a function entry point, in bits. */
-#define FUNCTION_BOUNDARY 32
-
-/* Biggest alignment that any data type can require on this machine,
- in bits. */
-#define BIGGEST_ALIGNMENT 32
-
-/* If defined, a C expression to compute the alignment for a variable
- in the static store. TYPE is the data type, and ALIGN is the
- alignment that the object would ordinarily have. The value of this
- macro is used instead of that alignment to align the object.
-
- If this macro is not defined, then ALIGN is used. */
-#define DATA_ALIGNMENT(TYPE, ALIGN) \
- (TREE_CODE (TYPE) == ARRAY_TYPE \
- && TYPE_MODE (TREE_TYPE (TYPE)) == QImode \
- && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
-
-/* If defined, a C expression to compute the alignment given to a constant that
- is being placed in memory. CONSTANT is the constant and ALIGN is the
- alignment that the object would ordinarily have. The value of this macro is
- used instead of that alignment to align the object.
-
- If this macro is not defined, then ALIGN is used.
-
- The typical use of this macro is to increase alignment for string constants
- to be word aligned so that `strcpy' calls that copy constants can be done
- inline. */
-#define CONSTANT_ALIGNMENT(EXP, ALIGN) \
- (TREE_CODE (EXP) == STRING_CST \
- && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
-
-/* Number of bits which any structure or union's size must be a multiple of.
- Each structure or union's size is rounded up to a multiple of this.
-
- If you do not define this macro, the default is the same as `BITS_PER_UNIT'. */
-#define STRUCTURE_SIZE_BOUNDARY 32
-
-/* Define this macro to be the value 1 if instructions will fail to work if
- given data not on the nominal alignment. If instructions will merely go
- slower in that case, define this macro as 0. */
-#define STRICT_ALIGNMENT 1
-
-/* Define this if you wish to imitate the way many other C compilers handle
- alignment of bitfields and the structures that contain them. */
-#define PCC_BITFIELD_TYPE_MATTERS 1
-\f
-/* Layout of Source Language Data Types. */
-
-#define INT_TYPE_SIZE 32
-
-#define SHORT_TYPE_SIZE 16
-
-#define LONG_TYPE_SIZE 32
-
-#define LONG_LONG_TYPE_SIZE 64
-
-#define CHAR_TYPE_SIZE 8
-
-#define FLOAT_TYPE_SIZE 32
-
-#define DOUBLE_TYPE_SIZE 64
-
-#define LONG_DOUBLE_TYPE_SIZE 64
-
-#define DEFAULT_SIGNED_CHAR 1
-\f
-/* Register Basics. */
-
-/* General purpose registers. */
-#define GPR_FIRST 0 /* First gpr */
-#define GPR_LAST 15 /* Last possible gpr */
-
-#define GPR_R0 0 /* Always 0 */
-#define GPR_R7 7 /* Used as a scratch register */
-#define GPR_R8 8 /* Used as a scratch register */
-#define GPR_R9 9 /* Used as a scratch register */
-#define GPR_R10 10 /* Used as a scratch register */
-#define GPR_R11 11 /* Used as a scratch register */
-#define GPR_FP 12 /* Frame pointer */
-#define GPR_SP 13 /* Stack pointer */
-#define GPR_LINK 14 /* Saved return address as
- seen by the caller */
-#define GPR_INTERRUPT_LINK 15 /* hold return addres for interrupts */
-
-#define LOOP_FIRST (GPR_LAST + 1)
-#define LOOP_LAST (LOOP_FIRST + 3)
-
-/* Argument register that is eliminated in favor of the frame and/or stack
- pointer. Also add register to point to where the return address is
- stored. */
-#define SPECIAL_REG_FIRST (LOOP_LAST + 1)
-#define SPECIAL_REG_LAST (SPECIAL_REG_FIRST)
-#define ARG_POINTER_REGNUM (SPECIAL_REG_FIRST + 0)
-#define SPECIAL_REG_P(R) ((R) == SPECIAL_REG_FIRST)
-
-/* The first/last register that can contain the arguments to a function. */
-#define FIRST_ARG_REGNUM 1
-#define LAST_ARG_REGNUM 4
-
-/* The register used to hold functions return value */
-#define RETVAL_REGNUM 11
-
-#define FIRST_PSEUDO_REGISTER (SPECIAL_REG_LAST + 1)
-
-#define IS_PSEUDO_P(R) (REGNO (R) >= FIRST_PSEUDO_REGISTER)
-
-/* R0 always has the value 0
- R10 static link
- R12 FP pointer to active frame
- R13 SP pointer to top of stack
- R14 RA return address
- R15 IRA interrupt return address. */
-#define FIXED_REGISTERS { 1, 0, 0, 0, 0, 0, 0, 0, \
- 0, 0, 0, 0, 1, 1, 1, 1, \
- 1, 1, 1, 1, 1 \
- }
-
-/* Like `FIXED_REGISTERS' but has 1 for each register that is clobbered (in
- general) by function calls as well as for fixed registers. This macro
- therefore identifies the registers that are not available for general
- allocation of values that must live across function calls. */
-#define CALL_USED_REGISTERS { 1, 1, 1, 1, 1, 0, 0, 1, \
- 1, 1, 1, 1, 1, 1, 1, 1, \
- 1, 1, 1, 1, 1 \
- }
-
-\f
-/* How Values Fit in Registers. */
-
-#define HARD_REGNO_NREGS(REGNO, MODE) \
- ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
-
-#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
-
-/* A C expression that is nonzero if a value of mode MODE1 is
- accessible in mode MODE2 without copying. */
-#define MODES_TIEABLE_P(MODE1, MODE2) 1
-\f
-/* Register Classes. */
-
-enum reg_class
-{
- NO_REGS,
- ALL_REGS,
- LIM_REG_CLASSES
-};
-
-#define GENERAL_REGS ALL_REGS
-
-#define N_REG_CLASSES ((int) LIM_REG_CLASSES)
-
-#define REG_CLASS_NAMES {"NO_REGS", "ALL_REGS" }
-
-#define REG_CLASS_CONTENTS \
- { \
- { 0x0 }, \
- { 0x000fffff }, \
- }
-
-/* A C expression whose value is a register class containing hard register
- REGNO. In general there is more than one such class; choose a class which
- is "minimal", meaning that no smaller class also contains the register. */
-#define REGNO_REG_CLASS(REGNO) GENERAL_REGS
-
-#define BASE_REG_CLASS GENERAL_REGS
-
-#define INDEX_REG_CLASS NO_REGS
-
-#define REG_CLASS_FROM_LETTER(CHAR) NO_REGS
-
-#define REGNO_OK_FOR_BASE_P(NUM) 1
-
-#define REGNO_OK_FOR_INDEX_P(NUM) 1
-
-/* A C expression that places additional restrictions on the register class to
- use when it is necessary to copy value X into a register in class CLASS.
- The value is a register class; perhaps CLASS, or perhaps another, smaller
- class. On many machines, the following definition is safe:
-
- #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
-*/
-#define PREFERRED_RELOAD_CLASS(X, CLASS) (CLASS)
-
-#define SECONDARY_RELOAD_CLASS(CLASS,MODE,X) \
- mt_secondary_reload_class((CLASS), (MODE), (X))
-
-/* A C expression for the maximum number of consecutive registers of
- class CLASS needed to hold a value of mode MODE. */
-#define CLASS_MAX_NREGS(CLASS, MODE) \
- ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
-
-/* For MorphoRISC1:
-
- `I' is used for the range of constants an arithmetic insn can
- actually contain (16-bit signed integers).
-
- `J' is used for the range which is just zero (ie, $r0).
-
- `K' is used for the range of constants a logical insn can actually
- contain (16-bit zero-extended integers).
-
- `L' is used for the range of constants that be loaded with lui
- (ie, the bottom 16 bits are zero).
-
- `M' is used for the range of constants that take two words to load
- (ie, not matched by `I', `K', and `L').
-
- `N' is used for negative 16-bit constants other than -65536.
-
- `O' is a 15-bit signed integer.
-
- `P' is used for positive 16-bit constants. */
-
-#define SMALL_INT(X) ((unsigned HOST_WIDE_INT) (INTVAL (X) + 0x8000) < 0x10000)
-#define SMALL_INT_UNSIGNED(X) ((unsigned HOST_WIDE_INT) (INTVAL (X)) < 0x10000)
-
-/* A C expression that defines the machine-dependent operand
- constraint letters that specify particular ranges of integer
- values. If C is one of those letters, the expression should check
- that VALUE, an integer, is in the appropriate range and return 1 if
- so, 0 otherwise. If C is not one of those letters, the value
- should be 0 regardless of VALUE. */
-#define CONST_OK_FOR_LETTER_P(VALUE, C) \
- ((C) == 'I' ? ((unsigned HOST_WIDE_INT) ((VALUE) + 0x8000) < 0x10000) \
- : (C) == 'J' ? ((VALUE) == 0) \
- : (C) == 'K' ? ((unsigned HOST_WIDE_INT) (VALUE) < 0x10000) \
- : (C) == 'L' ? (((VALUE) & 0x0000ffff) == 0 \
- && (((VALUE) & ~2147483647) == 0 \
- || ((VALUE) & ~2147483647) == ~2147483647)) \
- : (C) == 'M' ? ((((VALUE) & ~0x0000ffff) != 0) \
- && (((VALUE) & ~0x0000ffff) != ~0x0000ffff) \
- && (((VALUE) & 0x0000ffff) != 0 \
- || (((VALUE) & ~2147483647) != 0 \
- && ((VALUE) & ~2147483647) != ~2147483647))) \
- : (C) == 'N' ? ((unsigned HOST_WIDE_INT) ((VALUE) + 0xffff) < 0xffff) \
- : (C) == 'O' ? ((unsigned HOST_WIDE_INT) ((VALUE) + 0x4000) < 0x8000) \
- : (C) == 'P' ? ((VALUE) != 0 && (((VALUE) & ~0x0000ffff) == 0)) \
- : 0)
-
-/* A C expression that defines the machine-dependent operand constraint letters
- (`G', `H') that specify particular ranges of `const_double' values. */
-#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
-
-/* Most negative value represent on mt */
-#define MT_MIN_INT 0x80000000
-\f
-/* Basic Stack Layout. */
-
-enum save_direction
-{
- FROM_PROCESSOR_TO_MEM,
- FROM_MEM_TO_PROCESSOR
-};
-
-/* Tell prologue and epilogue if register REGNO should be saved / restored.
- The return address and frame pointer are treated separately.
- Don't consider them here. */
-#define MUST_SAVE_REGISTER(regno) \
- ( (regno) != GPR_LINK \
- && (regno) != GPR_FP \
- && (regno) != GPR_SP \
- && (regno) != GPR_R0 \
- && (( df_regs_ever_live_p (regno) && ! call_used_regs[regno] ) \
- /* Save ira register in an interrupt handler. */ \
- || (interrupt_handler && (regno) == GPR_INTERRUPT_LINK) \
- /* Save any register used in an interrupt handler. */ \
- || (interrupt_handler && df_regs_ever_live_p (regno)) \
- /* Save call clobbered registers in non-leaf interrupt \
- handlers. */ \
- || (interrupt_handler && call_used_regs[regno] \
- && !current_function_is_leaf) \
- ||(crtl->calls_eh_return \
- && (regno == GPR_R7 || regno == GPR_R8)) \
- ) \
- )
-
-#define STACK_GROWS_DOWNWARD 1
-
-/* Offset from the frame pointer to the first local variable slot to be
- allocated.
-
- If `FRAME_GROWS_DOWNWARD', find the next slot's offset by
- subtracting the first slot's length from `STARTING_FRAME_OFFSET'.
- Otherwise, it is found by adding the length of the first slot to
- the value `STARTING_FRAME_OFFSET'. */
-#define STARTING_FRAME_OFFSET crtl->outgoing_args_size
-
-/* Offset from the argument pointer register to the first argument's address.
- On some machines it may depend on the data type of the function.
-
- If `ARGS_GROW_DOWNWARD', this is the offset to the location above the first
- argument's address. */
-#define FIRST_PARM_OFFSET(FUNDECL) 0
-
-#define RETURN_ADDR_RTX(COUNT, FRAMEADDR) \
- mt_return_addr_rtx (COUNT)
-
-/* A C expression whose value is RTL representing the location of the incoming
- return address at the beginning of any function, before the prologue. This
- RTL is either a `REG', indicating that the return value is saved in `REG',
- or a `MEM' representing a location in the stack.
-
- You only need to define this macro if you want to support call frame
- debugging information like that provided by DWARF 2. */
-#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (SImode, GPR_LINK)
-
-/* A C expression whose value is an integer giving the offset, in bytes, from
- the value of the stack pointer register to the top of the stack frame at the
- beginning of any function, before the prologue. The top of the frame is
- defined to be the value of the stack pointer in the previous frame, just
- before the call instruction.
-
- You only need to define this macro if you want to support call frame
- debugging information like that provided by DWARF 2. */
-#define INCOMING_FRAME_SP_OFFSET 0
-
-#define STACK_POINTER_REGNUM GPR_SP
-
-#define FRAME_POINTER_REGNUM GPR_FP
-
-/* The register number of the arg pointer register, which is used to
- access the function's argument list. */
-#define ARG_POINTER_REGNUM (SPECIAL_REG_FIRST + 0)
-
-/* Register numbers used for passing a function's static chain pointer. */
-#define STATIC_CHAIN_REGNUM 10
-
-/* A C expression which is nonzero if a function must have and use a frame
- pointer. */
-#define FRAME_POINTER_REQUIRED 0
-
-/* Structure to be filled in by compute_frame_size with register
- save masks, and offsets for the current function. */
-
-struct mt_frame_info
-{
- unsigned int total_size; /* # Bytes that the entire frame takes up. */
- unsigned int pretend_size; /* # Bytes we push and pretend caller did. */
- unsigned int args_size; /* # Bytes that outgoing arguments take up. */
- unsigned int extra_size;
- unsigned int reg_size; /* # Bytes needed to store regs. */
- unsigned int var_size; /* # Bytes that variables take up. */
- unsigned int frame_size; /* # Bytes in current frame. */
- unsigned int reg_mask; /* Mask of saved registers. */
- unsigned int save_fp; /* Nonzero if frame pointer must be saved. */
- unsigned int save_lr; /* Nonzero if return pointer must be saved. */
- int initialized; /* Nonzero if frame size already calculated. */
-};
-
-extern struct mt_frame_info current_frame_info;
-
-/* If defined, this macro specifies a table of register pairs used to eliminate
- unneeded registers that point into the stack frame. */
-#define ELIMINABLE_REGS \
-{ \
- {ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \
- {ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM}, \
- {FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM} \
-}
-
-/* A C expression that returns nonzero if the compiler is allowed to try to
- replace register number FROM with register number TO. */
-#define CAN_ELIMINATE(FROM, TO) \
- ((FROM) == ARG_POINTER_REGNUM && (TO) == STACK_POINTER_REGNUM \
- ? ! frame_pointer_needed \
- : 1)
-
-/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'. It
- specifies the initial difference between the specified pair of
- registers. This macro must be defined if `ELIMINABLE_REGS' is
- defined. */
-#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
- (OFFSET) = mt_initial_elimination_offset (FROM, TO)
-
-/* If defined, the maximum amount of space required for outgoing
- arguments will be computed and placed into the variable
- `crtl->outgoing_args_size'. */
-#define ACCUMULATE_OUTGOING_ARGS 1
-
-/* Define this if it is the responsibility of the caller to
- allocate the area reserved for arguments passed in registers. */
-#define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1
-
-/* The number of register assigned to holding function arguments. */
-#define MT_NUM_ARG_REGS 4
-
-/* Define this if it is the responsibility of the caller to allocate
- the area reserved for arguments passed in registers. */
-#define REG_PARM_STACK_SPACE(FNDECL) (MT_NUM_ARG_REGS * UNITS_PER_WORD)
-
-/* Define this macro if `REG_PARM_STACK_SPACE' is defined, but the stack
- parameters don't skip the area specified by it. */
-#define STACK_PARMS_IN_REG_PARM_AREA
-
-/* A C expression that should indicate the number of bytes of its own
- arguments that a function pops on returning, or 0 if the function
- pops no arguments and the caller must therefore pop them all after
- the function returns. */
-#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACK_SIZE) 0
-
-#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
- mt_function_arg (& (CUM), (MODE), (TYPE), (NAMED), FALSE)
-
-#define CUMULATIVE_ARGS int
-
-#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
- mt_init_cumulative_args (& (CUM), FNTYPE, LIBNAME, FNDECL, FALSE)
-
-#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
- mt_function_arg_advance (&CUM, MODE, TYPE, NAMED)
-
-#define FUNCTION_ARG_BOUNDARY(MODE, TYPE) \
- mt_function_arg_boundary (MODE, TYPE)
-
-#define FUNCTION_ARG_REGNO_P(REGNO) \
- ((REGNO) >= FIRST_ARG_REGNUM && ((REGNO) <= LAST_ARG_REGNUM))
-
-#define RETURN_VALUE_REGNUM RETVAL_REGNUM
-
-#define FUNCTION_VALUE(VALTYPE, FUNC) \
- mt_function_value (VALTYPE, TYPE_MODE(VALTYPE), FUNC)
-
-#define LIBCALL_VALUE(MODE) \
- mt_function_value (NULL_TREE, MODE, NULL_TREE)
-
-#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == RETURN_VALUE_REGNUM)
-
-/* A C expression which can inhibit the returning of certain function
- values in registers, based on the type of value. */
-#define TARGET_RETURN_IN_MEMORY mt_return_in_memory
-
-/* Define this macro to be 1 if all structure and union return values must be
- in memory. */
-#define DEFAULT_PCC_STRUCT_RETURN 0
-
-/* Define this macro as a C expression that is nonzero if the return
- instruction or the function epilogue ignores the value of the stack
- pointer; in other words, if it is safe to delete an instruction to
- adjust the stack pointer before a return from the function. */
-#define EXIT_IGNORE_STACK 1
-
-#define EPILOGUE_USES(REGNO) mt_epilogue_uses(REGNO)
-
-/* Define this macro if the function epilogue contains delay slots to which
- instructions from the rest of the function can be "moved". */
-#define DELAY_SLOTS_FOR_EPILOGUE 1
-
-/* A C expression that returns 1 if INSN can be placed in delay slot number N
- of the epilogue. */
-#define ELIGIBLE_FOR_EPILOGUE_DELAY(INSN, N) 0
-
-#define FUNCTION_PROFILER(FILE, LABELNO) gcc_unreachable ()
-
-/* Trampolines are not implemented. */
-#define TRAMPOLINE_SIZE 0
-
-#define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, STATIC_CHAIN)
-
-/* ?? What is this -- aldyh ?? */
-#define UCMPSI3_LIBCALL "__ucmpsi3"
-
-/* Addressing Modes. */
-
-/* A C expression that is 1 if the RTX X is a constant which is a valid
- address. */
-#define CONSTANT_ADDRESS_P(X) CONSTANT_P (X)
-
-/* A number, the maximum number of registers that can appear in a valid memory
- address. Note that it is up to you to specify a value equal to the maximum
- number that `GO_IF_LEGITIMATE_ADDRESS' would ever accept. */
-#define MAX_REGS_PER_ADDRESS 1
-
-#ifdef REG_OK_STRICT
-#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
-{ \
- if (mt_legitimate_address_p (MODE, X, 1)) \
- goto ADDR; \
-}
-#else
-#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \
-{ \
- if (mt_legitimate_address_p (MODE, X, 0)) \
- goto ADDR; \
-}
-#endif
-
-#ifdef REG_OK_STRICT
-#define REG_OK_FOR_BASE_P(X) mt_reg_ok_for_base_p (X, 1)
-#else
-#define REG_OK_FOR_BASE_P(X) mt_reg_ok_for_base_p (X, 0)
-#endif
-
-#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_BASE_P (X)
-
-#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) {}
-
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-
-#define LEGITIMATE_CONSTANT_P(X) 1
-
-/* A C expression for the cost of moving data of mode M between a register and
- memory. A value of 2 is the default; this cost is relative to those in
- `REGISTER_MOVE_COST'.
-
- If moving between registers and memory is more expensive than between two
- registers, you should define this macro to express the relative cost. */
-#define MEMORY_MOVE_COST(M,C,I) 10
-
-/* Define this macro as a C expression which is nonzero if accessing less than
- a word of memory (i.e. a `char' or a `short') is no faster than accessing a
- word of memory. */
-#define SLOW_BYTE_ACCESS 1
-
-#define SLOW_UNALIGNED_ACCESS(MODE, ALIGN) 1
-
-#define TEXT_SECTION_ASM_OP ".text"
-
-#define DATA_SECTION_ASM_OP ".data"
-
-#define BSS_SECTION_ASM_OP "\t.section\t.bss"
-
-/* A C string constant for text to be output before each `asm' statement or
- group of consecutive ones. Normally this is `"#APP"', which is a comment
- that has no effect on most assemblers but tells the GNU assembler that it
- must check the lines that follow for all valid assembler constructs. */
-#define ASM_APP_ON "#APP\n"
-
-/* A C string constant for text to be output after each `asm' statement or
- group of consecutive ones. Normally this is `"#NO_APP"', which tells the
- GNU assembler to resume making the time-saving assumptions that are valid
- for ordinary compiler output. */
-#define ASM_APP_OFF "#NO_APP\n"
-
-/* This is how to output an assembler line defining a `char' constant. */
-#define ASM_OUTPUT_CHAR(FILE, VALUE) \
- do \
- { \
- fprintf (FILE, "\t.byte\t"); \
- output_addr_const (FILE, (VALUE)); \
- fprintf (FILE, "\n"); \
- } \
- while (0)
-
-/* This is how to output an assembler line defining a `short' constant. */
-#define ASM_OUTPUT_SHORT(FILE, VALUE) \
- do \
- { \
- fprintf (FILE, "\t.hword\t"); \
- output_addr_const (FILE, (VALUE)); \
- fprintf (FILE, "\n"); \
- } \
- while (0)
-
-/* This is how to output an assembler line defining an `int' constant.
- We also handle symbol output here. */
-#define ASM_OUTPUT_INT(FILE, VALUE) \
- do \
- { \
- fprintf (FILE, "\t.word\t"); \
- output_addr_const (FILE, (VALUE)); \
- fprintf (FILE, "\n"); \
- } \
- while (0)
-
-/* A C statement to output to the stdio stream STREAM an assembler instruction
- to assemble a single byte containing the number VALUE.
-
- This declaration must be present. */
-#define ASM_OUTPUT_BYTE(STREAM, VALUE) \
- fprintf (STREAM, "\t%s\t0x%x\n", ASM_BYTE_OP, (VALUE))
-
-/* Globalizing directive for a label. */
-#define GLOBAL_ASM_OP "\t.globl "
-
-#define REGISTER_NAMES \
-{ "R0", "R1", "R2", "R3", "R4", "R5", "R6", "R7", \
- "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15", \
- "LOOP1", "LOOP2", "LOOP3", "LOOP4", "ap" }
-
-/* If defined, a C initializer for an array of structures containing a name and
- a register number. This macro defines additional names for hard registers,
- thus allowing the `asm' option in declarations to refer to registers using
- alternate names. */
-#define ADDITIONAL_REGISTER_NAMES \
-{ { "FP", 12}, {"SP", 13}, {"RA", 14}, {"IRA", 15} }
-
-/* Define this macro if you are using an unusual assembler that requires
- different names for the machine instructions.
-
- The definition is a C statement or statements which output an assembler
- instruction opcode to the stdio stream STREAM. The macro-operand PTR is a
- variable of type `char *' which points to the opcode name in its "internal"
- form--the form that is written in the machine description. The definition
- should output the opcode name to STREAM, performing any translation you
- desire, and increment the variable PTR to point at the end of the opcode so
- that it will not be output twice. */
-#define ASM_OUTPUT_OPCODE(STREAM, PTR) \
- (PTR) = mt_asm_output_opcode (STREAM, PTR)
-
-#define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \
- mt_final_prescan_insn (INSN, OPVEC, NOPERANDS)
-
-#define PRINT_OPERAND(STREAM, X, CODE) mt_print_operand (STREAM, X, CODE)
-
-/* A C expression which evaluates to true if CODE is a valid punctuation
- character for use in the `PRINT_OPERAND' macro. */
-/* #: Print nop for delay slot. */
-#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '#')
-
-#define PRINT_OPERAND_ADDRESS(STREAM, X) mt_print_operand_address (STREAM, X)
-
-/* If defined, C string expressions to be used for the `%R', `%L', `%U', and
- `%I' options of `asm_fprintf' (see `final.c'). These are useful when a
- single `md' file must support multiple assembler formats. In that case, the
- various `tm.h' files can define these macros differently.
-
- USER_LABEL_PREFIX is defined in svr4.h. */
-#define REGISTER_PREFIX "%"
-#define LOCAL_LABEL_PREFIX "."
-#define USER_LABEL_PREFIX ""
-#define IMMEDIATE_PREFIX ""
-
-/* This macro should be provided on machines where the addresses in a dispatch
- table are relative to the table's own address.
-
- The definition should be a C statement to output to the stdio stream STREAM
- an assembler pseudo-instruction to generate a difference between two labels.
- VALUE and REL are the numbers of two internal labels. The definitions of
- these labels are output using `targetm.asm_out.internal_label', and they
- must be printed in the same way here. */
-#define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM, BODY, VALUE, REL) \
-fprintf (STREAM, "\t.word .L%d-.L%d\n", VALUE, REL)
-
-/* This macro should be provided on machines where the addresses in a dispatch
- table are absolute.
-
- The definition should be a C statement to output to the stdio stream STREAM
- an assembler pseudo-instruction to generate a reference to a label. VALUE
- is the number of an internal label whose definition is output using
- `targetm.asm_out.internal_label'. */
-#define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE) \
-fprintf (STREAM, "\t.word .L%d\n", VALUE)
-
-#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (GPR_LINK)
-
-#define EH_RETURN_DATA_REGNO(N) \
- ((N) == 0 ? GPR_R7 : (N) == 1 ? GPR_R8 : INVALID_REGNUM)
-
-#define EH_RETURN_STACKADJ_REGNO GPR_R11
-#define EH_RETURN_STACKADJ_RTX \
- gen_rtx_REG (SImode, EH_RETURN_STACKADJ_REGNO)
-#define EH_RETURN_HANDLER_REGNO GPR_R10
-#define EH_RETURN_HANDLER_RTX \
- gen_rtx_REG (SImode, EH_RETURN_HANDLER_REGNO)
-\f
-#define ASM_OUTPUT_ALIGN(STREAM, POWER) \
- fprintf ((STREAM), "\t.p2align %d\n", (POWER))
-
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-
-#ifndef DWARF2_DEBUGGING_INFO
-#define DWARF2_DEBUGGING_INFO
-#endif
-
-/* Define this macro if GCC should produce dwarf version 2-style
- line numbers. This usually requires extending the assembler to
- support them, and #defining DWARF2_LINE_MIN_INSN_LENGTH in the
- assembler configuration header files. */
-#define DWARF2_ASM_LINE_DEBUG_INFO 1
-
-/* An alias for a machine mode name. This is the machine mode that
- elements of a jump-table should have. */
-#define CASE_VECTOR_MODE SImode
-
-/* Define this macro if operations between registers with integral
- mode smaller than a word are always performed on the entire
- register. Most RISC machines have this property and most CISC
- machines do not. */
-#define WORD_REGISTER_OPERATIONS
-
-/* The maximum number of bytes that a single instruction can move quickly from
- memory to memory. */
-#define MOVE_MAX 4
-
-/* A C expression which is nonzero if on this machine it is safe to "convert"
- an integer of INPREC bits to one of OUTPREC bits (where OUTPREC is smaller
- than INPREC) by merely operating on it as if it had only OUTPREC bits.
-
- On many machines, this expression can be 1.
-
- When `TRULY_NOOP_TRUNCATION' returns 1 for a pair of sizes for modes for
- which `MODES_TIEABLE_P' is 0, suboptimal code can result. If this is the
- case, making `TRULY_NOOP_TRUNCATION' return 0 in such cases may improve
- things. */
-#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
-
-#define Pmode SImode
-
-/* An alias for the machine mode used for memory references to functions being
- called, in `call' RTL expressions. On most machines this should be
- `QImode'. */
-#define FUNCTION_MODE QImode
-
-#define HANDLE_SYSV_PRAGMA 1
-
-/* Indicate how many instructions can be issued at the same time. */
-#define ISSUE_RATE 1
-
-/* Define the information needed to generate branch and scc insns. This is
- stored from the compare operation. Note that we can't use "rtx" here
- since it hasn't been defined! */
-
-extern struct rtx_def * mt_compare_op0;
-extern struct rtx_def * mt_compare_op1;
-
+++ /dev/null
-;; Machine description for MorphoRISC1
-;; Copyright (C) 2005, 2007 Free Software Foundation, Inc.
-;; Contributed by Red Hat, Inc.
-
-;; This file is part of GCC.
-
-;; GCC 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 3, or (at your option)
-;; any later version.
-
-;; GCC 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 GCC; see the file COPYING3. If not see
-;; <http://www.gnu.org/licenses/>.
-\f
-;; UNSPECs
-(define_constants
- [
- (UNSPEC_BLOCKAGE 0)
- (UNSPEC_EI 1)
- (UNSPEC_DI 2)
- (UNSPEC_LOOP 3)
- ])
-
-;; Attributes
-(define_attr "type" "branch,call,load,store,io,arith,complex,unknown"
- (const_string "unknown") )
-
-;; If the attribute takes numeric values, no `enum' type will be defined and
-;; the function to obtain the attribute's value will return `int'.
-
-(define_attr "length" "" (const_int 4))
-
-\f
-;; DFA scheduler.
-(define_automaton "other")
-(define_cpu_unit "decode_unit" "other")
-(define_cpu_unit "memory_unit" "other")
-(define_cpu_unit "branch_unit" "other")
-
-(define_insn_reservation "mem_access" 2
- (ior (eq_attr "type" "load") (eq_attr "type" "store"))
- "decode_unit+memory_unit*2")
-
-(define_insn_reservation "io_access" 2
- (eq_attr "type" "io")
- "decode_unit+memory_unit*2")
-
-(define_insn_reservation "branch_access" 2
- (ior (eq_attr "type" "branch")
- (eq_attr "type" "call"))
- "decode_unit+branch_unit*2")
-
-(define_insn_reservation "arith_access" 1
- (eq_attr "type" "arith")
- "decode_unit")
-
-(define_bypass 2 "arith_access" "branch_access")
-(define_bypass 3 "mem_access" "branch_access")
-(define_bypass 3 "io_access" "branch_access")
-
-\f
-;; Delay Slots
-
-;; The mt does not allow branches in the delay slot.
-;; The mt does not allow back to back memory or io instruction.
-;; The compiler does not know what the type of instruction is at
-;; the destination of the branch. Thus, only type that will be acceptable
-;; (safe) is the arith type.
-
-(define_delay (ior (eq_attr "type" "branch")
- (eq_attr "type" "call"))
- [(eq_attr "type" "arith") (nil) (nil)])
-
-\f
-(define_insn "decrement_and_branch_until_zero"
- [(set (pc)
- (if_then_else
- (ne (match_operand:SI 0 "nonimmediate_operand" "+r,*m")
- (const_int 0))
- (label_ref (match_operand 1 "" ""))
- (pc)))
- (set (match_dup 0)
- (plus:SI (match_dup 0)
- (const_int -1)))
- (clobber (match_scratch:SI 2 "=X,&r"))
- (clobber (match_scratch:SI 3 "=X,&r"))]
- "TARGET_MS1_16_003 || TARGET_MS2"
- "@
- dbnz\t%0, %l1%#
- #"
- [(set_attr "length" "4,16")
- (set_attr "type" "branch,unknown")]
-)
-
-;; Split the above to handle the case where operand 0 is in memory
-;; (a register that couldn't get a hard register).
-(define_split
- [(set (pc)
- (if_then_else
- (ne (match_operand:SI 0 "memory_operand" "")
- (const_int 0))
- (label_ref (match_operand 1 "" ""))
- (pc)))
- (set (match_dup 0)
- (plus:SI (match_dup 0)
- (const_int -1)))
- (clobber (match_scratch:SI 2 ""))
- (clobber (match_scratch:SI 3 ""))]
- "TARGET_MS1_16_003 || TARGET_MS2"
- [(set (match_dup 2) (match_dup 0))
- (set (match_dup 3) (plus:SI (match_dup 2) (const_int -1)))
- (set (match_dup 0) (match_dup 3))
- (set (pc)
- (if_then_else
- (ne (match_dup 2)
- (const_int 0))
- (label_ref (match_dup 1))
- (pc)))]
- "")
-
-;; This peephole is defined in the vain hope that it might actually trigger one
-;; day, although I have yet to find a test case that matches it. The normal
-;; problem is that GCC likes to move the loading of the constant value -1 out
-;; of the loop, so it is not here to be matched.
-
-(define_peephole2
- [(set (match_operand:SI 0 "register_operand" "")
- (plus:SI (match_dup 0) (const_int -1)))
- (set (match_operand:SI 1 "register_operand" "")
- (const_int -1))
- (set (pc) (if_then_else
- (ne (match_dup 0) (match_dup 1))
- (label_ref (match_operand 2 "" ""))
- (pc)))]
- "TARGET_MS1_16_003 || TARGET_MS2"
- [(parallel [(set (pc)
- (if_then_else
- (ne (match_dup 0) (const_int 0))
- (label_ref (match_dup 2))
- (pc)))
- (set (match_dup 0)
- (plus:SI (match_dup 0) (const_int -1)))
- (clobber (reg:SI 0))
- (clobber (reg:SI 0))])]
- "")
-
-\f
-;; Loop instructions. ms2 has a low overhead looping instructions.
-;; these take a constant or register loop count and a loop length
-;; offset. Unfortunately the loop can only be up to 256 instructions,
-;; We deal with longer loops by moving the loop end upwards. To do
-;; otherwise would force us to to be very pessimistic right up until
-;; the end.
-
-;; This instruction is a placeholder to make the control flow explicit.
-(define_insn "loop_end"
- [(set (pc) (if_then_else
- (ne (match_operand:SI 0 "register_operand" "")
- (const_int 1))
- (label_ref (match_operand 1 "" ""))
- (pc)))
- (set (match_dup 0) (plus:SI (match_dup 0) (const_int -1)))
- (unspec [(const_int 0)] UNSPEC_LOOP)]
- "TARGET_MS2"
- ";loop end %0,%l1"
- [(set_attr "length" "0")])
-
-;; This is the real looping instruction. It is placed just before the
-;; loop body. We make it a branch insn, so it stays at the end of the
-;; block it is in.
-(define_insn "loop_init"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (match_operand:SI 1 "uns_arith_operand" "r,K"))
- (unspec [(label_ref (match_operand 2 "" ""))] UNSPEC_LOOP)]
- "TARGET_MS2"
- "@
- loop %1,%l2 ;%0%#
- loopi %1,%l2 ;%0%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-; operand 0 is the loop count pseudo register
-; operand 1 is the number of loop iterations or 0 if it is unknown
-; operand 2 is the maximum number of loop iterations
-; operand 3 is the number of levels of enclosed loops
-; operand 4 is the label to jump to at the top of the loop
-(define_expand "doloop_end"
- [(parallel [(set (pc) (if_then_else
- (ne (match_operand:SI 0 "nonimmediate_operand" "")
- (const_int 0))
- (label_ref (match_operand 4 "" ""))
- (pc)))
- (set (match_dup 0)
- (plus:SI (match_dup 0)
- (const_int -1)))
- (clobber (match_scratch:SI 5 ""))
- (clobber (match_scratch:SI 6 ""))])]
- "TARGET_MS1_16_003 || TARGET_MS2"
- {mt_add_loop ();})
-\f
-;; Moves
-
-(define_expand "loadqi"
- [
- ;; compute shift
- (set (match_operand:SI 2 "register_operand" "")
- (and:SI (match_dup 1) (const_int 3)))
- (set (match_dup 2) (xor:SI (match_dup 2) (const_int 3)))
- (set (match_dup 2 ) (ashift:SI (match_dup 2) (const_int 3)))
-
- ;; get word that contains byte
- (set (match_operand:SI 0 "register_operand" "")
- (mem:SI (and:SI (match_operand:SI 1 "register_operand" "")
- (const_int -3))))
-
- ;; align byte
- (set (match_dup 0) (ashiftrt:SI (match_dup 0) (match_dup 2)))
- ]
- ""
- "")
-
-
-;; storeqi
-;; operand 0 byte value to store
-;; operand 1 address
-;; operand 2 temp, word containing byte
-;; operand 3 temp, shift count
-;; operand 4 temp, mask, aligned and masked byte
-;; operand 5 (unused)
-(define_expand "storeqi"
- [
- ;; compute shift
- (set (match_operand:SI 3 "register_operand" "")
- (and:SI (match_operand:SI 1 "register_operand" "") (const_int 3)))
- (set (match_dup 3) (xor:SI (match_dup 3) (const_int 3)))
- (set (match_dup 3) (ashift:SI (match_dup 3) (const_int 3)))
-
- ;; get word that contains byte
- (set (match_operand:SI 2 "register_operand" "")
- (mem:SI (and:SI (match_dup 1) (const_int -3))))
-
- ;; generate mask
- (set (match_operand:SI 4 "register_operand" "") (const_int 255))
- (set (match_dup 4) (ashift:SI (match_dup 4) (match_dup 3)))
- (set (match_dup 4) (not:SI (match_dup 4)))
-
- ;; clear appropriate bits
- (set (match_dup 2) (and:SI (match_dup 2) (match_dup 4)))
-
- ;; align byte
- (set (match_dup 4)
- (and:SI (match_operand:SI 0 "register_operand" "") (const_int 255)))
- (set (match_dup 4) (ashift:SI (match_dup 4) (match_dup 3)))
-
- ;; combine
- (set (match_dup 2) (ior:SI (match_dup 4) (match_dup 2)))
- ;; store updated word
- (set (mem:SI (and:SI (match_dup 1) (const_int -3))) (match_dup 2))
- ]
- ""
- "")
-
-
-(define_expand "movqi"
- [(set (match_operand:QI 0 "general_operand" "")
- (match_operand:QI 1 "general_operand" ""))]
- ""
- "
-{
- if (!reload_in_progress
- && !reload_completed
- && GET_CODE (operands[0]) == MEM
- && GET_CODE (operands[1]) == MEM)
- operands[1] = copy_to_mode_reg (QImode, operands[1]);
-
- if ( (! TARGET_BYTE_ACCESS) && GET_CODE (operands[0]) == MEM)
- {
- rtx scratch1 = gen_reg_rtx (SImode);
- rtx scratch2 = gen_reg_rtx (SImode);
- rtx scratch3 = gen_reg_rtx (SImode);
- rtx data = operands[1];
- rtx address = XEXP (operands[0], 0);
- rtx seq;
-
- if ( GET_CODE (data) != REG )
- data = copy_to_mode_reg (QImode, data);
-
- if ( GET_CODE (address) != REG )
- address = copy_to_mode_reg (SImode, address);
-
- start_sequence ();
- emit_insn (gen_storeqi (gen_lowpart (SImode, data), address,
- scratch1, scratch2, scratch3));
- mt_set_memflags (operands[0]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
- }
-
- if ( (! TARGET_BYTE_ACCESS) && GET_CODE (operands[1]) == MEM)
- {
- rtx scratch1 = gen_reg_rtx (SImode);
- rtx data = operands[0];
- rtx address = XEXP (operands[1], 0);
- rtx seq;
-
- if ( GET_CODE (address) != REG )
- address = copy_to_mode_reg (SImode, address);
-
- start_sequence ();
- emit_insn (gen_loadqi (gen_lowpart (SImode, data), address, scratch1));
- mt_set_memflags (operands[1]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
- }
-
- /* If the load is a pseudo register in a stack slot, some simplification
- can be made because the loads are aligned */
- if ( (! TARGET_BYTE_ACCESS)
- && (reload_in_progress && GET_CODE (operands[1]) == SUBREG
- && GET_CODE (SUBREG_REG (operands[1])) == REG
- && REGNO (SUBREG_REG (operands[1])) >= FIRST_PSEUDO_REGISTER))
- {
- rtx data = operands[0];
- rtx address = XEXP (operands[1], 0);
- rtx seq;
-
- start_sequence ();
- emit_insn (gen_movsi (gen_lowpart (SImode, data), address));
- mt_set_memflags (operands[1]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
- }
-}")
-
-(define_insn "*movqi_internal"
- [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,m,r")
- (match_operand:QI 1 "general_operand" "r,m,r,I"))]
- "TARGET_BYTE_ACCESS
- && (!memory_operand (operands[0], QImode)
- || !memory_operand (operands[1], QImode))"
- "@
- or %0, %1, %1
- ldb %0, %1
- stb %1, %0
- addi %0, r0, %1"
- [(set_attr "length" "4,4,4,4")
- (set_attr "type" "arith,load,store,arith")])
-
-(define_insn "*movqi_internal_nobyte"
- [(set (match_operand:QI 0 "register_operand" "=r,r")
- (match_operand:QI 1 "arith_operand" "r,I"))]
- "!TARGET_BYTE_ACCESS
- && (!memory_operand (operands[0], QImode)
- || !memory_operand (operands[1], QImode))"
- "@
- or %0, %1, %1
- addi %0, r0, %1"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-
-;; The MorphoRISC does not have 16-bit loads and stores.
-;; These operations must be synthesized. Note that the code
-;; for loadhi and storehi assumes that the least significant bits
-;; is ignored.
-
-;; loadhi
-;; operand 0 location of result
-;; operand 1 memory address
-;; operand 2 temp
-(define_expand "loadhi"
- [
- ;; compute shift
- (set (match_operand:SI 2 "register_operand" "")
- (and:SI (match_dup 1) (const_int 2)))
- (set (match_dup 2) (xor:SI (match_dup 2) (const_int 2)))
- (set (match_dup 2 ) (ashift:SI (match_dup 2) (const_int 3)))
-
- ;; get word that contains the 16-bits
- (set (match_operand:SI 0 "register_operand" "")
- (mem:SI (and:SI (match_operand:SI 1 "register_operand" "")
- (const_int -3))))
-
- ;; align 16-bit value
- (set (match_dup 0) (ashiftrt:SI (match_dup 0) (match_dup 2)))
- ]
- ""
- "")
-
-;; storehi
-;; operand 0 byte value to store
-;; operand 1 address
-;; operand 2 temp, word containing byte
-;; operand 3 temp, shift count
-;; operand 4 temp, mask, aligned and masked byte
-;; operand 5 (unused)
-(define_expand "storehi"
- [
- ;; compute shift
- (set (match_operand:SI 3 "register_operand" "")
- (and:SI (match_operand:SI 1 "register_operand" "") (const_int 2)))
- (set (match_dup 3) (xor:SI (match_dup 3) (const_int 2)))
- (set (match_dup 3) (ashift:SI (match_dup 3) (const_int 3)))
-
- ;; get word that contains the 16-bits
- (set (match_operand:SI 2 "register_operand" "")
- (mem:SI (and:SI (match_dup 1) (const_int -3))))
-
- ;; generate mask
- (set (match_operand:SI 4 "register_operand" "") (const_int 65535))
- (set (match_dup 4) (ashift:SI (match_dup 4) (match_dup 3)))
- (set (match_dup 4) (not:SI (match_dup 4)))
-
- ;; clear appropriate bits
- (set (match_dup 2) (and:SI (match_dup 2) (match_dup 4)))
-
- ;; align 16-bit value
- (set (match_dup 4)
- (and:SI (match_operand:SI 0 "register_operand" "") (const_int 65535)))
- (set (match_dup 4) (ashift:SI (match_dup 4) (match_dup 3)))
-
- ;; combine
- (set (match_dup 2) (ior:SI (match_dup 4) (match_dup 2)))
- ;; store updated word
- (set (mem:SI (and:SI (match_dup 1) (const_int -3))) (match_dup 2))
- ]
- ""
- "")
-
-
-(define_expand "movhi"
- [(set (match_operand:HI 0 "general_operand" "")
- (match_operand:HI 1 "general_operand" ""))]
- ""
- "
-{
- if (!reload_in_progress
- && !reload_completed
- && GET_CODE (operands[0]) == MEM
- && GET_CODE (operands[1]) == MEM)
- operands[1] = copy_to_mode_reg (HImode, operands[1]);
-
- if ( GET_CODE (operands[0]) == MEM)
- {
- rtx scratch1 = gen_reg_rtx (SImode);
- rtx scratch2 = gen_reg_rtx (SImode);
- rtx scratch3 = gen_reg_rtx (SImode);
- rtx data = operands[1];
- rtx address = XEXP (operands[0], 0);
- rtx seq;
-
- if (GET_CODE (data) != REG)
- data = copy_to_mode_reg (HImode, data);
-
- if (GET_CODE (address) != REG)
- address = copy_to_mode_reg (SImode, address);
-
- start_sequence ();
- emit_insn (gen_storehi (gen_lowpart (SImode, data), address,
- scratch1, scratch2, scratch3));
- mt_set_memflags (operands[0]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
- }
-
- if ( GET_CODE (operands[1]) == MEM)
- {
- rtx scratch1 = gen_reg_rtx (SImode);
- rtx data = operands[0];
- rtx address = XEXP (operands[1], 0);
- rtx seq;
-
- if (GET_CODE (address) != REG)
- address = copy_to_mode_reg (SImode, address);
-
- start_sequence ();
- emit_insn (gen_loadhi (gen_lowpart (SImode, data), address,
- scratch1));
- mt_set_memflags (operands[1]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
- }
-
- /* If the load is a pseudo register in a stack slot, some simplification
- can be made because the loads are aligned */
- if ( (reload_in_progress && GET_CODE (operands[1]) == SUBREG
- && GET_CODE (SUBREG_REG (operands[1])) == REG
- && REGNO (SUBREG_REG (operands[1])) >= FIRST_PSEUDO_REGISTER))
- {
- rtx data = operands[0];
- rtx address = XEXP (operands[1], 0);
- rtx seq;
-
- start_sequence ();
- emit_insn (gen_movsi (gen_lowpart (SImode, data), address));
- mt_set_memflags (operands[1]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
- }
-}")
-
-(define_insn "*movhi_internal"
- [(set (match_operand:HI 0 "register_operand" "=r,r")
- (match_operand:HI 1 "arith_operand" "r,I"))]
- "!memory_operand (operands[0], HImode) || !memory_operand (operands[1], HImode)"
- "@
- or %0, %1, %1
- addi %0, r0, %1"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-(define_expand "movsi"
- [(set (match_operand:SI 0 "nonimmediate_operand" "")
- (match_operand:SI 1 "general_operand" ""))]
- ""
- "
-{
- if (!reload_in_progress && !reload_completed
- && !register_operand (operands[0], SImode)
- && !register_operand (operands[1], SImode))
- operands[1] = copy_to_mode_reg (SImode, operands[1]);
-
- /* Take care of constants that don't fit in single instruction */
- if ( (reload_in_progress || reload_completed)
- && !single_const_operand (operands[1], SImode))
- {
- emit_insn (gen_movsi_high (operands[0], operands[1]));
- emit_insn (gen_movsi_lo_sum (operands[0], operands[0], operands[1]));
- DONE;
- }
-
-}")
-
-(define_insn "movsi_high"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (high:SI (match_operand:SI 1 "general_operand" "i")))]
- ""
- "*
-{
- return \"ldui\\t%0, %H1\";
-}"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
-
-
-(define_insn "movsi_lo_sum"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (lo_sum:SI (match_operand:SI 1 "register_operand" "r")
- (match_operand:SI 2 "general_operand" "i")))]
- ""
- "*
-{
- return \"addui\\t%0, %1, %L2\";
-}"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
-
-/* Take care of constants that don't fit in single instruction */
-(define_split
- [(set (match_operand:SI 0 "register_operand" "")
- (match_operand:SI 1 "general_operand" ""))]
- "(reload_in_progress || reload_completed)
- && !single_const_operand (operands[1], SImode)"
-
- [(set (match_dup 0 )
- (high:SI (match_dup 1)))
- (set (match_dup 0 )
- (lo_sum:SI (match_dup 0)
- (match_dup 1)))]
-)
-
-
-;; The last pattern in movsi (with two instructions)
-;; is really handled by the emit_insn's in movsi
-;; and the define_split above. This provides additional
-;; instructions to fill delay slots.
-
-;; Note - it is best to only have one movsi pattern and to handle
-;; all the various contingencies by the use of alternatives. This
-;; allows reload the greatest amount of flexibility (since reload will
-;; only choose amoungst alternatives for a selected insn, it will not
-;; replace the insn with another one).
-(define_insn "*movsi_internal"
- [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,m,r,r,r,r,r")
- (match_operand:SI 1 "general_operand" "r,m,r,I,P,L,N,i"))]
- "(!memory_operand (operands[0], SImode) || !memory_operand (operands[1], SImode))
- && !((reload_in_progress || reload_completed)
- && !single_const_operand (operands[1], SImode))"
- "@
- or %0, %1, %1
- ldw %0, %1
- stw %1, %0
- addi %0, r0, %1
- addui %0, r0, %1
- ldui %0, %H1
- nori %0, r0, %N1
- ldui %0, %H1\;addui %0, %0, %L1"
- [(set_attr "length" "4,4,4,4,4,4,4,8")
- (set_attr "type" "arith,load,store,arith,arith,arith,arith,complex")]
-)
-
-;; Floating Point Moves
-;;
-;; Note - Patterns for SF mode moves are compulsory, but
-;; patterns for DF are optional, as GCC can synthesize them.
-
-(define_expand "movsf"
- [(set (match_operand:SF 0 "general_operand" "")
- (match_operand:SF 1 "general_operand" ""))]
- ""
- "
-{
- if (!reload_in_progress
- && !reload_completed
- && GET_CODE (operands[0]) == MEM
- && (GET_CODE (operands[1]) == MEM
- || GET_CODE (operands[1]) == CONST_DOUBLE))
- operands[1] = copy_to_mode_reg (SFmode, operands[1]);
-
- /* Take care of reg <- SF constant */
- if ( const_double_operand (operands[1], GET_MODE (operands[1]) ) )
- {
- emit_insn (gen_movsf_high (operands[0], operands[1]));
- emit_insn (gen_movsf_lo_sum (operands[0], operands[0], operands[1]));
- DONE;
- }
-}")
-
-(define_insn "movsf_lo_sum"
- [(set (match_operand:SF 0 "register_operand" "=r")
- (lo_sum:SF (match_operand:SF 1 "register_operand" "r")
- (match_operand:SF 2 "const_double_operand" "")))]
- ""
- "*
-{
- REAL_VALUE_TYPE r;
- long i;
-
- REAL_VALUE_FROM_CONST_DOUBLE (r, operands[2]);
- REAL_VALUE_TO_TARGET_SINGLE (r, i);
- operands[2] = GEN_INT (i);
- return \"addui\\t%0, %1, %L2\";
-}"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
-
-(define_insn "movsf_high"
- [(set (match_operand:SF 0 "register_operand" "=r")
- (high:SF (match_operand:SF 1 "const_double_operand" "")))]
- ""
- "*
-{
- REAL_VALUE_TYPE r;
- long i;
-
- REAL_VALUE_FROM_CONST_DOUBLE (r, operands[1]);
- REAL_VALUE_TO_TARGET_SINGLE (r, i);
- operands[1] = GEN_INT (i);
- return \"ldui\\t%0, %H1\";
-}"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
-
-
-(define_insn "*movsf_internal"
- [(set (match_operand:SF 0 "nonimmediate_operand" "=r,r,m")
- (match_operand:SF 1 "nonimmediate_operand" "r,m,r"))]
- "!memory_operand (operands[0], SFmode) || !memory_operand (operands[1], SFmode)"
- "@
- or %0, %1, %1
- ldw %0, %1
- stw %1, %0"
- [(set_attr "length" "4,4,4")
- (set_attr "type" "arith,load,store")]
-)
-
-(define_expand "movdf"
- [(set (match_operand:DF 0 "general_operand" "")
- (match_operand:DF 1 "general_operand" ""))]
- ""
- "
-{
- /* One of the ops has to be in a register or 0 */
- if (!register_operand (operand0, DFmode)
- && !reg_or_0_operand (operand1, DFmode))
- operands[1] = copy_to_mode_reg (DFmode, operand1);
-}")
-
-(define_insn_and_split "*movdf_internal"
- [(set (match_operand:DF 0 "nonimmediate_operand" "=r,o")
- (match_operand:DF 1 "general_operand" "rim,r"))]
- "! (memory_operand (operands[0], DFmode)
- && memory_operand (operands[1], DFmode))"
- "#"
-
- "(reload_completed || reload_in_progress)"
-
- [(set (match_dup 2) (match_dup 3))
- (set (match_dup 4) (match_dup 5))
- ]
-
- "{
- /* figure out what precisely to put into operands 2, 3, 4, and 5 */
- mt_split_words (SImode, DFmode, operands);
- }"
-)
-
-\f
-;; Reloads
-
-;; Like `movM', but used when a scratch register is required to move between
-;; operand 0 and operand 1. Operand 2 describes the scratch register. See the
-;; discussion of the `SECONDARY_RELOAD_CLASS' macro.
-
-(define_expand "reload_inqi"
- [(set (match_operand:QI 0 "register_operand" "=r")
- (match_operand:QI 1 "memory_operand" "m"))
- (clobber (match_operand:DI 2 "register_operand" "=&r"))]
- "! TARGET_BYTE_ACCESS"
- "
-{
- rtx scratch1 = gen_rtx_REG (SImode, REGNO (operands[2]));
- rtx scratch2 = gen_rtx_REG (SImode, REGNO (operands[2])+1);
- rtx data = operands[0];
- rtx address = XEXP (operands[1], 0);
- rtx swap, seq;
-
- /* It is possible that the registers we got for scratch1
- might coincide with that of operands[0]. gen_loadqi
- requires operand0 and operand2 to be different registers.
- The following statement ensure that is always the case. */
- if (REGNO(operands[0]) == REGNO(scratch1))
- {
- swap = scratch1;
- scratch1 = scratch2;
- scratch2 = swap;
- }
-
- /* need to make sure address is already in register */
- if ( GET_CODE (address) != REG )
- address = force_operand (address, scratch2);
-
- start_sequence ();
- emit_insn (gen_loadqi (gen_lowpart (SImode, data), address, scratch1));
- mt_set_memflags (operands[1]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
-}")
-
-(define_expand "reload_outqi"
- [(set (match_operand:QI 0 "memory_operand" "=m")
- (match_operand:QI 1 "register_operand" "r"))
- (clobber (match_operand:TI 2 "register_operand" "=&r"))]
- "! TARGET_BYTE_ACCESS"
- "
-{
- rtx scratch1 = gen_rtx_REG (SImode, REGNO (operands[2]));
- rtx scratch2 = gen_rtx_REG (SImode, REGNO (operands[2])+1);
- rtx scratch3 = gen_rtx_REG (SImode, REGNO (operands[2])+2);
- rtx scratch4 = gen_rtx_REG (SImode, REGNO (operands[2])+3);
- rtx data = operands[1];
- rtx address = XEXP (operands[0], 0);
- rtx seq;
-
- /* need to make sure address is already in register */
- if ( GET_CODE (address) != REG )
- address = force_operand (address, scratch4);
-
- start_sequence ();
- emit_insn (gen_storeqi (gen_lowpart (SImode, data), address,
- scratch1, scratch2, scratch3));
- mt_set_memflags (operands[0]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
-}")
-
-(define_expand "reload_inhi"
- [(set (match_operand:HI 0 "register_operand" "=r")
- (match_operand:HI 1 "memory_operand" "m"))
- (clobber (match_operand:DI 2 "register_operand" "=&r"))]
- ""
- "
-{
- rtx scratch1 = gen_rtx_REG (SImode, REGNO (operands[2]));
- rtx scratch2 = gen_rtx_REG (SImode, REGNO (operands[2])+1);
- rtx data = operands[0];
- rtx address = XEXP (operands[1], 0);
- rtx swap, seq;
-
- /* It is possible that the registers we got for scratch1
- might coincide with that of operands[0]. gen_loadqi
- requires operand0 and operand2 to be different registers.
- The following statement ensure that is always the case. */
- if (REGNO(operands[0]) == REGNO(scratch1))
- {
- swap = scratch1;
- scratch1 = scratch2;
- scratch2 = swap;
- }
-
- /* need to make sure address is already in register */
- if ( GET_CODE (address) != REG )
- address = force_operand (address, scratch2);
-
- start_sequence ();
- emit_insn (gen_loadhi (gen_lowpart (SImode, data), address,
- scratch1));
- mt_set_memflags (operands[1]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
-}")
-
-(define_expand "reload_outhi"
- [(set (match_operand:HI 0 "memory_operand" "=m")
- (match_operand:HI 1 "register_operand" "r"))
- (clobber (match_operand:TI 2 "register_operand" "=&r"))]
- ""
- "
-{
- rtx scratch1 = gen_rtx_REG (SImode, REGNO (operands[2]));
- rtx scratch2 = gen_rtx_REG (SImode, REGNO (operands[2])+1);
- rtx scratch3 = gen_rtx_REG (SImode, REGNO (operands[2])+2);
- rtx scratch4 = gen_rtx_REG (SImode, REGNO (operands[2])+3);
- rtx data = operands[1];
- rtx address = XEXP (operands[0], 0);
- rtx seq;
-
- /* need to make sure address is already in register */
- if ( GET_CODE (address) != REG )
- address = force_operand (address, scratch4);
-
- start_sequence ();
- emit_insn (gen_storehi (gen_lowpart (SImode, data), address,
- scratch1, scratch2, scratch3));
- mt_set_memflags (operands[0]);
- seq = get_insns ();
- end_sequence ();
- emit_insn (seq);
- DONE;
-}")
-
-\f
-;; 32-bit Integer arithmetic
-
-;; Addition
-(define_insn "addsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (plus:SI (match_operand:SI 1 "register_operand" "%r,r")
- (match_operand:SI 2 "arith_operand" "r,I")))]
- ""
- "@
- add %0, %1, %2
- addi %0, %1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-;; Subtraction
-(define_insn "subsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (minus:SI (match_operand:SI 1 "reg_or_0_operand" "rJ,rJ")
- (match_operand:SI 2 "arith_operand" "rJ,I")))]
- ""
- "@
- sub %0, %z1, %z2
- subi %0, %z1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-;; Negation
-(define_insn "negsi2"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (neg:SI (match_operand:SI 1 "arith_operand" "r,I")))]
- ""
- "@
- sub %0, r0, %1
- subi %0, r0, %1"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-\f
-;; 32-bit Integer Shifts and Rotates
-
-;; Arithmetic Shift Left
-(define_insn "ashlsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (ashift:SI (match_operand:SI 1 "register_operand" "r,r")
- (match_operand:SI 2 "arith_operand" "r,K")))]
- ""
- "@
- lsl %0, %1, %2
- lsli %0, %1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-;; Arithmetic Shift Right
-(define_insn "ashrsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (ashiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
- (match_operand:SI 2 "uns_arith_operand" "r,K")))]
- ""
- "@
- asr %0, %1, %2
- asri %0, %1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-;; Logical Shift Right
-(define_insn "lshrsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
- (match_operand:SI 2 "uns_arith_operand" "r,K")))]
- ""
- "@
- lsr %0, %1, %2
- lsri %0, %1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-\f
-;; 32-Bit Integer Logical operations
-
-;; Logical AND, 32-bit integers
-(define_insn "andsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (and:SI (match_operand:SI 1 "register_operand" "%r,r")
- (match_operand:SI 2 "uns_arith_operand" "r,K")))]
- ""
- "@
- and %0, %1, %2
- andi %0, %1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-;; Inclusive OR, 32-bit integers
-(define_insn "iorsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (ior:SI (match_operand:SI 1 "register_operand" "%r,r")
- (match_operand:SI 2 "uns_arith_operand" "r,K")))]
- ""
- "@
- or %0, %1, %2
- ori %0, %1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-;; Exclusive OR, 32-bit integers
-(define_insn "xorsi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (xor:SI (match_operand:SI 1 "register_operand" "%r,r")
- (match_operand:SI 2 "uns_arith_operand" "r,K")))]
- ""
- "@
- xor %0, %1, %2
- xori %0, %1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-
-;; One's complement, 32-bit integers
-(define_insn "one_cmplsi2"
- [(set (match_operand:SI 0 "register_operand" "=r")
- (not:SI (match_operand:SI 1 "register_operand" "r")))]
- ""
- "nor %0, %1, %1"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
-
-\f
-;; Multiply
-
-(define_insn "mulhisi3"
- [(set (match_operand:SI 0 "register_operand" "=r,r")
- (mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%r,r"))
- (sign_extend:SI (match_operand:HI 2 "arith_operand" "r,I"))))]
- "TARGET_MS1_16_003 || TARGET_MS2"
- "@
- mul %0, %1, %2
- muli %0, %1, %2"
- [(set_attr "length" "4,4")
- (set_attr "type" "arith,arith")])
-
-\f
-;; Comparisons
-
-;; Note, we store the operands in the comparison insns, and use them later
-;; when generating the branch or scc operation.
-
-;; First the routines called by the machine independent part of the compiler
-(define_expand "cmpsi"
- [(set (cc0)
- (compare (match_operand:SI 0 "register_operand" "")
- (match_operand:SI 1 "arith_operand" "")))]
- ""
- "
-{
- mt_compare_op0 = operands[0];
- mt_compare_op1 = operands[1];
- DONE;
-}")
-
-\f
-;; Branches
-
-(define_expand "beq"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (EQ, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bne"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (NE, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bge"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (GE, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bgt"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (GT, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "ble"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (LE, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "blt"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (LT, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bgeu"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (GEU, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bgtu"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (GTU, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bleu"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (LEU, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bltu"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (LTU, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bunge"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (GEU, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bungt"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (GTU, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bunle"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (LEU, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_expand "bunlt"
- [(use (match_operand 0 "" ""))]
- ""
- "
-{
- mt_emit_cbranch (LTU, operands[0], mt_compare_op0, mt_compare_op1);
- DONE;
-}")
-
-(define_insn "*beq_true"
- [(set (pc)
- (if_then_else (eq (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (label_ref (match_operand 2 "" ""))
- (pc)))]
- ""
- "breq %z0, %z1, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*beq_false"
- [(set (pc)
- (if_then_else (eq (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (pc)
- (label_ref (match_operand 2 "" ""))))]
- ""
- "brne %z0, %z1, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-
-(define_insn "*bne_true"
- [(set (pc)
- (if_then_else (ne (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (label_ref (match_operand 2 "" ""))
- (pc)))]
- ""
- "brne %z0, %z1, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*bne_false"
- [(set (pc)
- (if_then_else (ne (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (pc)
- (label_ref (match_operand 2 "" ""))))]
- ""
- "breq %z0, %z1, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*blt_true"
- [(set (pc)
- (if_then_else (lt (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (label_ref (match_operand 2 "" ""))
- (pc)))]
- ""
- "brlt %z0, %z1, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*blt_false"
- [(set (pc)
- (if_then_else (lt (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (pc)
- (label_ref (match_operand 2 "" ""))))]
- ""
- "brle %z1, %z0,%l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*ble_true"
- [(set (pc)
- (if_then_else (le (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (label_ref (match_operand 2 "" ""))
- (pc)))]
- ""
- "brle %z0, %z1, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*ble_false"
- [(set (pc)
- (if_then_else (le (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (pc)
- (label_ref (match_operand 2 "" ""))))]
- ""
- "brlt %z1, %z0,%l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*bgt_true"
- [(set (pc)
- (if_then_else (gt (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (label_ref (match_operand 2 "" ""))
- (pc)))]
- ""
- "brlt %z1, %z0, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*bgt_false"
- [(set (pc)
- (if_then_else (gt (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (pc)
- (label_ref (match_operand 2 "" ""))))]
- ""
- "brle %z0, %z1, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*bge_true"
- [(set (pc)
- (if_then_else (ge (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (label_ref (match_operand 2 "" ""))
- (pc)))]
- ""
- "brle %z1, %z0,%l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_insn "*bge_false"
- [(set (pc)
- (if_then_else (ge (match_operand:SI 0 "reg_or_0_operand" "rJ")
- (match_operand:SI 1 "reg_or_0_operand" "rJ"))
- (pc)
- (label_ref (match_operand 2 "" ""))))]
- ""
- "brlt %z0, %z1, %l2%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-;; No unsigned operators on Morpho mt. All the unsigned operations are
-;; converted to the signed operations above.
-
-\f
-;; Set flag operations
-
-;; "seq", "sne", "slt", "sle", "sgt", "sge", "sltu", "sleu",
-;; "sgtu", and "sgeu" don't exist as regular instruction on the
-;; mt, so these are not defined
-
-;; Call and branch instructions
-
-(define_expand "call"
- [(parallel [(call (mem:SI (match_operand:SI 0 "register_operand" ""))
- (match_operand 1 "" ""))
- (clobber (reg:SI 14))])]
- ""
- "
-{
- operands[0] = force_reg (SImode, XEXP (operands[0], 0));
-}")
-
-(define_insn "call_internal"
- [(call (mem:SI (match_operand 0 "register_operand" "r"))
- (match_operand 1 "" ""))
- ;; possibly add a clobber of the reg that gets the return address
- (clobber (reg:SI 14))]
- ""
- "jal r14, %0%#"
- [(set_attr "length" "4")
- (set_attr "type" "call")])
-
-(define_expand "call_value"
- [(parallel [(set (match_operand 0 "register_operand" "")
- (call (mem:SI (match_operand:SI 1 "register_operand" ""))
- (match_operand 2 "general_operand" "")))
- (clobber (reg:SI 14))])]
- ""
- "
-{
- operands[1] = force_reg (SImode, XEXP (operands[1], 0));
-}")
-
-
-(define_insn "call_value_internal"
- [(set (match_operand 0 "register_operand" "=r")
- (call (mem:SI (match_operand 1 "register_operand" "r"))
- (match_operand 2 "" "")))
- ;; possibly add a clobber of the reg that gets the return address
- (clobber (reg:SI 14))]
- ""
- "jal r14, %1%#"
- [(set_attr "length" "4")
- (set_attr "type" "call")])
-
-;; Subroutine return
-(define_insn "return_internal"
- [(const_int 2)
- (return)
- (use (reg:SI 14))]
- ""
- "jal r0, r14%#"
- [(set_attr "length" "4")
- (set_attr "type" "call")])
-
-;; Interrupt return
-(define_insn "return_interrupt_internal"
- [(const_int 3)
- (return)
- (use (reg:SI 15))]
- ""
- "reti r15%#"
- [(set_attr "length" "4")
- (set_attr "type" "call")])
-
-;; Subroutine return
-(define_insn "eh_return_internal"
- [(return)
- (use (reg:SI 7))
- (use (reg:SI 8))
- (use (reg:SI 11))
- (use (reg:SI 10))]
- ""
- "jal r0, r11%#"
- [(set_attr "length" "4")
- (set_attr "type" "call")])
-
-
-;; Normal unconditional jump
-(define_insn "jump"
- [(set (pc) (label_ref (match_operand 0 "" "")))]
- ""
- "jmp %l0%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-;; Indirect jump through a register
-(define_insn "indirect_jump"
- [(set (pc) (match_operand 0 "register_operand" "r"))]
- ""
- "jal r0,%0%#"
- [(set_attr "length" "4")
- (set_attr "type" "call")])
-
-(define_insn "tablejump"
- [(set (pc) (match_operand:SI 0 "register_operand" "r"))
- (use (label_ref (match_operand 1 "" "")))]
- ""
- "jal r0, %0%#"
- [(set_attr "length" "4")
- (set_attr "type" "call")])
-
-\f
-(define_expand "prologue"
- [(const_int 1)]
- ""
- "
-{
- mt_expand_prologue ();
- DONE;
-}")
-
-(define_expand "epilogue"
- [(const_int 2)]
- ""
- "
-{
- mt_expand_epilogue (NORMAL_EPILOGUE);
- DONE;
-}")
-
-
-(define_expand "eh_return"
- [(use (match_operand:SI 0 "register_operand" "r"))]
- ""
- "
-{
- mt_expand_eh_return (operands);
- DONE;
-}")
-
-
-(define_insn_and_split "eh_epilogue"
- [(unspec [(match_operand 0 "register_operand" "r")] 6)]
- ""
- "#"
- "reload_completed"
- [(const_int 1)]
- "mt_emit_eh_epilogue (operands); DONE;"
-)
-\f
-;; No operation, needed in case the user uses -g but not -O.
-(define_insn "nop"
- [(const_int 0)]
- ""
- "nop"
- [(set_attr "length" "4")
- (set_attr "type" "arith")])
-
-;; ::::::::::::::::::::
-;; ::
-;; :: UNSPEC_VOLATILE usage
-;; ::
-;; ::::::::::::::::::::
-;;
-;; 0 blockage
-;; 1 Enable interrupts
-;; 2 Disable interrupts
-;;
-
-;; Pseudo instruction that prevents the scheduler from moving code above this
-;; point.
-(define_insn "blockage"
- [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)]
- ""
- ""
- [(set_attr "length" "0")])
-
-;; Trap instruction to allow usage of the __builtin_trap function
-(define_insn "trap"
- [(trap_if (const_int 1) (const_int 0))
- (clobber (reg:SI 14))]
- ""
- "si r14%#"
- [(set_attr "length" "4")
- (set_attr "type" "branch")])
-
-(define_expand "conditional_trap"
- [(trap_if (match_operator 0 "comparison_operator"
- [(match_dup 2)
- (match_dup 3)])
- (match_operand 1 "const_int_operand" ""))]
- ""
- "
-{
- operands[2] = mt_compare_op0;
- operands[3] = mt_compare_op1;
-}")
-
-;; Templates to control handling of interrupts
-
-;; Enable interrupts template
-(define_insn "ei"
- [(unspec_volatile [(const_int 0)] UNSPEC_EI)]
- ""
- "ei"
- [(set_attr "length" "4")])
-
-;; Enable interrupts template
-(define_insn "di"
- [(unspec_volatile [(const_int 0)] UNSPEC_DI)]
- ""
- "di"
- [(set_attr "length" "4")])
+++ /dev/null
-; Options for the mt port of the compiler
-;
-; Copyright (C) 2005, 2007 Free Software Foundation, Inc.
-;
-; This file is part of GCC.
-;
-; GCC 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 3, or (at your option) any later
-; version.
-;
-; GCC 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 GCC; see the file COPYING3. If not see
-; <http://www.gnu.org/licenses/>.
-
-mbacc
-Target Report Mask(BYTE_ACCESS)
-Use byte loads and stores when generating code.
-
-msim
-Target RejectNegative
-Use simulator runtime
-
-mno-crt0
-Target RejectNegative
-Do not include crt0.o in the startup files
-
-mdebug-arg
-Target RejectNegative Mask(DEBUG_ARG)
-Internal debug switch
-
-mdebug-addr
-Target RejectNegative Mask(DEBUG_ADDR)
-Internal debug switch
-
-mdebug-stack
-Target RejectNegative Mask(DEBUG_STACK)
-Internal debug switch
-
-mdebug-loc
-Target RejectNegative Mask(DEBUG_LOC)
-Internal debug switch
-
-mdebug
-Target RejectNegative Mask(DEBUG)
-Internal debug switch
-
-march=
-Target RejectNegative Joined Var(mt_cpu_string)
-Specify CPU for code generation purposes
+++ /dev/null
-# Copyright (C) 2005, 2007 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC 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 3, or (at your
-# option) any later version.
-#
-# GCC 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 GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-
-# Name of assembly file containing libgcc1 functions.
-# This entry must be present, but it can be empty if the target does
-# not need any assembler functions to support its code generation.
-CROSS_LIBGCC1 =
-#
-# Alternatively if assembler functions *are* needed then define the
-# entries below:
-# CROSS_LIBGCC1 = libgcc1-asm.a
-# LIB1ASMSRC = mt/lib1funcs.asm
-# LIB1ASMFUNCS = _udivsi3 etc...
-
-LIB2FUNCS_EXTRA = $(srcdir)/config/mt/lib2extra-funcs.c
-
-# If any special flags are necessary when building libgcc2 put them here.
-#
-# TARGET_LIBGCC2_CFLAGS =
-
-EXTRA_PARTS = crtbegin.o crtend.o crti.o crtn.o
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- cat $(srcdir)/config/fp-bit.c > dp-bit.c
-
-# Assemble startup files.
-$(T)crti.o: $(srcdir)/config/mt/crti.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
- -c -o $(T)crti.o -x assembler $(srcdir)/config/mt/crti.asm
-
-$(T)crtn.o: $(srcdir)/config/mt/crtn.asm $(GCC_PASSES)
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
- -c -o $(T)crtn.o -x assembler $(srcdir)/config/mt/crtn.asm
-
-# Enable the following if multilibs are needed.
-# See gcc/genmultilib, gcc/gcc.texi and gcc/tm.texi for a
-# description of the options and their values.
-#
-MULTILIB_OPTIONS = march=ms1-64-001/march=ms1-16-002/march=ms1-16-003/march=ms2
-MULTILIB_DIRNAMES = ms1-64-001 ms1-16-002 ms1-16-003 ms2
-# MULTILIB_MATCHES =
-# MULTILIB_EXCEPTIONS =
-# MULTILIB_EXTRA_OPTS =
-EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o
-#
-# LIBGCC = stmp-multilib
-# INSTALL_LIBGCC = install-multilib
-
+++ /dev/null
-/* Definitions of target machine for GNU compiler, for HP PA-RISC 1.1
- Copyright (C) 1991, 1995, 1996, 2002, 2003, 2007 Free Software Foundation, Inc.
- Contributed by Tim Moore (moore@defmacro.cs.utah.edu)
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_OS_CPP_BUILTINS
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- if (TARGET_PA_11) \
- { \
- builtin_define_std ("hp700"); \
- builtin_define_std ("HP700"); \
- } \
- else \
- { \
- builtin_define_std ("hp800"); \
- builtin_define_std ("hp9k8"); \
- builtin_define_std ("hp9000s800"); \
- } \
- builtin_define_std ("BIT_MSF"); \
- builtin_define_std ("BYTE_MSF"); \
- builtin_define_std ("PARISC"); \
- builtin_define_std ("REVARGV"); \
- builtin_define_std ("hp9000"); \
- builtin_define ("__pa_risc"); \
- builtin_define_std ("parisc"); \
- builtin_define_std ("spectrum"); \
- builtin_define_std ("unix"); \
- builtin_assert ("system=mach"); \
- builtin_assert ("system=unix"); \
- } \
- while (0)
-
-/* Don't default to pcc-struct-return, because gcc is the only compiler, and
- we want to retain compatibility with older gcc versions. */
-#define DEFAULT_PCC_STRUCT_RETURN 0
-
-/* OSF1 on the PA still uses 16bit wchar_t. */
-#undef WCHAR_TYPE
-#undef WCHAR_TYPE_SIZE
-
-#define WCHAR_TYPE "short unsigned int"
-#define WCHAR_TYPE_SIZE 16
-
-/* OSF1 wants to be different and use unsigned long as size_t. */
-#undef SIZE_TYPE
-#define SIZE_TYPE "long unsigned int"
+++ /dev/null
-/* Definitions of target machine for GNU compiler, for PRO.
- Copyright (C) 1996, 1997, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-/* Make GCC agree with types.h. */
-#undef SIZE_TYPE
-#undef PTRDIFF_TYPE
-
-#define SIZE_TYPE "unsigned int"
-#define PTRDIFF_TYPE "int"
-
-#undef TARGET_OS_CPP_BUILTINS
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- if (!c_dialect_cxx () && !flag_iso) \
- { \
- builtin_define ("hppa"); \
- builtin_define_std ("PWB"); \
- } \
- builtin_define ("__pro__"); \
- builtin_assert ("system=pro"); \
- } \
- while (0)
-
-/* Like the default, except no -lg. */
-#undef LIB_SPEC
-#define LIB_SPEC "%{!p:%{!pg:-lc}}%{p: -L/lib/libp/ -lc}%{pg: -L/lib/libp/ -lc}"
-
-/* hpux8 and later have C++ compatible include files, so do not
- pretend they are `extern "C"'. */
-#define NO_IMPLICIT_EXTERN_C
-
-/* We don't want a crt0.o to get linked in automatically, we want the
- linker script to pull it in. */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-/* We need to override the following two macros defined in elfos.h since
- the .comm directive has a different syntax and it can't be used for
- local common symbols. */
-#undef ASM_OUTPUT_ALIGNED_COMMON
-#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
- pa_asm_output_aligned_common (FILE, NAME, SIZE, ALIGN)
-
-#undef ASM_OUTPUT_ALIGNED_LOCAL
-#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \
- pa_asm_output_aligned_local (FILE, NAME, SIZE, ALIGN)
+++ /dev/null
-LIB2FUNCS_EXTRA=lib2funcs.asm
-
-# We want fine grained libraries, so use the new code to build the
-# floating point emulation libraries.
-FPBIT = fp-bit.c
-DPBIT = dp-bit.c
-
-dp-bit.c: $(srcdir)/config/fp-bit.c
- cat $(srcdir)/config/fp-bit.c > dp-bit.c
-
-fp-bit.c: $(srcdir)/config/fp-bit.c
- echo '#define FLOAT' > fp-bit.c
- cat $(srcdir)/config/fp-bit.c >> fp-bit.c
-
-lib2funcs.asm: $(srcdir)/config/pa/lib2funcs.asm
- rm -f lib2funcs.asm
- cp $(srcdir)/config/pa/lib2funcs.asm .
+++ /dev/null
-/* Operating system specific defines to be used when targeting GCC for
- Sequent's Dynix/ptx v4 and later.
- Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2007
- Free Software Foundation, Inc.
- Generic SysV4 file Contributed by Ron Guilmette (rfg@monkeys.com).
- Renamed and changed to suit Dynix/ptx v4 and later.
- Modified by Tim Wright (timw@sequent.com).
- Modified by Janis Johnson (janis@us.ibm.com).
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>.
-
-*/
-
-/* Define a symbol indicating that we are using svr4.h. */
-#define USING_SVR4_H
-
-/* Use DWARF 2 debugging info by default. */
-
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
-
-#define DWARF2_DEBUGGING_INFO 1
-
-/* Cpp, assembler, linker, library, and startfile spec's. */
-
-/* This defines which switch letters take arguments. On svr4, most of
- the normal cases (defined in gcc.c) apply, and we also have -h* and
- -z* options (for the linker). Note however that there is no such
- thing as a -T option for svr4. */
-
-#define SWITCH_TAKES_ARG(CHAR) \
- ( (CHAR) == 'D' \
- || (CHAR) == 'U' \
- || (CHAR) == 'o' \
- || (CHAR) == 'e' \
- || (CHAR) == 'u' \
- || (CHAR) == 'I' \
- || (CHAR) == 'm' \
- || (CHAR) == 'L' \
- || (CHAR) == 'A' \
- || (CHAR) == 'h' \
- || (CHAR) == 'z')
-
-/* This defines which multi-letter switches take arguments. On svr4,
- there are no such switches except those implemented by GCC itself. */
-
-#define WORD_SWITCH_TAKES_ARG(STR) \
- (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \
- && strcmp (STR, "Tdata") && strcmp (STR, "Ttext") \
- && strcmp (STR, "Tbss"))
-
-/* Provide an ASM_SPEC appropriate for svr4. Here we try to support as
- many of the specialized svr4 assembler options as seems reasonable,
- given that there are certain options which we can't (or shouldn't)
- support directly due to the fact that they conflict with other options
- for other svr4 tools (e.g. ld) or with other options for GCC itself.
- For example, we don't support the -o (output file) or -R (remove
- input file) options because GCC already handles these things. We
- also don't support the -m (run m4) option for the assembler because
- that conflicts with the -m (produce load map) option of the svr4
- linker. We do however allow passing arbitrary options to the svr4
- assembler via the -Wa, option.
-
- Note that gcc doesn't allow a space to follow -Y in a -Ym,* or -Yd,*
- option.
-*/
-
-#undef ASM_SPEC
-#ifdef USE_GAS
-#define ASM_SPEC \
- "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}"
-#else
-#define ASM_SPEC \
- "-no_0f_fix -no_eflags_chk %{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}"
-#endif
-
-#define AS_NEEDS_DASH_FOR_PIPED_INPUT
-
-/* Provide a LIB_SPEC appropriate for svr4. Here we tack on the default
- standard C library (unless we are building a shared library). */
-
-#undef LIB_SPEC
-#define LIB_SPEC "%{!shared:%{!symbolic:-lc}}"
-
-/* Provide a LIBGCC_SPEC appropriate for svr4. We also want to exclude
- libgcc when -symbolic. */
-
-#undef LIBGCC_SPEC
-#define LIBGCC_SPEC "%{!shared:%{!symbolic:-lgcc}}"
-
-/* Provide an ENDFILE_SPEC appropriate for svr4. Here we tack on our own
- magical crtend.o file (see crtstuff.c) which provides part of the
- support for getting C++ file-scope static object constructed before
- entering `main', followed by the normal svr3/svr4 "finalizer" file,
- which is either `gcrtn.o' or `crtn.o'. */
-
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC "crtend.o%s %{pg:gcrtn.o}%{!pg:crtn.o%s}"
-
-/* Provide a LINK_SPEC appropriate for svr4. Here we provide support
- for the special GCC options -static, -shared, and -symbolic which
- allow us to link things in one of these three modes by applying the
- appropriate combinations of options at link-time. We also provide
- support here for as many of the other svr4 linker options as seems
- reasonable, given that some of them conflict with options for other
- svr4 tools (e.g. the assembler). In particular, we do support the
- -z*, -V, -b, -t, -Qy, -Qn, and -YP* options here, and the -e*,
- -l*, -o*, -r, -s, -u*, and -L* options are directly supported
- by gcc.c itself. We don't directly support the -m (generate load
- map) option because that conflicts with the -m (run m4) option of
- the svr4 assembler. We also don't directly support the svr4 linker's
- -I* or -M* options because these conflict with existing GCC options.
- We do however allow passing arbitrary options to the svr4 linker
- via the -Wl, option. We don't support the svr4 linker's -a option
- at all because it is totally useless and because it conflicts with
- GCC's own -a option.
-
- Note that gcc doesn't allow a space to follow -Y in a -YP,* option.
-
- When the -G link option is used (-shared and -symbolic) a final link is
- not being done. */
-
-#undef LINK_SPEC
-#define LINK_SPEC "%{h*} %{v:-V} \
- %{b} \
- %{static:-dn -Bstatic} \
- %{shared:-G -dy -z text} \
- %{symbolic:-Bsymbolic -G -dy -z text} \
- %{G:-G} \
- %{YP,*} \
- %{!YP,*:%{p:-Y P,/lib/libp:/usr/lib/libp:/lib:/usr/lib} \
- %{!p:-Y P,/lib:/usr/lib}} \
- %{Qy:} %{!Qn:-Qy}"
-
-/* Gcc automatically adds in one of the files /lib/values-Xc.o
- or /lib/values-Xa.o, for each final link step (depending upon the other
- gcc options selected, such as -ansi). These files each contain one
- (initialized) copy of a special variable called `_lib_version'. Each
- one of these files has `_lib_version' initialized to a different (enum)
- value. The SVR4 library routines query the value of `_lib_version'
- at run to decide how they should behave. Specifically, they decide
- (based upon the value of `_lib_version') if they will act in a strictly
- ANSI conforming manner or not.
-*/
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "%{!shared: \
- %{!symbolic: \
- %{pg:gcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}}}\
- %{pg:gcrti.o%s}%{!pg:crti.o%s} \
- %{ansi:values-Xc.o%s} \
- %{!ansi:values-Xa.o%s} \
- crtbegin.o%s"
-
-/* Don't use bcopy, which doesn't handle overlaps before DYNIX/ptx 4.6. */
-
-#undef HAVE_BCOPY
-
-/* The numbers used to denote specific machine registers in the System V
- Release 4 DWARF debugging information are quite likely to be totally
- different from the numbers used in BSD stabs debugging information
- for the same kind of target machine. Thus, we undefine the macro
- DBX_REGISTER_NUMBER here as an extra inducement to get people to
- provide proper machine-specific definitions of DBX_REGISTER_NUMBER
- (which is also used to provide DWARF registers numbers in dwarfout.c)
- in their tm.h files which include this file. */
-
-#undef DBX_REGISTER_NUMBER
-
-/* Like block addresses, stabs line numbers are relative to the
- current function. */
-
-#define DBX_LINES_FUNCTION_RELATIVE 1
-
-/* Generate a blank trailing N_SO to mark the end of the .o file, since
- we can't depend upon the linker to mark .o file boundaries with
- embedded stabs. */
-
-#define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
-
-/* Define the actual types of some ANSI-mandated types. (These
- definitions should work for most SVR4 systems). */
-
-#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
-
-/* This says how to output assembler code to declare an uninitialized
- external linkage data item. There's a bug in the DYNIX/ptx linker
- (PR 254649) when the alignment for such an object is specified, so
- ignore the ALIGN parameter. */
-
-#undef ASM_OUTPUT_ALIGNED_COMMON
-#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \
-do { \
- fprintf ((FILE), "%s", COMMON_ASM_OP); \
- assemble_name ((FILE), (NAME)); \
- fprintf ((FILE), ",%lu\n", (unsigned long)(SIZE)); \
-} while (0)
-
+++ /dev/null
-/* Definitions of target machine for GNU compiler, for BeOS.
- Copyright (C) 1997, 2000, 2001, 2002, 2003, 2005, 2007
- Free Software Foundation, Inc.
- Contributed by Fred Fish (fnf@cygnus.com), based on aix41.h
- from David Edelsohn (edelsohn@npac.syr.edu).
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (BeOS/PowerPC)");
-
-#undef ASM_SPEC
-#define ASM_SPEC "-u %(asm_cpu)"
-
-#undef TARGET_OS_CPP_BUILTINS
-/* __POWERPC__ must be defined for some header files. */
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define ("__BEOS__"); \
- builtin_define ("__POWERPC__"); \
- builtin_assert ("system=beos"); \
- builtin_assert ("cpu=powerpc"); \
- builtin_assert ("machine=powerpc"); \
- } \
- while (0)
-
-#undef CPP_SPEC
-#define CPP_SPEC "%{posix: -D_POSIX_SOURCE}"
-
-/* This is the easiest way to disable use of gcc's builtin alloca,
- which in the current BeOS release (DR9) is a problem because of the
- relatively low default stack size of 256K with no way to expand it.
- So anything we compile for the BeOS target should not use the
- builtin alloca. This also has the unwanted side effect of
- disabling all builtin functions though. */
-
-#undef CC1_SPEC
-#define CC1_SPEC "%{!fbuiltin: -fno-builtin}"
-#undef CC1PLUS_SPEC
-#define CC1PLUS_SPEC "%{!fbuiltin: -fno-builtin}"
-
-#undef ASM_DEFAULT_SPEC
-#define ASM_DEFAULT_SPEC "-mppc"
-
-#undef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS)
-
-#undef PROCESSOR_DEFAULT
-#define PROCESSOR_DEFAULT PROCESSOR_PPC603
-
-/* Define this macro as a C expression for the initializer of an
- array of string to tell the driver program which options are
- defaults for this target and thus do not need to be handled
- specially when using `MULTILIB_OPTIONS'.
-
- Do not define this macro if `MULTILIB_OPTIONS' is not defined in
- the target makefile fragment or if none of the options listed in
- `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */
-
-#undef MULTILIB_DEFAULTS
-#define MULTILIB_DEFAULTS { "mcpu=powerpc" }
-
-/* These empty definitions get rid of the attempt to link in crt0.o
- and any libraries like libc.a.
- On BeOS the ld executable is actually a linker front end that first runs
- the GNU linker with the -r option to generate a relocatable XCOFF output
- file, and then runs Metrowork's linker (mwld) to generate a fully linked
- executable. */
-
-#undef LIB_SPEC
-#define LIB_SPEC ""
-
-#undef LINK_SPEC
-#define LINK_SPEC ""
-
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC ""
-
-/* Text to write out after a CALL that may be replaced by glue code by
- the loader. */
-
-#undef RS6000_CALL_GLUE
-#define RS6000_CALL_GLUE "cror 15,15,15"
-
-/* Struct alignments are done on 4 byte boundaries for all types. */
-#undef BIGGEST_FIELD_ALIGNMENT
-#define BIGGEST_FIELD_ALIGNMENT 32
-
-/* STANDARD_INCLUDE_DIR is the equivalent of "/usr/include" on UNIX. */
-#define STANDARD_INCLUDE_DIR "/boot/develop/headers/posix"
-
-/* SYSTEM_INCLUDE_DIR is the location for system specific, non-POSIX headers. */
-#define SYSTEM_INCLUDE_DIR "/boot/develop/headers/be"
+++ /dev/null
-/* Definitions of target machine for GNU compiler.
- kaOS on PowerPC architecture version.
- Copyright (C) 2003, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (PowerPC/kaOS[ELF])", stderr);
-
myellowknife : %(link_start_yellowknife) ; \
mmvme : %(link_start_mvme) ; \
msim : %(link_start_sim) ; \
- mwindiss : %(link_start_windiss) ; \
mcall-freebsd: %(link_start_freebsd) ; \
mcall-linux : %(link_start_linux) ; \
mcall-gnu : %(link_start_gnu) ; \
myellowknife : %(link_os_yellowknife) ; \
mmvme : %(link_os_mvme) ; \
msim : %(link_os_sim) ; \
- mwindiss : %(link_os_windiss) ; \
mcall-freebsd: %(link_os_freebsd) ; \
mcall-linux : %(link_os_linux) ; \
mcall-gnu : %(link_os_gnu) ; \
myellowknife : %(cpp_os_yellowknife) ; \
mmvme : %(cpp_os_mvme) ; \
msim : %(cpp_os_sim) ; \
- mwindiss : %(cpp_os_windiss) ; \
mcall-freebsd: %(cpp_os_freebsd) ; \
mcall-linux : %(cpp_os_linux) ; \
mcall-gnu : %(cpp_os_gnu) ; \
myellowknife : %(startfile_yellowknife) ; \
mmvme : %(startfile_mvme) ; \
msim : %(startfile_sim) ; \
- mwindiss : %(startfile_windiss) ; \
mcall-freebsd: %(startfile_freebsd) ; \
mcall-linux : %(startfile_linux) ; \
mcall-gnu : %(startfile_gnu) ; \
myellowknife : %(lib_yellowknife) ; \
mmvme : %(lib_mvme) ; \
msim : %(lib_sim) ; \
- mwindiss : %(lib_windiss) ; \
mcall-freebsd: %(lib_freebsd) ; \
mcall-linux : %(lib_linux) ; \
mcall-gnu : %(lib_gnu) ; \
myellowknife : %(endfile_yellowknife) ; \
mmvme : %(endfile_mvme) ; \
msim : %(endfile_sim) ; \
- mwindiss : %(endfile_windiss) ; \
mcall-freebsd: %(endfile_freebsd) ; \
mcall-linux : %(endfile_linux) ; \
mcall-gnu : %(endfile_gnu) ; \
#define CPP_OS_OPENBSD_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}"
#endif
-/* WindISS support. */
-
-#define LIB_WINDISS_SPEC "--start-group -li -lcfp -lwindiss -lram -limpl -limpfp --end-group"
-
-#define CPP_OS_WINDISS_SPEC "\
--D__rtasim \
--D__EABI__ \
--D__ppc \
-%{!msoft-float: -D__hardfp} \
-"
-
-#define STARTFILE_WINDISS_SPEC "crt0.o%s crtbegin.o%s"
-
-#define ENDFILE_WINDISS_SPEC "crtend.o%s"
-
-#define LINK_START_WINDISS_SPEC ""
-
-#define LINK_OS_WINDISS_SPEC ""
-
/* Define any extra SPECS that the compiler needs to generate. */
/* Override rs6000.h definition. */
#undef SUBTARGET_EXTRA_SPECS
{ "lib_linux", LIB_LINUX_SPEC }, \
{ "lib_netbsd", LIB_NETBSD_SPEC }, \
{ "lib_openbsd", LIB_OPENBSD_SPEC }, \
- { "lib_windiss", LIB_WINDISS_SPEC }, \
{ "lib_default", LIB_DEFAULT_SPEC }, \
{ "startfile_ads", STARTFILE_ADS_SPEC }, \
{ "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \
{ "startfile_linux", STARTFILE_LINUX_SPEC }, \
{ "startfile_netbsd", STARTFILE_NETBSD_SPEC }, \
{ "startfile_openbsd", STARTFILE_OPENBSD_SPEC }, \
- { "startfile_windiss", STARTFILE_WINDISS_SPEC }, \
{ "startfile_default", STARTFILE_DEFAULT_SPEC }, \
{ "endfile_ads", ENDFILE_ADS_SPEC }, \
{ "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \
{ "endfile_linux", ENDFILE_LINUX_SPEC }, \
{ "endfile_netbsd", ENDFILE_NETBSD_SPEC }, \
{ "endfile_openbsd", ENDFILE_OPENBSD_SPEC }, \
- { "endfile_windiss", ENDFILE_WINDISS_SPEC }, \
{ "endfile_default", ENDFILE_DEFAULT_SPEC }, \
{ "link_path", LINK_PATH_SPEC }, \
{ "link_shlib", LINK_SHLIB_SPEC }, \
{ "link_start_linux", LINK_START_LINUX_SPEC }, \
{ "link_start_netbsd", LINK_START_NETBSD_SPEC }, \
{ "link_start_openbsd", LINK_START_OPENBSD_SPEC }, \
- { "link_start_windiss", LINK_START_WINDISS_SPEC }, \
{ "link_start_default", LINK_START_DEFAULT_SPEC }, \
{ "link_os", LINK_OS_SPEC }, \
{ "link_os_ads", LINK_OS_ADS_SPEC }, \
{ "link_os_gnu", LINK_OS_GNU_SPEC }, \
{ "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \
{ "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
- { "link_os_windiss", LINK_OS_WINDISS_SPEC }, \
{ "link_os_default", LINK_OS_DEFAULT_SPEC }, \
{ "cc1_endian_big", CC1_ENDIAN_BIG_SPEC }, \
{ "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \
{ "cpp_os_linux", CPP_OS_LINUX_SPEC }, \
{ "cpp_os_netbsd", CPP_OS_NETBSD_SPEC }, \
{ "cpp_os_openbsd", CPP_OS_OPENBSD_SPEC }, \
- { "cpp_os_windiss", CPP_OS_WINDISS_SPEC }, \
{ "cpp_os_default", CPP_OS_DEFAULT_SPEC }, \
{ "fbsd_dynamic_linker", FBSD_DYNAMIC_LINKER }, \
SUBSUBTARGET_EXTRA_SPECS
Target RejectNegative
Set the PPC_EMB bit in the ELF flags header
-mwindiss
-Target RejectNegative
-Use the WindISS simulator
-
mshlib
Target RejectNegative
no description yet
+++ /dev/null
-# Build the libraries for both hard & soft floating point and ppc/common.
-
-MULTILIB_OPTIONS = msoft-float mcpu=common
-MULTILIB_DIRNAMES = soft-float common
-
-# This is probably the correct define, to override the Makefile
-# default, but using it causes more problems than it solves.
-#
-# Using it will cause fixincludes to try and fix some of the
-# mwcc header files, which it seems to do a poor job of. On
-# the other hand, not using it will only cause the gcc version
-# of limits.h to lack the header and trailer parts that are
-# tacked on to it when there is a limits.h in the system header
-# dir.
-#
-# For now it is probably better to change the rule for
-# LIMITS_H_TEST to explicitly look for the BeOS limits.h.
-# If the gcc limits.h is not set up to #include_next the
-# BeOS limits.h, then some things will go undefined, like
-# PATH_MAX.
-
-#SYSTEM_HEADER_DIR=/boot/develop/headers/posix
-# Test to see whether <limits.h> exists in the system header files.
-LIMITS_H_TEST = [ -f /boot/develop/headers/posix/limits.h ]
-
-# Aix 3.2.x needs milli.exp for -mcpu=common
-EXTRA_PARTS = milli.exp
-$(T)milli.exp: $(srcdir)/config/rs6000/milli.exp
- rm -f $(T)milli.exp
- cp $(srcdir)/config/rs6000/milli.exp $(T)milli.exp
+++ /dev/null
-/* Support for GCC on PowerPC using WindISS simulator.
- Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc.
- Contributed by CodeSourcery, LLC.
-
- This file is part of GCC.
-
- GCC 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 3, or (at your
- option) any later version.
-
- GCC 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 GCC; see the file COPYING3. If not see
- <http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fprintf (stderr, " (PowerPC WindISS)");
-
-#undef LIB_DEFAULT_SPEC
-#define LIB_DEFAULT_SPEC "%(lib_windiss)"
-
-#undef STARTFILE_DEFAULT_SPEC
-#define STARTFILE_DEFAULT_SPEC "%(startfile_windiss)"
-
-#undef ENDFILE_DEFAULT_SPEC
-#define ENDFILE_DEFAULT_SPEC "%(endfile_windiss)"
-
-#undef LINK_START_DEFAULT_SPEC
-#define LINK_START_DEFAULT_SPEC "%(link_start_windiss)"
-
-#undef LINK_OS_DEFAULT_SPEC
-#define LINK_OS_DEFAULT_SPEC "%(link_os_windiss)"
-
-#undef CRTSAVRES_DEFAULT_SPEC
-#define CRTSAVRES_DEFAULT_SPEC ""
-
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "short unsigned int"
-
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 16
+++ /dev/null
-/* Definitions of target machine for GNU compiler.
- kaOS on sh architecture version.
- Copyright (C) 2003, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef TARGET_VERSION
-#define TARGET_VERSION fputs (" (sh/kaOS[ELF])", stderr);
-
+++ /dev/null
-/* Operating system specific defines to be used when targeting GCC for any
- Solaris 2 system up to Solaris 2.6.
- Copyright 2004, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#undef CPP_SUBTARGET_SPEC
-#define CPP_SUBTARGET_SPEC "\
-%{pthreads|pthread:-D_REENTRANT -D_PTHREADS95} \
-%{!pthreads:%{!pthread:%{threads:-D_REENTRANT -D_SOLARIS_THREADS}}} \
-%{compat-bsd:-iwithprefixbefore ucbinclude -I/usr/ucbinclude} \
-"
+++ /dev/null
-/* Up through Solaris 2.6, the system linker does not work with DWARF2
- since it does not have working support for relocations to unaligned
- data. */
-
-#undef DWARF2_DEBUGGING_INFO
+++ /dev/null
-/* Target macros for GCC for SPARC running System V.4
- Copyright (C) 2003, 2005, 2007
- Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-/* Provide a set of pre-definitions and pre-assertions appropriate for
- the SPARC running svr4. __svr4__ is our extension. */
-
-/* Target OS builtins. */ \
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("unix"); \
- builtin_define ("__svr4__"); \
- builtin_assert ("system=unix"); \
- builtin_assert ("system=svr4"); \
- } \
- while (0)
+++ /dev/null
-/* Definitions of target machine for GNU compiler. BSD version.
- Copyright (C) 2002, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("unix"); \
- builtin_assert ("system=bsd"); \
- \
- builtin_define_std ("vax"); \
- if (TARGET_G_FLOAT) \
- builtin_define_std ("GFLOAT"); \
- } \
- while (0)
+++ /dev/null
-LIB2FUNCS_EXTRA = \
- $(srcdir)/config/memcmp.c $(srcdir)/config/memcpy.c \
- $(srcdir)/config/memmove.c $(srcdir)/config/memset.c
+++ /dev/null
-/* Output variables, constants and external declarations, for GNU compiler.
- Copyright (C) 1999, 2002, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("unix"); \
- builtin_define_std ("ultrix"); \
- builtin_define_std ("bsd4_2"); \
- builtin_assert ("system=unix"); \
- builtin_assert ("system=bsd"); \
- \
- builtin_define_std ("vax"); \
- if (TARGET_G_FLOAT) \
- builtin_define_std ("GFLOAT"); \
- } \
- while (0)
-
-/* These are as defined in /usr/include/sys/stdtypes.h.
- These values are for ultrix 4.2 on the VAX. */
-#define SIZE_TYPE "unsigned int"
-#define PTRDIFF_TYPE "int"
-#define WCHAR_TYPE "unsigned int"
-#define WCHAR_TYPE_SIZE 32
+++ /dev/null
-/* Definitions of target machine for GNU compiler. VAX sysV version.
- Copyright (C) 1988, 1993, 1996, 2000, 2002, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#define TARGET_OS_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("unix"); \
- builtin_assert ("system=svr3"); \
- \
- builtin_define_std ("vax"); \
- if (TARGET_G_FLOAT) \
- builtin_define_std ("GFLOAT"); \
- } \
- while (0)
-
-/* Output #ident as a .ident. */
-
-#define ASM_OUTPUT_IDENT(FILE, NAME) fprintf (FILE, "\t.ident \"%s\"\n", NAME);
-
-#undef DBX_DEBUGGING_INFO
-#define SDB_DEBUGGING_INFO 1
-
-#undef LIB_SPEC
-
-/* The .file command should always begin the output. */
-#define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
-
-#undef ASM_OUTPUT_ALIGN
-#define ASM_OUTPUT_ALIGN(FILE,LOG) \
- fprintf(FILE, "\t.align %d\n", 1 << (LOG))
-
-#undef ASM_OUTPUT_LOCAL
-#define ASM_OUTPUT_LOCAL(FILE,NAME,SIZE,ROUNDED) \
-( switch_to_section (data_section), \
- assemble_name ((FILE), (NAME)), \
- fprintf ((FILE), ":\n\t.space %u\n", (int)(ROUNDED)))
-
-#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
-do { \
- const unsigned char *s = (const unsigned char *)(PTR);\
- size_t i, limit = (LEN); \
- for (i = 0; i < limit; s++, i++) \
- { \
- if ((i % 8) == 0) \
- fputs ("\n\t.byte\t", (FILE)); \
- fprintf ((FILE), "%s0x%x", (i%8?",":""), (unsigned)*s); \
- } \
- fputs ("\n", (FILE)); \
-} while (0)
+++ /dev/null
-/* Support for GCC using WindISS simulator.
- Copyright (C) 2003, 2007 Free Software Foundation, Inc.
- Contributed by CodeSourcery, LLC.
-
-This file is part of GCC.
-
-GCC 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 3, or (at your option)
-any later version.
-
-GCC 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 GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-
-/* windiss uses wchar_t == unsigned short (UCS2) on all architectures. */
-#undef WCHAR_TYPE
-#define WCHAR_TYPE "short unsigned int"
-#undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE 16
-
-/* windiss has wint_t == int */
-#undef WINT_TYPE
-#define WINT_TYPE "int"
-
-/* No profiling. */
-#undef FUNCTION_PROFILER
-#define FUNCTION_PROFILER(FILE, LABELNO) \
-{ \
- sorry ("profiler support for WindISS"); \
-}
# version to the per-target configury.
case "$target" in
i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
- | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \
+ | x86_64*-*-* | hppa*-*-* | arm*-*-* \
| xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-* | score*-*-* | spu-*-*)
insn="nop"
;;
# version to the per-target configury.
case "$target" in
i?86*-*-* | mips*-*-* | alpha*-*-* | powerpc*-*-* | sparc*-*-* | m68*-*-* \
- | x86_64*-*-* | hppa*-*-* | arm*-*-* | strongarm*-*-* | xscale*-*-* \
+ | x86_64*-*-* | hppa*-*-* | arm*-*-* \
| xstormy16*-*-* | cris-*-* | xtensa-*-* | bfin-*-* | score*-*-* | spu-*-*)
insn="nop"
;;
identifier characters by default.
Currently the targets that by default do not permit @samp{$} are AVR,
-IP2K, MMIX, MIPS Irix 3, ARM aout, and PowerPC targets for the AIX and
-BeOS operating systems.
+IP2K, MMIX, MIPS Irix 3, ARM aout, and PowerPC targets for the AIX
+operating system.
You can override the default with @option{-fdollars-in-identifiers} or
@option{fno-dollars-in-identifiers}. @xref{fdollars-in-identifiers}.
@item interrupt
@cindex interrupt handler functions
-Use this attribute on the ARM, AVR, CRX, M32C, M32R/D, m68k, MS1,
+Use this attribute on the ARM, AVR, CRX, M32C, M32R/D, m68k,
and Xstormy16 ports to indicate that the specified function is an
interrupt handler. The compiler will generate function entry and exit
sequences suitable for use in an interrupt handler when this attribute
@itemize @bullet
@item @samp{hppa1.0-@var{any}-@var{any}}
@item @samp{hppa1.1-@var{any}-@var{any}}
-@item @samp{i386-@var{any}-sysv}
-@item @samp{m68k-bull-sysv}
-@item @samp{m68k-hp-hpux}
-@item @samp{m68000-hp-hpux}
-@item @samp{m68000-att-sysv}
@item @samp{sparc-sun-solaris2.@var{any}}
@item @samp{sparc64-@var{any}-solaris2.@var{any}}
@end itemize
@item
@uref{#alpha-dec-osf,,alpha*-dec-osf*}
@item
-@uref{#alphaev5-cray-unicosmk,,alphaev5-cray-unicosmk*}
-@item
@uref{#arc-x-elf,,arc-*-elf}
@item
@uref{#arm-x-elf,,arm-*-elf}
@uref{#arm-x-coff,,arm-*-coff}
@uref{#arm-x-aout,,arm-*-aout}
@item
-@uref{#xscale-x-x,,xscale-*-*}
-@item
@uref{#avr,,avr}
@item
@uref{#bfin,,Blackfin}
@item
@uref{#x-x-linux-gnu,,*-*-linux-gnu}
@item
-@uref{#ix86-x-linuxaout,,i?86-*-linux*aout}
-@item
@uref{#ix86-x-linux,,i?86-*-linux*}
@item
-@uref{#ix86-x-sco32v5,,i?86-*-sco3.2v5*}
-@item
@uref{#ix86-x-solaris210,,i?86-*-solaris2.10}
@item
-@uref{#ix86-x-udk,,i?86-*-udk}
-@item
@uref{#ia64-x-linux,,ia64-*-linux}
@item
@uref{#ia64-x-hpux,,ia64-*-hpux*}
@item
@uref{#m68k-x-x,,m68k-*-*}
@item
-@uref{#m68k-hp-hpux,,m68k-hp-hpux}
-@item
@uref{#m68k-uclinux,,m68k-uclinux}
@item
@uref{#mips-x-x,,mips-*-*}
@item
@uref{#mips-sgi-irix6,,mips-sgi-irix6}
@item
-@uref{#powerpc-x-x,,powerpc*-*-*, powerpc-*-sysv4}
+@uref{#powerpc-x-x,,powerpc*-*-*}
@item
@uref{#powerpc-x-darwin,,powerpc-*-darwin*}
@item
-@uref{#powerpc-x-elf,,powerpc-*-elf, powerpc-*-sysv4}
+@uref{#powerpc-x-elf,,powerpc-*-elf}
@item
@uref{#powerpc-x-linux-gnu,,powerpc*-*-linux-gnu*}
@item
@item
@uref{#powerpc-x-eabi,,powerpc-*-eabi}
@item
-@uref{#powerpcle-x-elf,,powerpcle-*-elf, powerpcle-*-sysv4}
+@uref{#powerpcle-x-elf,,powerpcle-*-elf}
@item
@uref{#powerpcle-x-eabisim,,powerpcle-*-eabisim}
@item
@item
@uref{#sparcv9-x-solaris2,,sparcv9-*-solaris2*}
@item
-@uref{#x-x-sysv,,*-*-sysv*}
-@item
-@uref{#vax-dec-ultrix,,vax-dec-ultrix}
-@item
@uref{#x-x-vxworks,,*-*-vxworks*}
@item
@uref{#x86-64-x-x,,x86_64-*-*, amd64-*-*}
DBX@. DEC is now aware of this problem with the assembler and hopes to
provide a fix shortly.
-@html
-<hr />
-@end html
-@heading @anchor{alphaev5-cray-unicosmk}alphaev5-cray-unicosmk*
-Cray T3E systems running Unicos/Mk.
-
-This port is incomplete and has many known bugs. We hope to improve the
-support for this target soon. Currently, only the C front end is supported,
-and it is not possible to build parallel applications. Cray modules are not
-supported; in particular, Craylibs are assumed to be in
-@file{/opt/ctl/craylibs/craylibs}.
-
-On this platform, you need to tell GCC where to find the assembler and
-the linker. The simplest way to do so is by providing @option{--with-as}
-and @option{--with-ld} to @file{configure}, e.g.@:
-
-@smallexample
- configure --with-as=/opt/ctl/bin/cam --with-ld=/opt/ctl/bin/cld \
- --enable-languages=c
-@end smallexample
-
-The comparison test at the end of the bootstrapping process fails on Unicos/Mk
-because the assembler inserts timestamps into object files. You should
-be able to work around this by doing @samp{make all} after getting this
-failure.
-
@html
<hr />
@end html
<hr />
@end html
@heading @anchor{arm-x-elf}arm-*-elf
-@heading @anchor{xscale-x-x}xscale-*-*
ARM-family processors. Subtargets that use the ELF object format
require GNU binutils 2.13 or newer. Such subtargets include:
-@code{arm-*-freebsd}, @code{arm-*-netbsdelf}, @code{arm-*-*linux},
-@code{arm-*-rtems} and @code{arm-*-kaos}.
+@code{arm-*-freebsd}, @code{arm-*-netbsdelf}, @code{arm-*-*linux}
+and @code{arm-*-rtems}.
@html
<hr />
There are a few different CRIS targets:
@table @code
-@item cris-axis-aout
-Old target. Includes a multilib for the @samp{elinux} a.out-based
-target. No multilibs for newer architecture variants.
@item cris-axis-elf
Mainly for monolithic embedded systems. Includes a multilib for the
@samp{v10} core used in @samp{ETRAX 100 LX}.
@samp{ETRAX 100 LX} by default.
@end table
-For @code{cris-axis-aout} and @code{cris-axis-elf} you need binutils 2.11
+For @code{cris-axis-elf} you need binutils 2.11
or newer. For @code{cris-axis-linux-gnu} you need binutils 2.12 or newer.
Pre-packaged tools can be obtained from
in glibc 2.2.5 and later. More information is available in the
libstdc++-v3 documentation.
-@html
-<hr />
-@end html
-@heading @anchor{ix86-x-linuxaout}i?86-*-linux*aout
-Use this configuration to generate @file{a.out} binaries on Linux-based
-GNU systems. This configuration is being superseded.
-
@html
<hr />
@end html
possible you have a hardware problem. Further information on this can be
found on @uref{http://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
-@html
-<hr />
-@end html
-@heading @anchor{ix86-x-sco32v5}i?86-*-sco3.2v5*
-Use this for the SCO OpenServer Release 5 family of operating systems.
-
-Unlike earlier versions of GCC, the ability to generate COFF with this
-target is no longer provided.
-
-Earlier versions of GCC emitted DWARF 1 when generating ELF to allow
-the system debugger to be used. That support was too burdensome to
-maintain. GCC now emits only DWARF 2 for this target. This means you
-may use either the UDK debugger or GDB to debug programs built by this
-version of GCC@.
-
-GCC is now only supported on releases 5.0.4 and later, and requires that
-you install Support Level Supplement OSS646B or later, and Support Level
-Supplement OSS631C or later. If you are using release 5.0.7 of
-OpenServer, you must have at least the first maintenance pack installed
-(this includes the relevant portions of OSS646). OSS646, also known as
-the ``Execution Environment Update'', provides updated link editors and
-assemblers, as well as updated standard C and math libraries. The C
-startup modules are also updated to support the System V gABI draft, and
-GCC relies on that behavior. OSS631 provides a collection of commonly
-used open source libraries, some of which GCC depends on (such as GNU
-gettext and zlib). SCO OpenServer Release 5.0.7 has all of this built
-in by default, but OSS631C and later also apply to that release. Please
-visit
-@uref{ftp://ftp.sco.com/pub/openserver5,,ftp://ftp.sco.com/pub/openserver5}
-for the latest versions of these (and other potentially useful)
-supplements.
-
-Although there is support for using the native assembler, it is
-recommended that you configure GCC to use the GNU assembler. You do
-this by using the flags
-@uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}}. You should
-use a modern version of GNU binutils. Version 2.13.2.1 was used for all
-testing. In general, only the @option{--with-gnu-as} option is tested.
-A modern bintuils (as well as a plethora of other development related
-GNU utilities) can be found in Support Level Supplement OSS658A, the
-``GNU Development Tools'' package. See the SCO web and ftp sites for details.
-That package also contains the currently ``officially supported'' version of
-GCC, version 2.95.3. It is useful for bootstrapping this version.
-
@html
<hr />
@end html
@option{--with-gnu-as --with-as=/usr/sfw/bin/gas --without-gnu-ld
--with-ld=/usr/ccs/bin/ld}.
-@html
-<hr />
-@end html
-@heading @anchor{ix86-x-udk}i?86-*-udk
-
-This target emulates the SCO Universal Development Kit and requires that
-package be installed. (If it is installed, you will have a
-@file{/udk/usr/ccs/bin/cc} file present.) It's very much like the
-@samp{i?86-*-unixware7*} target
-but is meant to be used when hosting on a system where UDK isn't the
-default compiler such as OpenServer 5 or Unixware 2. This target will
-generate binaries that will run on OpenServer, Unixware 2, or Unixware 7,
-with the same warnings and caveats as the SCO UDK@.
-
-This target is a little tricky to build because we have to distinguish
-it from the native tools (so it gets headers, startups, and libraries
-from the right place) while making the tools not think we're actually
-building a cross compiler. The easiest way to do this is with a configure
-command like this:
-
-@smallexample
- CC=/udk/usr/ccs/bin/cc @var{/your/path/to}/gcc/configure \
- --host=i686-pc-udk --target=i686-pc-udk --program-prefix=udk-
-@end smallexample
-
-@emph{You should substitute @samp{i686} in the above command with the appropriate
-processor for your host.}
-
-After the usual @samp{make} and
-@samp{make install}, you can then access the UDK-targeted GCC
-tools by adding @command{udk-} before the commonly known name. For
-example, to invoke the C compiler, you would use @command{udk-gcc}.
-They will coexist peacefully with any native-target GCC tools you may
-have installed.
-
-
@html
<hr />
@end html
@samp{m68000}, @samp{m68010}, @samp{m68020}, @samp{m68030},
@samp{m68040}, @samp{m68060}, @samp{m68020-40} and @samp{m68020-60}.
-@html
-<hr />
-@end html
-@heading @anchor{m68k-hp-hpux}m68k-hp-hpux
-HP 9000 series 300 or 400 running HP-UX@. HP-UX version 8.0 has a bug in
-the assembler that prevents compilation of GCC@. This
-bug manifests itself during the first stage of compilation, while
-building @file{libgcc2.a}:
-
-@smallexample
-_floatdisf
-cc1: warning: `-g' option not supported on this version of GCC
-cc1: warning: `-g1' option not supported on this version of GCC
-./xgcc: Internal compiler error: program as got fatal signal 11
-@end smallexample
-
-A patched version of the assembler is available as the file
-@uref{ftp://altdorf.ai.mit.edu/archive/cph/hpux-8.0-assembler}. If you
-have HP software support, the patch can also be obtained directly from
-HP, as described in the following note:
-
-@quotation
-This is the patched assembler, to patch SR#1653-010439, where the
-assembler aborts on floating point constants.
-
-The bug is not really in the assembler, but in the shared library
-version of the function ``cvtnum(3c)''. The bug on ``cvtnum(3c)'' is
-SR#4701-078451. Anyway, the attached assembler uses the archive
-library version of ``cvtnum(3c)'' and thus does not exhibit the bug.
-@end quotation
-
-This patch is also known as PHCO_4484.
-
-In addition gdb does not understand that native HP-UX format, so
-you must use gas if you wish to use gdb.
-
-On HP-UX version 8.05, but not on 8.07 or more recent versions, the
-@command{fixproto} shell script triggers a bug in the system shell. If you
-encounter this problem, upgrade your operating system or use BASH (the
-GNU shell) to run @command{fixproto}. This bug will cause the fixproto
-program to report an error of the form:
-
-@smallexample
-./fixproto: sh internal 1K buffer overflow
-@end smallexample
-
-To fix this, you can also change the first line of the fixproto script
-to look like:
-
-@smallexample
-#!/bin/ksh
-@end smallexample
-
@html
<hr />
@end html
@html
<hr />
@end html
-@heading @anchor{powerpc-x-elf}powerpc-*-elf, powerpc-*-sysv4
+@heading @anchor{powerpc-x-elf}powerpc-*-elf
PowerPC system in big endian mode, running System V.4.
@html
@html
<hr />
@end html
-@heading @anchor{powerpcle-x-elf}powerpcle-*-elf, powerpcle-*-sysv4
+@heading @anchor{powerpcle-x-elf}powerpcle-*-elf
PowerPC system in little endian mode, running System V.4.
@html
This is a synonym for sparc64-*-solaris2*.
-@html
-<hr />
-@end html
-@heading @anchor{x-x-sysv}*-*-sysv*
-On System V release 3, you may get this error message
-while linking:
-
-@smallexample
-ld fatal: failed to write symbol name @var{something}
- in strings table for file @var{whatever}
-@end smallexample
-
-This probably indicates that the disk is full or your ulimit won't allow
-the file to be as large as it needs to be.
-
-This problem can also result because the kernel parameter @code{MAXUMEM}
-is too small. If so, you must regenerate the kernel and make the value
-much larger. The default value is reported to be 1024; a value of 32768
-is said to work. Smaller values may also work.
-
-On System V, if you get an error like this,
-
-@smallexample
-/usr/local/lib/bison.simple: In function `yyparse':
-/usr/local/lib/bison.simple:625: virtual memory exhausted
-@end smallexample
-
-@noindent
-that too indicates a problem with disk space, ulimit, or @code{MAXUMEM}.
-
-On a System V release 4 system, make sure @file{/usr/bin} precedes
-@file{/usr/ucb} in @code{PATH}. The @command{cc} command in
-@file{/usr/ucb} uses libraries which have bugs.
-
-@html
-<hr />
-@end html
-@heading @anchor{vax-dec-ultrix}vax-dec-ultrix
-Don't try compiling with VAX C (@command{vcc}). It produces incorrect code
-in some cases (for example, when @code{alloca} is used).
-
@html
<hr />
@end html
-mreturn-pointer-on-d0 @gol
-mno-crt0 -mrelax}
-@emph{MT Options}
-@gccoptlist{-mno-crt0 -mbacc -msim @gol
--march=@var{cpu-type} }
-
@emph{PDP-11 Options}
@gccoptlist{-mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 @gol
-mbcopy -mbcopy-builtin -mint32 -mno-int16 @gol
-mfloat-gprs=yes -mfloat-gprs=no -mfloat-gprs=single -mfloat-gprs=double @gol
-mprototype -mno-prototype @gol
-msim -mmvme -mads -myellowknife -memb -msdata @gol
--msdata=@var{opt} -mvxworks -mwindiss -G @var{num} -pthread}
+-msdata=@var{opt} -mvxworks -G @var{num} -pthread}
@emph{S/390 and zSeries Options}
@gccoptlist{-mtune=@var{cpu-type} -march=@var{cpu-type} @gol
* MIPS Options::
* MMIX Options::
* MN10300 Options::
-* MT Options::
* PDP-11 Options::
* PowerPC Options::
* RS/6000 and PowerPC Options::
@opindex mmax-stack-frame
Warn when the stack frame of a function exceeds @var{n} bytes.
-@item -melinux-stacksize=@var{n}
-@opindex melinux-stacksize
-Only available with the @samp{cris-axis-aout} target. Arranges for
-indications in the program to the kernel loader that the stack of the
-program should be set to @var{n} bytes.
-
@item -metrax4
@itemx -metrax100
@opindex metrax4
of the GOT rather than (traditional on other architectures) calls to the
PLT@. The default is @option{-mgotplt}.
-@item -maout
-@opindex maout
-Legacy no-op option only recognized with the cris-axis-aout target.
-
@item -melf
@opindex melf
Legacy no-op option only recognized with the cris-axis-elf and
cris-axis-linux-gnu targets.
-@item -melinux
-@opindex melinux
-Only recognized with the cris-axis-aout target, where it selects a
-GNU/linux-like multilib, include files and instruction set for
-@option{-march=v8}.
-
@item -mlinux
@opindex mlinux
Legacy no-op option only recognized with the cris-axis-linux-gnu target.
@item -sim
@opindex sim
-This option, recognized for the cris-axis-aout and cris-axis-elf arranges
+This option, recognized for the cris-axis-elf arranges
to link with input-output functions from a simulator library. Code,
initialized data and zero-initialized data are allocated consecutively.
targets. Normally the facilities of the machine's usual C compiler are
used, but this cannot be done directly in cross-compilation. You must make
your own arrangements to provide suitable library functions for
-cross-compilation. The embedded target @samp{hppa1.1-*-pro}
-does provide software floating point support.
+cross-compilation.
@option{-msoft-float} changes the calling convention in the output file;
therefore, it is only useful if you compile @emph{all} of a program with
This option makes symbolic debugging impossible.
@end table
-@node MT Options
-@subsection MT Options
-@cindex MT options
-
-These @option{-m} options are defined for Morpho MT architectures:
-
-@table @gcctabopt
-
-@item -march=@var{cpu-type}
-@opindex march
-Generate code that will run on @var{cpu-type}, which is the name of a system
-representing a certain processor type. Possible values for
-@var{cpu-type} are @samp{ms1-64-001}, @samp{ms1-16-002},
-@samp{ms1-16-003} and @samp{ms2}.
-
-When this option is not used, the default is @option{-march=ms1-16-002}.
-
-@item -mbacc
-@opindex mbacc
-Use byte loads and stores when generating code.
-
-@item -mno-bacc
-@opindex mno-bacc
-Do not use byte loads and stores when generating code.
-
-@item -msim
-@opindex msim
-Use simulator runtime
-
-@item -mno-crt0
-@opindex mno-crt0
-Do not link in the C run-time initialization object file
-@file{crti.o}. Other run-time initialization and termination files
-such as @file{startup.o} and @file{exit.o} are still included on the
-linker command line.
-
-@end table
-
@node PDP-11 Options
@subsection PDP-11 Options
@cindex PDP-11 Options
On System V.4 and embedded PowerPC systems, specify that you are
compiling for a VxWorks system.
-@item -mwindiss
-@opindex mwindiss
-Specify that you are compiling for the WindISS simulation environment.
-
@item -memb
@opindex memb
On embedded PowerPC systems, set the @var{PPC_EMB} bit in the ELF flags
@end table
-@item MorphoTech family---@file{config/mt/mt.h}
-@table @code
-@item I
-Constant for an arithmetic insn (16-bit signed integer).
-
-@item J
-The constant 0.
-
-@item K
-Constant for a logical insn (16-bit zero-extended integer).
-
-@item L
-A constant that can be loaded with @code{lui} (i.e.@: the bottom 16
-bits are zero).
-
-@item M
-A constant that takes two words to load (i.e.@: not matched by
-@code{I}, @code{K}, or @code{L}).
-
-@item N
-Negative 16-bit constants other than -65536.
-
-@item O
-A 15-bit signed integer constant.
-
-@item P
-A positive 16-bit constant.
-@end table
-
@item Intel 386---@file{config/i386/constraints.md}
@table @code
@item R
/* Jump to a trampoline, loading the static chain address. */
-#if defined(WINNT) && ! defined(__CYGWIN__) && ! defined (_UWIN)
+#if defined(WINNT) && ! defined(__CYGWIN__)
int
getpagesize (void)
return -1;
}
-#endif /* WINNT && ! __CYGWIN__ && ! _UWIN */
+#endif /* WINNT && ! __CYGWIN__ */
#ifdef TRANSFER_FROM_TRAMPOLINE
TRANSFER_FROM_TRAMPOLINE
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * g++.dg/abi/arm_cxa_vec1.C: Don't handle xscale*-*-*.
+ * g++.dg/eh/spbp.C: Don't handle *-*-solaris2.[56]*.
+ * g++.dg/warn/miss-format-1.C: Don't handle Solaris before Solaris
+ 7.
+ * gcc.c-torture/compile/981006-1.c: Don't handle xscale*-*-*,
+ strongarm*-*-* and cris-*-aout*.
+ * gcc.c-torture/execute/941014-1.x: Don't handle xscale*-*-* and
+ strongarm*-*-*.
+ * gcc.dg/20030909-1.c: Don't handle xscale*-*-* and
+ strongarm*-*-*.
+ * gcc.dg/20031108-1.c: Don't handle xscale*-*-* and
+ strongarm*-*-*.
+ * gcc.dg/20040813-1.c: Don't handle *-*-sysv5*.
+ * gcc.dg/arm-asm.c: Don't handle strongarm*-*-* and xscale*-*-*.
+ * gcc.dg/arm-scd42-1.c: Use target arm*-*-*.
+ * gcc.dg/arm-scd42-3.c: Use target arm*-*-*.
+ * gcc.dg/cpp/assert4.c: Don't handle BeOS.
+ * gcc.dg/debug/pr35154.c: Don't handle *-*-sysv5*.
+ * gcc.dg/intmax_t-1.c: Don't handle *-*-solaris2.5.1 and
+ xscale*-*-elf*.
+ * gcc.dg/pragma-align.c: Don't handle i?86-*-sco3.2v5*.
+ * gcc.dg/pthread-init-2.c: Don't handle *-*-solaris2.5.1.
+ * gcc.misc-tests/arm-isr.exp: Use target arm*-*-*.
+ * gcc.target/powerpc/ppc-sdata-1.c: Don't handle powerpc-*-sysv*.
+ * gcc.target/powerpc/ppc-sdata-2.c: Don't handle powerpc-*-sysv*.
+ * gcc.target/powerpc/ppc-stackalign-1.c: Don't handle
+ powerpc-*-sysv*.
+ * gfortran.dg/debug/pr35154-stabs.f: Don't handle *-*-sysv5*.
+ * lib/target-supports.exp: Don't handle strongarm*-*-elf,
+ xscale*-*-elf and *-*-windiss.
+ * obj-c++.dg/dwarf-2.mm: Don't handle *-*-solaris2.[56]*.
+ * objc.dg/dwarf-1.m: Don't handle *-*-solaris2.[56]*.
+ * objc.dg/dwarf-2.m: Don't handle *-*-solaris2.[56]*.
+ * gcc.dg/mt-loopi1.c: Remove.
+
2008-06-07 Samuel Tardieu <sam@rfc1149.net>
* gnat.dg/specs/oversize.ads: New.
// Check that __cxa_vec_[c]ctor returns a pointer to the array
-// { dg-do run { target arm*-*-* xscale*-*-* } }
+// { dg-do run { target arm*-*-* } }
#include <cxxabi.h>
/* { dg-do run } */
/* { dg-options "-gdwarf-2" } */
-/* { dg-skip-if "No Dwarf" { { *-*-aix* hppa*-*-hpux* *-*-solaris2.[56]* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
+/* { dg-skip-if "No Dwarf" { { *-*-aix* hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
/* This was a bug on x86-darwin, where the register numbering for SP
and BP was swapped (it's easy to do because on that port it's
/* { dg-do compile } */
/* { dg-options "-Wmissing-format-attribute" } */
/* VxWorks does not provide vscanf, either in kernel or RTP mode. */
-/* { dg-error "not declared" "" { target *-*-solaris2.5.1 *-*-solaris2.[5-8] *-*-vxworks* } 25 } */
+/* { dg-error "not declared" "" { target *-*-solaris2.[7-8] *-*-vxworks* } 25 } */
#include <stdio.h>
#include <stdarg.h>
{
va_list ap;
va_start (ap, fmt);
- vscanf (fmt, ap); /* { dg-warning "candidate" "scanf attribute warning" { xfail *-*-solaris2.5.1 *-*-solaris2.[5-8] *-*-vxworks* } } */
+ vscanf (fmt, ap); /* { dg-warning "candidate" "scanf attribute warning" { xfail *-*-solaris2.[7-8] *-*-vxworks* } } */
va_end (ap);
}
/* { dg-do assemble } */
/* For MIPS at least, pic is needed to trigger the problem. */
/* { dg-options "-w -Wuninitialized -Werror -fpic" } */
-/* { dg-options "-w -Wuninitialized -Werror" { target { { rs6000-*-aix* powerpc*-*-aix* arm*-*-* xscale*-*-* strongarm*-*-* fr30-*-* sh-*-hms sh-*-coff h8300*-*-* cris-*-elf* cris-*-aout* mmix-*-* } || { ! fpic } } } } */
+/* { dg-options "-w -Wuninitialized -Werror" { target { { rs6000-*-aix* powerpc*-*-aix* arm*-*-* fr30-*-* sh-*-hms sh-*-coff h8300*-*-* cris-*-elf* mmix-*-* } || { ! fpic } } } } */
int foo (int a, int b)
{
# This doesn't always work for Thumb.
-if { [istarget arm*-*-*] || [istarget xscale*-*-*] \
- || [istarget strongarm*-*-*] } {
+if { [istarget arm*-*-*] } {
set torture_eval_before_execute {
global compiler_conditional_xfail_data
set compiler_conditional_xfail_data {
"Thumb sets the last bit of function relocations" \
- { "arm*-*-*" "xscale*-*-*" "strongarm*-*-*" } \
+ { "arm*-*-*" } \
{ { "-mthumb" "-O0" } } \
{ "" }
}
/* Verify that ands are combined. */
-/* { dg-do compile { target arm*-*-* strongarm*-*-* xscale*-*-* } } */
+/* { dg-do compile { target arm*-*-* } } */
/* { dg-options "-O" } */
/* { dg-final { scan-assembler-not "#255.*#255" } } */
int f(int a, int b) { return ((a & 0xff) + (b & 0xff)) & 0xff; }
/* PR optimization/10467 */
-/* { dg-do compile { target arm*-*-* xscale*-*-* strongarm*-*-* } } */
+/* { dg-do compile { target arm*-*-* } } */
/* { dg-options "-O2 -mthumb" } */
typedef enum {Ident_1} Enumeration;
/* Contributed by Devang Patel <dpatel@apple.com> */
/* { dg-do compile } */
-/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-sysv5* *-*-vxworks* } { "*" } { "" } } */
+/* { dg-skip-if "No stabs" { mmix-*-* *-*-aix* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } */
/* { dg-options "-gstabs" } */
int
/* ARM and Thumb asm statements should be able to access the constant
pool. */
-/* { dg-do compile { target arm*-*-* strongarm*-*-* xscale*-*-* } } */
+/* { dg-do compile { target arm*-*-* } } */
extern unsigned x[];
unsigned *trapTable()
{
/* Verify that mov is preferred on XScale for loading a 1 byte constant. */
-/* { dg-do compile { target xscale-*-* } } */
+/* { dg-do compile { target arm*-*-* } } */
/* { dg-options "-mcpu=xscale -O" } */
unsigned load1(void) __attribute__ ((naked));
/* Verify that ldr is preferred on XScale for loading a 3 or 4 byte constant. */
-/* { dg-do compile { target xscale-*-* } } */
+/* { dg-do compile { target arm*-*-* } } */
/* { dg-options "-mcpu=xscale -O" } */
unsigned load4(void) __attribute__ ((naked));
# error
#endif
-#if defined __BEOS__
-# if !#system(beos)
-# error
-# endif
-#elif #system(beos)
-# error
-#endif
-
#if defined __netware__
# if !#system(netware)
# error
optb.f2 = 'D';
i_outer = 'e';
/* { dg-do compile } */
-/* { dg-skip-if "No stabs" { mmix-*-* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-sysv5* *-*-vxworks* } { "*" } { "" } } */
+/* { dg-skip-if "No stabs" { mmix-*-* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } } */
/* { dg-skip-if "stabs only" { *-*-* } { "*" } { "-gstabs" } } */
return 0;
}
/* { dg-do compile } */
/* { dg-options "-Wall" } */
-/* { dg-error "" "" { target { { *-*-solaris2.5.1 *arm*-*-*elf* xscale*-*-elf* xtensa-*-elf* } || vxworks_kernel } } 0 } */
+/* { dg-error "" "" { target { { *arm*-*-*elf* xtensa-*-elf* } || vxworks_kernel } } 0 } */
/* Compile with -Wall to get a warning if built-in and system intmax_t don't
match. */
+++ /dev/null
-/* { dg-do compile { target mt-*-* } } */
-/* { dg-options "-O2 -march=ms2" } */
-/* { dg-final { scan-assembler "\tloopi " } } */
-
-/* Make sure we generate loopi */
-
-void Const (volatile int *ptr)
-{
- int i;
-
- for (i = 0; i != 10; i++)
- *ptr;
-}
/* Prove that HANDLE_SYSTEMV_PRAGMA alignment handling works somewhat. */
-/* { dg-do run { target i?86-*-linux* x86_64-*-linux* i?86-*-*bsd* i?86-*-sco3.2v5* *-*-solaris2.* } } */
+/* { dg-do run { target i?86-*-linux* x86_64-*-linux* i?86-*-*bsd* *-*-solaris2.* } } */
extern void abort (void);
/* { dg-do compile } */
/* { dg-require-effective-target pthread_h } */
/* { dg-options "-Wextra -Wall -ansi" } */
-/* { dg-options "-Wextra -Wall -ansi -D_POSIX_C_SOURCE=199506L" { target { *-*-hpux* *-*-solaris2.5.1 } } } */
+/* { dg-options "-Wextra -Wall -ansi -D_POSIX_C_SOURCE=199506L" { target { *-*-hpux* } } } */
#include "pthread-init-common.h"
load_lib gcc-dg.exp
dg-init
-if {[istarget "*arm-*-*"] || [istarget "xscale-*-*"]} {
+if { [istarget "arm*-*-*"] } {
dg-runtest "$srcdir/$subdir/arm-isr.c" "" ""
}
dg-finish
-/* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-sysv* powerpc-*-eabi* } } } } */
+/* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-eabi* } } } } */
/* { dg-options "-O2 -fno-common -G 8 -meabi -msdata=eabi" } */
/* { dg-final { scan-assembler "\\.section\[ \t\]\\.sdata," } } */
/* { dg-final { scan-assembler "\\.section\[ \t\]\\.sdata2," } } */
-/* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-sysv* powerpc-*-eabi* } } } } */
+/* { dg-do compile { target { { powerpc*-*-linux* && ilp32 } || { powerpc-*-eabi* } } } } */
/* { dg-options "-O2 -fno-common -G 8 -msdata=sysv" } */
/* { dg-final { scan-assembler "\\.section\[ \t\]\\.sdata," } } */
/* { dg-final { scan-assembler-not "\\.section\[ \t\]\\.sdata2," } } */
-/* { dg-do run { target powerpc*-*-linux* powerpc-*-sysv* powerpc*-*-eabi* } } */
+/* { dg-do run { target powerpc*-*-linux* powerpc*-*-eabi* } } */
/* { dg-options {} } */
/* Test stack pointer alignment against variable alloca. */
C Test program for common block debugging. G. Helffrich 11 July 2004.
C { dg-do compile }
-C { dg-skip-if "No stabs" { mmix-*-* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-sysv5* *-*-vxworks* } { "*" } { "" } }
+C { dg-skip-if "No stabs" { mmix-*-* *-*-netware* alpha*-*-* hppa*64*-*-* ia64-*-* *-*-vxworks* } { "*" } { "" } }
C { dg-skip-if "No stabs" {*-*-* } { "*" } { "-gstabs" } }
common i,j
common /label/l,m
|| [istarget avr-*-*]
|| [istarget bfin-*-*]
|| [istarget powerpc-*-eabi*]
- || [istarget strongarm*-*-elf]
- || [istarget xscale*-*-elf]
|| [istarget cris-*-*]
|| [istarget crisv32-*-*]
|| [istarget fido-*-elf]
|| [istarget mips*-*-elf*]
|| [istarget xstormy16-*]
|| [istarget xtensa-*-elf]
- || [istarget *-*-vxworks*]
- || [istarget *-*-windiss] } {
+ || [istarget *-*-vxworks*] } {
set profiling_available_saved 0
} else {
set profiling_available_saved 1
/* { dg-options "-gdwarf-2 -dA" } */
-/* { dg-skip-if "" { { hppa*-*-hpux* *-*-solaris2.[56]* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
+/* { dg-skip-if "" { { hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
/* { dg-final { scan-assembler "0x11\[^0-9a-f\].*DW_AT_language" } } */
int x;
/* { dg-options "-gdwarf-2 -dA" } */
/* { dg-final { scan-assembler "\"id.0\".*DW_AT_name" } } */
-/* { dg-skip-if "No Dwarf" { { *-*-aix* hppa*-*-hpux* *-*-solaris2.[56]* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
+/* { dg-skip-if "No Dwarf" { { *-*-aix* hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
@interface foo
id x;
@end
/* { dg-options "-gdwarf-2 -dA" } */
/* { dg-final { scan-assembler "0x10\[^0-9a-f\].*DW_AT_language" } } */
-/* { dg-skip-if "No Dwarf" { { *-*-aix* hppa*-*-hpux* *-*-solaris2.[56]* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
+/* { dg-skip-if "No Dwarf" { { *-*-aix* hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
int x;
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.ac (xscale*-wrs-vx*, xscale*-wrs-coff): Remove.
+ * configure: Regenerate.
+
2008-05-20 Arnaud Charlet <charlet@adacore.com>
* Makefile.in (GNATTOOLS2_FILES): Replaced by common-tools target
# Test for GNAT.
# We require the gnatbind program, and a compiler driver that
-# understands Ada. We use the user's CC setting, already found.
+# understands Ada. We use the user's CC setting, already found,
+# and possibly add $1 to the command-line parameters.
#
# Sets the shell variable have_gnat to yes or no as appropriate, and
# substitutes GNATBIND and GNATMAKE.
+
+
+
+
+
+
case ${build_alias} in
"") build_noncanonical=${build} ;;
| powerpc*-wrs-vxworks \
| sparc*-wrs-vx* \
| *86-wrs-vxworks \
- | xscale*-wrs-vx* \
- | xscale*-wrs-coff \
| mips*-wrs-vx*)
TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-vxworks.adb"
;;
| powerpc*-wrs-vxworks \
| sparc*-wrs-vx* \
| *86-wrs-vxworks \
- | xscale*-wrs-vx* \
- | xscale*-wrs-coff \
| mips*-wrs-vx*)
TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-vxworks.adb"
;;
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.ac (parisc*64*-*-*): Remove.
+ * configure: Regenerate.
+
2008-05-30 Tom Tromey <tromey@redhat.com>
PR preprocessor/36320:
arm*-*-symbianelf* | \
x86_64-*-* | \
ia64-*-* | \
- hppa*64*-*-* | parisc*64*-*-* | \
+ hppa*64*-*-* | \
i[34567]86-*-darwin* | \
i[34567]86-*-solaris2.1[0-9]* | \
mips*-*-* | \
arm*-*-symbianelf* | \
x86_64-*-* | \
ia64-*-* | \
- hppa*64*-*-* | parisc*64*-*-* | \
+ hppa*64*-*-* | \
i[34567]86-*-darwin* | \
i[34567]86-*-solaris2.1[0-9]* | \
mips*-*-* | \
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.ac (parisc*-*-linux*, powerpc-*-sysv*,
+ powerpc-*-beos*): Remove.
+ * configure: Regenerate.
+
2008-05-09 Julian Brown <julian@codesourcery.com>
* Makefile.am (LTLDFLAGS): New.
TARGET=FRV; TARGETDIR=frv
;;
- hppa*-*-linux* | parisc*-*-linux*)
+ hppa*-*-linux*)
TARGET=PA_LINUX; TARGETDIR=pa
;;
hppa*64-*-hpux*)
TARGET=MIPS; TARGETDIR=mips
;;
- powerpc*-*-linux* | powerpc-*-sysv*)
- TARGET=POWERPC; TARGETDIR=powerpc
- ;;
- powerpc-*-beos*)
+ powerpc*-*-linux*)
TARGET=POWERPC; TARGETDIR=powerpc
;;
powerpc-*-darwin*)
TARGET=FRV; TARGETDIR=frv
;;
- hppa*-*-linux* | parisc*-*-linux*)
+ hppa*-*-linux*)
TARGET=PA_LINUX; TARGETDIR=pa
;;
hppa*64-*-hpux*)
TARGET=MIPS; TARGETDIR=mips
;;
- powerpc*-*-linux* | powerpc-*-sysv*)
- TARGET=POWERPC; TARGETDIR=powerpc
- ;;
- powerpc-*-beos*)
+ powerpc*-*-linux*)
TARGET=POWERPC; TARGETDIR=powerpc
;;
powerpc-*-darwin*)
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * config.host (strongarm*-*-*, ep9312*-*-*, xscale-*-*,
+ parisc*-*-*, m680[012]0-*-*, *-*-linux*libc1*, *-*-linux*aout*,
+ alpha*-*-unicosmk*, strongarm*-*-freebsd*, ep9312-*-elf,
+ arm*-*-kaos*, cris-*-aout, parisc*64*-*-linux*, parisc*-*-linux*,
+ hppa1.1-*-pro*, hppa1.1-*-osf*, hppa1.1-*-bsd*,
+ i[34567]86-sequent-ptx4*, i[34567]86-sequent-sysv4*,
+ i[34567]86-*-beoself*, i[34567]86-*-beos*, i[34567]86-*-sco3.2v5*,
+ i[34567]86-*-sysv5*, i[34567]86-*-sysv4*, i[34567]86-*-uwin*,
+ i[34567]86-*-kaos*, m68020-*-elf*, m68010-*-netbsdelf*,
+ mips-wrs-windiss, mt-*-elf, powerpc-*-beos*, powerpc-*-chorusos*,
+ powerpc-wrs-windiss*, powerpcle-*-sysv*, powerpc-*-kaos*,
+ powerpcle-*-kaos*, sh*-*-kaos*, sparc-*-sysv4*, strongarm-*-elf*,
+ strongarm-*-pe, strongarm-*-kaos*, vax-*-bsd*, vax-*-sysv*,
+ vax-*-ultrix*, xscale-*-elf, xscale-*-coff): Remove.
+
2008-05-25 Arthur Loiret <arthur.loiret@u-psud.fr>
* config.host (sh2[lbe]*-*-linux*): Allow target.
am33_2.0-*-linux*)
cpu_type=mn10300
;;
-strongarm*-*-*)
- cpu_type=arm
- ;;
arm*-*-*)
cpu_type=arm
;;
bfin*-*)
cpu_type=bfin
;;
-ep9312*-*-*)
- cpu_type=arm
- ;;
fido-*-*)
cpu_type=m68k
;;
frv*) cpu_type=frv
;;
-xscale-*-*)
- cpu_type=arm
- ;;
i[34567]86-*-*)
cpu_type=i386
;;
;;
ia64-*-*)
;;
-hppa*-*-* | parisc*-*-*)
+hppa*-*-*)
cpu_type=pa
;;
m32r*-*-*)
cpu_type=m32r
;;
-m680[012]0-*-*)
- cpu_type=m68k
- ;;
m68k-*-*)
;;
mips*-*-*)
# machine-specific sections may refine and add to this
# configuration.
;;
-*-*-linux*libc1* | *-*-linux*aout*)
- # Avoid the generic linux case.
- ;;
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
# Must come before *-*-gnu* (because of *-*-linux-gnu* systems).
extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
then tmake_file=${cpu_type}/t-$rest
fi
;;
-alpha*-*-unicosmk*)
- ;;
alpha*-*-linux*)
tmake_file="${tmake_file} alpha/t-crtfm"
extra_parts="$extra_parts crtfastmath.o"
;;
arm-wrs-vxworks)
;;
-arm*-*-freebsd*|strongarm*-*-freebsd*)
+arm*-*-freebsd*)
;;
arm*-*-netbsdelf*)
;;
;;
arm*-*-rtems*)
;;
-arm*-*-elf | ep9312-*-elf)
+arm*-*-elf)
;;
arm*-wince-pe*)
;;
arm-*-pe*)
;;
-arm*-*-kaos*)
- ;;
avr-*-rtems*)
;;
avr-*-*)
;;
bfin*-*)
;;
-cris-*-aout)
- ;;
crisv32-*-elf | crisv32-*-none | cris-*-elf | cris-*-none)
extra_parts="crtbegin.o crtend.o"
;;
;;
h8300-*-*)
;;
-hppa*64*-*-linux* | parisc*64*-*-linux*)
- ;;
-hppa*-*-linux* | parisc*-*-linux*)
- ;;
-hppa1.1-*-pro*)
- ;;
-hppa1.1-*-osf*)
+hppa*64*-*-linux*)
;;
-hppa1.1-*-bsd*)
+hppa*-*-linux*)
;;
hppa[12]*-*-hpux10*)
;;
;;
x86_64-*-elf*)
;;
-i[34567]86-sequent-ptx4* | i[34567]86-sequent-sysv4*)
- ;;
i[34567]86-*-aout*)
;;
-i[34567]86-*-beoself* | i[34567]86-*-beos*)
- ;;
i[34567]86-*-freebsd*)
;;
x86_64-*-freebsd*)
;;
i[34567]86-*-rtems*)
;;
-i[34567]86-*-sco3.2v5*) # 80386 running SCO Open Server 5
- ;;
i[34567]86-*-solaris2*)
;;
-i[34567]86-*-sysv5*) # Intel x86 on System V Release 5
- ;;
-i[34567]86-*-sysv4*) # Intel 80386's running system V.4
- ;;
i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
;;
i[34567]86-*-pe)
;;
x86_64-*-mingw*)
;;
-i[34567]86-*-uwin*)
- ;;
i[34567]86-*-interix3*)
;;
-i[34567]86-*-kaos*)
- ;;
ia64*-*-elf*)
extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
tmake_file="ia64/t-ia64"
;;
m68k-*-coff*)
;;
-m68020-*-elf* | m68k-*-elf*)
+m68k-*-elf*)
;;
-m68010-*-netbsdelf* | m68k*-*-netbsdelf*)
+m68k*-*-netbsdelf*)
;;
m68k*-*-openbsd*)
;;
;;
mips-wrs-vxworks)
;;
-mips-wrs-windiss) # Instruction-level simulator for VxWorks.
- ;;
mipstx39-*-elf* | mipstx39el-*-elf*)
;;
mmix-knuth-mmixware)
;;
mn10300-*-*)
;;
-mt-*-elf)
- ;;
pdp11-*-bsd)
;;
pdp11-*-*)
powerpc64-*-gnu*)
tmake_file="${tmake_file} rs6000/t-ldbl128"
;;
-powerpc-*-beos*)
- ;;
powerpc-*-darwin*)
;;
powerpc64-*-darwin*)
;;
powerpc-*-netbsd*)
;;
-powerpc-*-chorusos*)
- ;;
powerpc-*-eabispe*)
;;
powerpc-*-eabisimaltivec*)
;;
powerpc-wrs-vxworks|powerpc-wrs-vxworksae)
;;
-powerpc-wrs-windiss*) # Instruction-level simulator for VxWorks.
- ;;
powerpc-*-lynxos*)
;;
-powerpcle-*-sysv*)
- ;;
powerpcle-*-elf*)
;;
powerpcle-*-eabisim*)
;;
powerpcle-*-eabi*)
;;
-powerpc-*-kaos*)
- ;;
-powerpcle-*-kaos*)
- ;;
rs6000-ibm-aix4.[12]* | powerpc-ibm-aix4.[12]*)
;;
rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
;;
score-*-elf)
;;
-sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
+sh-*-elf* | sh[12346l]*-*-elf* | \
sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
sh-*-linux* | sh[2346lbe]*-*-linux* | \
sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
;;
sparc-*-solaris2*)
;;
-sparc-*-sysv4*)
- ;;
sparc64-*-elf*)
;;
sparc-wrs-vxworks)
;;
spu-*-elf*)
;;
-strongarm-*-elf*)
- ;;
-strongarm-*-pe)
- ;;
-strongarm-*-kaos*)
- ;;
v850e1-*-*)
;;
v850e-*-*)
;;
v850-*-*)
;;
-vax-*-bsd*) # VAXen running BSD
- ;;
-vax-*-sysv*) # VAXen running system V
- ;;
vax-*-netbsdelf*)
;;
vax-*-netbsd*)
;;
vax-*-openbsd*)
;;
-vax-*-ultrix*) # VAXen running ultrix
- ;;
-xscale-*-elf)
- ;;
-xscale-*-coff)
- ;;
xstormy16-*-elf)
;;
xtensa-*-elf*)
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.host (strongarm*-elf, xscale*-elf): Remove.
+
2008-06-02 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* Makefile.am (mostlyclean-local): Use libtool --mode=clean.
# This case statement supports per-CPU defaults.
case "${host}" in
- arm*-elf | strongarm*-elf | xscale*-elf)
+ arm*-elf)
with_libffi_default=no
PROCESS=Ecos
FILE=Posix
+2008-06-07 Joseph Myers <joseph@codesourcery.com>
+
+ * configure.host (xscale, ep9312, m680[246]0, solaris2.5,
+ solaris2.5.[0-9], solaris2.6, windiss*): Remove.
+ * crossconfig.m4 (*-solaris2.5, *-solaris2.6, *-windiss*): Remove.
+ * configure: Regenerate.
+ * config/os/solaris/solaris2.5: Remove directory.
+ * config/os/solaris/solaris2.6: Remove directory.
+ * config/os/windiss: Remove directory.
+
2008-06-06 Benjamin Kosnik <bkoz@redhat.com>
* doc/xml/manual/using.xml: Outline exception topics.
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997-1999, 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// Information as gleaned from /usr/include/ctype.h, for solaris2.5.1
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- /// @brief Base class for ctype.
- struct ctype_base
- {
- // Non-standard typedefs.
- typedef const int* __to_type;
-
- // NB: Offsets into ctype<char>::_M_table force a particular size
- // on the mask type. Because of this, we don't use an enum.
- typedef unsigned char mask;
- static const mask upper = 01;
- static const mask lower = 02;
- static const mask alpha = 01 | 02;
- static const mask digit = 04;
- static const mask xdigit = 0200;
- static const mask space = 010;
- static const mask print = 020 | 01 | 02 | 04 | 0100;
- static const mask graph = 020 | 01 | 02 | 04;
- static const mask cntrl = 040;
- static const mask punct = 020;
- static const mask alnum = 01 | 02 | 04;
- };
-
-_GLIBCXX_END_NAMESPACE
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997-1999, 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/** @file ctype_inline.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- bool
- ctype<char>::
- is(mask __m, char __c) const
- { return (_M_table + 1)[static_cast<unsigned char>(__c)] & __m; }
-
- const char*
- ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const
- {
- while (__low < __high)
- *__vec++ = (_M_table + 1)[static_cast<unsigned char>(*__low++)];
- return __high;
- }
-
- const char*
- ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const
- {
- while (__low < __high
- && !((_M_table + 1)[static_cast<unsigned char>(*__low)] & __m))
- ++__low;
- return __low;
- }
-
- const char*
- ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const
- {
- while (__low < __high
- && ((_M_table + 1)[static_cast<unsigned char>(*__low)] & __m) != 0)
- ++__low;
- return __low;
- }
-
-_GLIBCXX_END_NAMESPACE
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/** @file ctype_noninline.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// Information as gleaned from /usr/include/ctype.h
-
- const ctype_base::mask*
- ctype<char>::classic_table() throw()
- { return __ctype; }
-
- ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
- size_t __refs)
- : facet(__refs), _M_del(__table != 0 && __del),
- _M_toupper(NULL), _M_tolower(NULL),
- _M_table(__table ? __table : classic_table())
- {
- memset(_M_widen, 0, sizeof(_M_widen));
- _M_widen_ok = 0;
- memset(_M_narrow, 0, sizeof(_M_narrow));
- _M_narrow_ok = 0;
- }
-
- ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
- : facet(__refs), _M_del(__table != 0 && __del),
- _M_toupper(NULL), _M_tolower(NULL),
- _M_table(__table ? __table : classic_table())
- {
- memset(_M_widen, 0, sizeof(_M_widen));
- _M_widen_ok = 0;
- memset(_M_narrow, 0, sizeof(_M_narrow));
- _M_narrow_ok = 0;
- }
-
- char
- ctype<char>::do_toupper(char __c) const
- { return ((_M_table + 258)[static_cast<unsigned char>(__c)]); }
-
- const char*
- ctype<char>::do_toupper(char* __low, const char* __high) const
- {
- while (__low < __high)
- {
- *__low = this->do_toupper(*__low);
- ++__low;
- }
- return __high;
- }
-
- char
- ctype<char>::do_tolower(char __c) const
- { return ((_M_table + 258)[static_cast<unsigned char>(__c)]); }
-
- const char*
- ctype<char>::do_tolower(char* __low, const char* __high) const
- {
- while (__low < __high)
- {
- *__low = this->do_tolower(*__low);
- ++__low;
- }
- return __high;
- }
+++ /dev/null
-// Specific definitions for Solaris 2.5 -*- C++ -*-
-
-// Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-#ifndef _GLIBCXX_OS_DEFINES
-#define _GLIBCXX_OS_DEFINES 1
-
-// System-specific #define, typedefs, corrections, etc, go here. This
-// file will come before all others.
-
-#endif
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// Information as gleaned from /usr/include/ctype.h. Looks like this
-// only works with solaris2.6.
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- /// @brief Base class for ctype.
- struct ctype_base
- {
- // Non-standard typedefs.
- typedef long* __to_type;
-
- // NB: Offsets into ctype<char>::_M_table force a particular size
- // on the mask type. Because of this, we don't use an enum.
- typedef unsigned int mask;
- static const mask upper = _ISUPPER;
- static const mask lower = _ISLOWER;
- static const mask alpha = _ISALPHA;
- static const mask digit = _ISDIGIT;
- static const mask xdigit = _ISXDIGIT;
- static const mask space = _ISSPACE;
- static const mask print = _ISPRINT;
- static const mask graph = _ISALPHA | _ISDIGIT | _ISPUNCT;
- static const mask cntrl = _ISCNTRL;
- static const mask punct = _ISPUNCT;
- static const mask alnum = _ISALPHA | _ISDIGIT;
- };
-
-_GLIBCXX_END_NAMESPACE
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/** @file ctype_inline.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- bool
- ctype<char>::
- is(mask __m, char __c) const
- { return _M_table[static_cast<unsigned char>(__c)] & __m; }
-
- const char*
- ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const
- {
- const int __bitmasksize = sizeof(mask) * 8;
- for (;__low < __high; ++__vec, ++__low)
- {
- mask __m = _M_table[static_cast<unsigned char>(*__low)];
- int __i = 0; // Lowest bitmask value from ctype_base.
- while (__i < __bitmasksize && !(__m & static_cast<mask>(1 << __i)))
- ++__i;
- *__vec = static_cast<mask>(1 << __i);
- }
- return __high;
- }
-
- const char*
- ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const
- {
- while (__low < __high
- && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
- ++__low;
- return __low;
- }
-
- const char*
- ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const
- {
- while (__low < __high
- && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
- ++__low;
- return __low;
- }
-
-_GLIBCXX_END_NAMESPACE
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/** @file ctype_noninline.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// Information as gleaned from /usr/include/ctype.h
-
- const ctype_base::mask*
- ctype<char>::classic_table() throw()
- { return __ctype_mask; }
-
- ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
- size_t __refs)
- : facet(__refs), _M_del(__table != 0 && __del),
- _M_toupper(__trans_upper), _M_tolower(__trans_lower),
- _M_table(__table ? __table : classic_table())
- {
- memset(_M_widen, 0, sizeof(_M_widen));
- _M_widen_ok = 0;
- memset(_M_narrow, 0, sizeof(_M_narrow));
- _M_narrow_ok = 0;
- }
-
- ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
- : facet(__refs), _M_del(__table != 0 && __del),
- _M_toupper(__trans_upper), _M_tolower(__trans_lower),
- _M_table(__table ? __table : classic_table())
- {
- memset(_M_widen, 0, sizeof(_M_widen));
- _M_widen_ok = 0;
- memset(_M_narrow, 0, sizeof(_M_narrow));
- _M_narrow_ok = 0;
- }
-
- char
- ctype<char>::do_toupper(char __c) const
- { return _M_toupper[static_cast<unsigned char>(__c)]; }
-
- const char*
- ctype<char>::do_toupper(char* __low, const char* __high) const
- {
- while (__low < __high)
- {
- *__low = _M_toupper[static_cast<unsigned char>(*__low)];
- ++__low;
- }
- return __high;
- }
-
- char
- ctype<char>::do_tolower(char __c) const
- { return _M_tolower[static_cast<unsigned char>(__c)]; }
-
- const char*
- ctype<char>::do_tolower(char* __low, const char* __high) const
- {
- while (__low < __high)
- {
- *__low = _M_tolower[static_cast<unsigned char>(*__low)];
- ++__low;
- }
- return __high;
- }
+++ /dev/null
-// Specific definitions for Solaris 2.6 -*- C++ -*-
-
-// Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-#ifndef _GLIBCXX_OS_DEFINES
-#define _GLIBCXX_OS_DEFINES 1
-
-// System-specific #define, typedefs, corrections, etc, go here. This
-// file will come before all others.
-
-#endif
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// Default information, may not be appropriate for specific host.
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- /// @brief Base class for ctype.
- struct ctype_base
- {
- // Non-standard typedefs.
- typedef const int* __to_type;
-
- // NB: Offsets into ctype<char>::_M_table force a particular size
- // on the mask type. Because of this, we don't use an enum.
- typedef unsigned int mask;
- static const mask upper = _U;
- static const mask lower = _L;
- static const mask alpha = _U | _L;
- static const mask digit = _N;
- static const mask xdigit = _X;
- static const mask space = _S;
- static const mask print = _U | _L | _N | _P | _B;
- static const mask graph = _U | _L | _N | _P;
- static const mask cntrl = _C;
- static const mask punct = _P;
- static const mask alnum = _U | _L | _N;
- };
-
-_GLIBCXX_END_NAMESPACE
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/** @file ctype_inline.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-// functions go in ctype.cc
-
-// The following definitions are portable, but insanely slow. If one
-// cares at all about performance, then specialized ctype
-// functionality should be added for the native os in question: see
-// the config/os/bits/ctype_*.h files.
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- bool
- ctype<char>::
- is(mask __m, char __c) const
- {
- bool __ret;
- switch (__m)
- {
- case space:
- __ret = isspace(__c);
- break;
- case print:
- __ret = isprint(__c);
- break;
- case cntrl:
- __ret = iscntrl(__c);
- break;
- case upper:
- __ret = isupper(__c);
- break;
- case lower:
- __ret = islower(__c);
- break;
- case alpha:
- __ret = isalpha(__c);
- break;
- case digit:
- __ret = isdigit(__c);
- break;
- case punct:
- __ret = ispunct(__c);
- break;
- case xdigit:
- __ret = isxdigit(__c);
- break;
- case alnum:
- __ret = isalnum(__c);
- break;
- case graph:
- __ret = isgraph(__c);
- break;
- default:
- __ret = false;
- break;
- }
- return __ret;
- }
-
- const char*
- ctype<char>::
- is(const char* __low, const char* __high, mask* __vec) const
- {
- const int __bitmasksize = 11; // Highest bitmask in ctype_base == 10
- for (;__low < __high; ++__vec, ++__low)
- {
- mask __m = 0;
- int __i = 0; // Lowest bitmask in ctype_base == 0
- for (;__i < __bitmasksize; ++__i)
- {
- mask __bit = static_cast<mask>(1 << __i);
- if (this->is(__bit, *__low))
- __m |= __bit;
- }
- *__vec = __m;
- }
- return __high;
- }
-
- const char*
- ctype<char>::
- scan_is(mask __m, const char* __low, const char* __high) const
- {
- while (__low < __high && !this->is(__m, *__low))
- ++__low;
- return __low;
- }
-
- const char*
- ctype<char>::
- scan_not(mask __m, const char* __low, const char* __high) const
- {
- while (__low < __high && this->is(__m, *__low) != 0)
- ++__low;
- return __low;
- }
-
-_GLIBCXX_END_NAMESPACE
+++ /dev/null
-// Locale support -*- C++ -*-
-
-// Copyright (C) 2002
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/** @file ctype_noninline.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-//
-// ISO C++ 14882: 22.1 Locales
-//
-
-// Information as gleaned from /usr/include/ctype.h
-
- const ctype_base::mask*
- ctype<char>::classic_table() throw()
- { return 0; }
-
- ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
- size_t __refs)
- : facet(__refs), _M_del(__table != 0 && __del),
- _M_toupper(NULL), _M_tolower(NULL),
- _M_table(__table == 0 ? classic_table() : __table)
- {
- memset(_M_widen, 0, sizeof(_M_widen));
- _M_widen_ok = 0;
- memset(_M_narrow, 0, sizeof(_M_narrow));
- _M_narrow_ok = 0;
- }
-
- ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
- : facet(__refs), _M_del(__table != 0 && __del),
- _M_toupper(NULL), _M_tolower(NULL),
- _M_table(__table == 0 ? classic_table() : __table)
- {
- memset(_M_widen, 0, sizeof(_M_widen));
- _M_widen_ok = 0;
- memset(_M_narrow, 0, sizeof(_M_narrow));
- _M_narrow_ok = 0;
- }
-
- char
- ctype<char>::do_toupper(char __c) const
- { return ::toupper((int) __c); }
-
- const char*
- ctype<char>::do_toupper(char* __low, const char* __high) const
- {
- while (__low < __high)
- {
- *__low = ::toupper((int) *__low);
- ++__low;
- }
- return __high;
- }
-
- char
- ctype<char>::do_tolower(char __c) const
- { return ::tolower((int) __c); }
-
- const char*
- ctype<char>::do_tolower(char* __low, const char* __high) const
- {
- while (__low < __high)
- {
- *__low = ::tolower((int) *__low);
- ++__low;
- }
- return __high;
- }
+++ /dev/null
-// Specific definitions for generic platforms -*- C++ -*-
-
-// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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.
-
-// This library 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 library; see the file COPYING. If not, write to the Free
-// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-// USA.
-
-// As a special exception, you may use this file as part of a free software
-// library without restriction. Specifically, if other files instantiate
-// templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this
-// file does not by itself cause the resulting executable to be covered by
-// the GNU General Public License. This exception does not however
-// invalidate any other reasons why the executable file might be covered by
-// the GNU General Public License.
-
-/** @file os_defines.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _GLIBCXX_OS_DEFINES
-#define _GLIBCXX_OS_DEFINES 1
-
-// System-specific #define, typedefs, corrections, etc, go here. This
-// file will come before all others.
-#define __C9X__ 1 // for sinf etc
-
-#endif
;;
*-solaris*)
case "$target" in
- # *-solaris2.5)
- # os_include_dir="os/solaris/solaris2.5"
- # ;;
- # *-solaris2.6)
- # os_include_dir="os/solaris/solaris2.6"
- # ;;
*-solaris2.7 | *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
# If we're not using GNU ld, then there's no point in even trying these
cat >>confdefs.h <<\_ACEOF
#define HAVE_TANHF 1
-_ACEOF
-
- ;;
- *-windiss*)
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ACOSL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ASINL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2F 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATAN2L 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_ATANL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_CEILL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGN 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_COPYSIGNF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_COSHL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_EXPL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FABSL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FLOORL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FMODL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FREXPL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_LDEXPF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_LDEXPL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10F 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOG10L 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_LOGF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_MODFL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_POWL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_SINHL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_SQRTL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANL 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHF 1
-_ACEOF
-
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_TANHL 1
_ACEOF
;;
alpha*)
try_cpu=alpha
;;
- arm* | xscale | ep9312)
+ arm*)
try_cpu=arm
;;
crisv32)
mips*)
try_cpu=mips
;;
- m680[246]0)
- try_cpu=m68k
- ;;
powerpc* | rs6000)
try_cpu=powerpc
;;
echo "Please specify the full version of Solaris, ie. solaris2.9 " 1>&2
exit 1
;;
- solaris2.5 | solaris2.5.[0-9])
- os_include_dir="os/solaris/solaris2.5"
- ;;
- solaris2.6)
- os_include_dir="os/solaris/solaris2.6"
- ;;
solaris2.[789] | solaris2.1[0-9])
os_include_dir="os/solaris/solaris2.7"
;;
vxworks)
os_include_dir="os/vxworks"
;;
- windiss*)
- os_include_dir="os/windiss"
- ;;
*)
os_include_dir="os/generic"
;;
;;
*-solaris*)
case "$target" in
- # *-solaris2.5)
- # os_include_dir="os/solaris/solaris2.5"
- # ;;
- # *-solaris2.6)
- # os_include_dir="os/solaris/solaris2.6"
- # ;;
*-solaris2.7 | *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
GLIBCXX_CHECK_LINKER_FEATURES
AC_DEFINE(HAVE_GETPAGESIZE)
AC_DEFINE(HAVE_TANF)
AC_DEFINE(HAVE_TANHF)
;;
- *-windiss*)
- AC_DEFINE(HAVE_ACOSF)
- AC_DEFINE(HAVE_ACOSL)
- AC_DEFINE(HAVE_ASINF)
- AC_DEFINE(HAVE_ASINL)
- AC_DEFINE(HAVE_ATAN2F)
- AC_DEFINE(HAVE_ATAN2L)
- AC_DEFINE(HAVE_ATANF)
- AC_DEFINE(HAVE_ATANL)
- AC_DEFINE(HAVE_CEILF)
- AC_DEFINE(HAVE_CEILL)
- AC_DEFINE(HAVE_COPYSIGN)
- AC_DEFINE(HAVE_COPYSIGNF)
- AC_DEFINE(HAVE_COSF)
- AC_DEFINE(HAVE_COSL)
- AC_DEFINE(HAVE_COSHF)
- AC_DEFINE(HAVE_COSHL)
- AC_DEFINE(HAVE_EXPF)
- AC_DEFINE(HAVE_EXPL)
- AC_DEFINE(HAVE_FABSF)
- AC_DEFINE(HAVE_FABSL)
- AC_DEFINE(HAVE_FLOORF)
- AC_DEFINE(HAVE_FLOORL)
- AC_DEFINE(HAVE_FMODF)
- AC_DEFINE(HAVE_FMODL)
- AC_DEFINE(HAVE_FREXPF)
- AC_DEFINE(HAVE_FREXPL)
- AC_DEFINE(HAVE_LDEXPF)
- AC_DEFINE(HAVE_LDEXPL)
- AC_DEFINE(HAVE_LOG10F)
- AC_DEFINE(HAVE_LOG10L)
- AC_DEFINE(HAVE_LOGF)
- AC_DEFINE(HAVE_MODFF)
- AC_DEFINE(HAVE_MODFL)
- AC_DEFINE(HAVE_POWF)
- AC_DEFINE(HAVE_POWL)
- AC_DEFINE(HAVE_SINF)
- AC_DEFINE(HAVE_SINL)
- AC_DEFINE(HAVE_SINHF)
- AC_DEFINE(HAVE_SINHL)
- AC_DEFINE(HAVE_SQRTF)
- AC_DEFINE(HAVE_SQRTL)
- AC_DEFINE(HAVE_TANF)
- AC_DEFINE(HAVE_TANL)
- AC_DEFINE(HAVE_TANHF)
- AC_DEFINE(HAVE_TANHL)
- ;;
*)
AC_MSG_ERROR([No support for this host/target combination.])
;;