diff options
Diffstat (limited to 'lang/gcc34/files')
-rw-r--r-- | lang/gcc34/files/alpha-freebsd.h | 581 | ||||
-rw-r--r-- | lang/gcc34/files/patch-ad | 10 | ||||
-rw-r--r-- | lang/gcc34/files/patch-ak | 29 | ||||
-rw-r--r-- | lang/gcc34/files/patch-al | 35 | ||||
-rw-r--r-- | lang/gcc34/files/patch-fa | 100 |
5 files changed, 150 insertions, 605 deletions
diff --git a/lang/gcc34/files/alpha-freebsd.h b/lang/gcc34/files/alpha-freebsd.h index 6330e62d8fc9..a227b9444b9e 100644 --- a/lang/gcc34/files/alpha-freebsd.h +++ b/lang/gcc34/files/alpha-freebsd.h @@ -1,6 +1,6 @@ -/* Definitions of target machine for GNU compiler, - for Alpha FreeBSD systems. - Copyright (C) 1998 Free Software Foundation, Inc. +/* Definitions for DEC Alpha/AXP running FreeBSD using the ELF format + Copyright (C) 2000 Free Software Foundation, Inc. + Contributed by BSDi, written by David O'Brien <obrien@FreeBSD.org> This file is part of GNU CC. @@ -18,522 +18,115 @@ You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* This is used on Alpha platforms that use the ELF format. - This was taken from the NetBSD configuration, and modified - for FreeBSD/alpha by Hidetoshi Shimokawa <simokawa@FreeBSD.ORG> */ -/* $FreeBSD: /tmp/pcvs/ports/lang/gcc34/files/Attic/alpha-freebsd.h,v 1.6 2000-09-05 16:59:10 obrien Exp $ */ +#undef CPP_PREDEFINES +#define CPP_PREDEFINES \ + "-D__ELF__ -Dunix -D__FreeBSD__ -Asystem(unix) -Asystem(bsd) -Asystem(FreeBSD)" + +/* Provide a CPP_SPEC appropriate for FreeBSD/alpha. Besides the dealing with + the GCC option `-posix', and PIC issues as on all FreeBSD platforms, we must + deal with the Alpha's FP issues. */ + +#undef CPP_SPEC +#define CPP_SPEC "%(cpp_cpu) \ + %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ + %{posix:-D_POSIX_SOURCE} \ + %{mieee:-D_IEEE_FP} \ + %{mieee-with-inexact:-D_IEEE_FP -D_IEEE_FP_INEXACT}" + +#undef LINK_SPEC +#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ + %{p:%e`-p' not supported; use `-pg' and gprof(1)} \ + %{Wl,*:%*} \ + %{assert*} %{R*} %{rpath*} %{defsym*} \ + %{shared:-Bshareable %{h*} %{soname*}} \ + %{symbolic:-Bsymbolic} \ + %{!shared: \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \ + %{static:-Bstatic}}" +/* Provide an ASM_SPEC appropriate for a FreeBSD/Alpha target. This differs + from the generic FreeBSD ASM_SPEC in that no special handling of PIC is + necessary on the Alpha. */ +/* Per Richard Henderson <rth@cygnus.com>, it is better to use the `.arch' + directive in the assembly file. alpha/elf.h gives us this in + "ASM_FILE_START". +#undef ASM_SPEC +#define ASM_SPEC " %| %{mcpu=*:-m%*}" +*/ -#undef OBJECT_FORMAT_COFF -#undef EXTENDED_COFF -#define OBJECT_FORMAT_ELF +/* XXX, if FreeBSD/Alpha grows a crti.o file, we can use the alpha/elf.h + definition. */ +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + "%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} \ + %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" -/* This is BSD, so it wants DBX format. */ +/* Provide a ENDFILE_SPEC appropriate for ELF. Here we tack on the + magical crtend.o file which provides part of the support for + getting C++ file-scope static object constructed before entering + `main'. */ +/* XXX, if FreeBSD/Alpha grows a crtn.o file, we can use the alpha/elf.h + definition. */ -#define DBX_DEBUGGING_INFO +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + "%{!shared:crtend.o%s} %{shared:crtendS.o%s}" -/* This is the char to use for continuation (in case we need to turn - continuation back on). */ -#undef DBX_CONTIN_CHAR -#define DBX_CONTIN_CHAR '?' +/************************[ Target stuff ]***********************************/ -#undef ASM_FINAL_SPEC +/* Define the actual types of some ANSI-mandated types. + Needs to agree with <machine/ansi.h>. GCC defaults come from c-decl.c, + c-common.c, and config/<arch>/<arch>.h. */ -/* Names to predefine in the preprocessor for this target machine. - XXX FreeBSD, by convention, shouldn't do __alpha, but lots of applications - expect it because that's what OSF/1 does. */ +/* alpha.h gets this wrong for FreeBSD. We use the GCC defaults instead. */ +#undef WCHAR_TYPE -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (FreeBSD/alpha ELF)"); +#undef WCHAR_UNSIGNED +#define WCHAR_UNSIGNED 0 -#undef TARGET_DEFAULT -#define TARGET_DEFAULT (MASK_FP | MASK_FPREGS | MASK_GAS) +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 32 -#undef CPP_PREDEFINES -#define CPP_PREDEFINES \ - "-D__alpha__ -D__alpha -D__ELF__ -Acpu(alpha) -Amachine(alpha)" \ - FBSD_CPP_PREDEFINES +/* Handle cross-compilation on 32-bits machines (such as i386) for 64-bits + machines (Alpha in this case). */ -#undef CPP_SPEC -#define CPP_SPEC "%{posix:-D_POSIX_SOURCE}" +#if defined(__i386__) +#undef HOST_BITS_PER_LONG +#define HOST_BITS_PER_LONG 32 +#undef HOST_WIDE_INT +#define HOST_WIDE_INT long long +#undef HOST_BITS_PER_WIDE_INT +#define HOST_BITS_PER_WIDE_INT 64 +#endif -/* Make gcc agree with <machine/ansi.h> */ +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (FreeBSD/alpha ELF)"); -#undef WCHAR_TYPE -#define WCHAR_TYPE "int" +#define TARGET_ELF 1 -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 +#undef TARGET_DEFAULT +#define TARGET_DEFAULT (MASK_FP | MASK_FPREGS | MASK_GAS) -#undef WCHAR_TYPE_SIZE -#define WCHAR_TYPE_SIZE 32 +#undef HAS_INIT_SECTION /* Output assembler code to FILE to increment profiler label # LABELNO for profiling a function entry. Under FreeBSD/Alpha, the assembler does nothing special with -pg. */ -#undef FUNCTION_PROFILER -#define FUNCTION_PROFILER(FILE, LABELNO) \ +#undef FUNCTION_PROFILER +#define FUNCTION_PROFILER(FILE, LABELNO) \ fputs ("\tjsr $28,_mcount\n", (FILE)) /* Show that we need a GP when profiling. */ -#undef TARGET_PROFILING_NEEDS_GP +#undef TARGET_PROFILING_NEEDS_GP #define TARGET_PROFILING_NEEDS_GP 1 -#undef HAS_INIT_SECTION - -/* Provide an ASM_SPEC appropriate for a FreeBSD/alpha target. This differs - from the generic FreeBSD ASM_SPEC in that no special handling of PIC is - necessary on the Alpha. */ - -#undef ASM_SPEC -#define ASM_SPEC " %| %{mcpu=*:-m%*}" - -/* Output at beginning of assembler file. */ - -#undef ASM_FILE_START -#define ASM_FILE_START(FILE) \ -{ \ - alpha_write_verstamp (FILE); \ - output_file_directive (FILE, main_input_filename); \ - fprintf (FILE, "\t.version\t\"01.01\"\n"); \ - fprintf (FILE, "\t.set noat\n"); \ -} - -#undef ASM_OUTPUT_SOURCE_LINE -#define ASM_OUTPUT_SOURCE_LINE(STREAM, LINE) \ - alpha_output_lineno (STREAM, LINE) - -/* Attach a special .ident directive to the end of the file to identify - the version of GCC which compiled this code. The format of the - .ident string is patterned after the ones produced by native svr4 - C compilers. */ - -#undef IDENT_ASM_OP -#define IDENT_ASM_OP ".ident" - -#ifdef IDENTIFY_WITH_IDENT -#undef ASM_IDENTIFY_GCC -#define ASM_IDENTIFY_GCC(FILE) /* nothing */ -#undef ASM_IDENTIFY_LANGUAGE -#define ASM_IDENTIFY_LANGUAGE(FILE) \ - fprintf(FILE, "\t%s \"GCC (%s) %s\"\n", IDENT_ASM_OP, \ - lang_identify(), version_string) -#else -#undef ASM_FILE_END -#define ASM_FILE_END(FILE) \ -do { \ - fprintf ((FILE), "\t%s\t\"GCC: (GNU) %s\"\n", \ - IDENT_ASM_OP, version_string); \ - } while (0) -#endif - -/* Allow #sccs in preprocessor. */ - -#define SCCS_DIRECTIVE - -/* Output #ident as a .ident. */ - -#undef ASM_OUTPUT_IDENT -#define ASM_OUTPUT_IDENT(FILE, NAME) \ - fprintf (FILE, "\t%s\t\"%s\"\n", IDENT_ASM_OP, NAME); - -/* This is how to allocate empty space in some section. The .zero - pseudo-op is used for this on most svr4 assemblers. */ - -#undef SKIP_ASM_OP -#define SKIP_ASM_OP ".zero" - -#undef ASM_OUTPUT_SKIP -#define ASM_OUTPUT_SKIP(FILE,SIZE) \ - fprintf (FILE, "\t%s\t%u\n", SKIP_ASM_OP, (SIZE)) - -/* Output the label which precedes a jumptable. Note that for all svr4 - systems where we actually generate jumptables (which is to say every - svr4 target except i386, where we use casesi instead) we put the jump- - tables into the .rodata section and since other stuff could have been - put into the .rodata section prior to any given jumptable, we have to - make sure that the location counter for the .rodata section gets pro- - perly re-aligned prior to the actual beginning of the jump table. */ - -#undef ALIGN_ASM_OP -#define ALIGN_ASM_OP ".align" - -#ifndef ASM_OUTPUT_BEFORE_CASE_LABEL -#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE,PREFIX,NUM,TABLE) \ - ASM_OUTPUT_ALIGN ((FILE), 2); -#endif - -#undef ASM_OUTPUT_CASE_LABEL -#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,JUMPTABLE) \ - do { \ - ASM_OUTPUT_BEFORE_CASE_LABEL (FILE, PREFIX, NUM, JUMPTABLE) \ - ASM_OUTPUT_INTERNAL_LABEL (FILE, PREFIX, NUM); \ - } while (0) - -/* The standard SVR4 assembler seems to require that certain builtin - library routines (e.g. .udiv) be explicitly declared as .globl - in each assembly file where they are referenced. */ - -#undef ASM_OUTPUT_EXTERNAL_LIBCALL -#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \ - ASM_GLOBALIZE_LABEL (FILE, XSTR (FUN, 0)) - -/* This says how to output assembler code to declare an - uninitialized external linkage data object. Under SVR4, - the linker seems to want the alignment of data objects - to depend on their types. We do exactly that here. */ - -#undef COMMON_ASM_OP -#define COMMON_ASM_OP ".comm" - -#undef ASM_OUTPUT_ALIGNED_COMMON -#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \ -do { \ - fprintf ((FILE), "\t%s\t", COMMON_ASM_OP); \ - assemble_name ((FILE), (NAME)); \ - fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT); \ -} while (0) - -/* This says how to output assembler code to declare an - uninitialized internal linkage data object. Under SVR4, - the linker seems to want the alignment of data objects - to depend on their types. We do exactly that here. */ - -#undef LOCAL_ASM_OP -#define LOCAL_ASM_OP ".local" - -#undef ASM_OUTPUT_ALIGNED_LOCAL -#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ -do { \ - fprintf ((FILE), "\t%s\t", LOCAL_ASM_OP); \ - assemble_name ((FILE), (NAME)); \ - fprintf ((FILE), "\n"); \ - ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN); \ -} while (0) - -/* This is the pseudo-op used to generate a 64-bit word of data with a - specific value in some section. */ - -#undef INT_ASM_OP -#define INT_ASM_OP ".quad" - -/* This is the pseudo-op used to generate a contiguous sequence of byte - values from a double-quoted string WITHOUT HAVING A TERMINATING NUL - AUTOMATICALLY APPENDED. This is the same for most svr4 assemblers. */ - -#undef ASCII_DATA_ASM_OP -#define ASCII_DATA_ASM_OP ".ascii" - -/* Support const sections and the ctors and dtors sections for g++. - Note that there appears to be two different ways to support const - sections at the moment. You can either #define the symbol - READONLY_DATA_SECTION (giving it some code which switches to the - readonly data section) or else you can #define the symbols - EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION, and - SELECT_RTX_SECTION. We do both here just to be on the safe side. */ - -#undef USE_CONST_SECTION -#define USE_CONST_SECTION 1 - -#undef CONST_SECTION_ASM_OP -#define CONST_SECTION_ASM_OP ".section\t.rodata" - -/* Define the pseudo-ops used to switch to the .ctors and .dtors sections. - - Note that we want to give these sections the SHF_WRITE attribute - because these sections will actually contain data (i.e. tables of - addresses of functions in the current root executable or shared library - file) and, in the case of a shared library, the relocatable addresses - will have to be properly resolved/relocated (and then written into) by - the dynamic linker when it actually attaches the given shared library - to the executing process. (Note that on SVR4, you may wish to use the - `-z text' option to the ELF linker, when building a shared library, as - an additional check that you are doing everything right. But if you do - use the `-z text' option when building a shared library, you will get - errors unless the .ctors and .dtors sections are marked as writable - via the SHF_WRITE attribute.) */ - -#undef CTORS_SECTION_ASM_OP -#define CTORS_SECTION_ASM_OP ".section\t.ctors,\"aw\"" -#undef DTORS_SECTION_ASM_OP -#define DTORS_SECTION_ASM_OP ".section\t.dtors,\"aw\"" - -/* On svr4, we *do* have support for the .init and .fini sections, and we - can put stuff in there to be executed before and after `main'. We let - crtstuff.c and other files know this by defining the following symbols. - The definitions say how to change sections to the .init and .fini - sections. This is the same for all known svr4 assemblers. */ - -#undef INIT_SECTION_ASM_OP -#define INIT_SECTION_ASM_OP ".section\t.init" -#undef FINI_SECTION_ASM_OP -#define FINI_SECTION_ASM_OP ".section\t.fini" - -/* A default list of other sections which we might be "in" at any given - time. For targets that use additional sections (e.g. .tdesc) you - should override this definition in the target-specific file which - includes this file. */ - -#undef EXTRA_SECTIONS -#define EXTRA_SECTIONS in_const, in_ctors, in_dtors - -/* A default list of extra section function definitions. For targets - that use additional sections (e.g. .tdesc) you should override this - definition in the target-specific file which includes this file. */ - -#undef EXTRA_SECTION_FUNCTIONS -#define EXTRA_SECTION_FUNCTIONS \ - CONST_SECTION_FUNCTION \ - CTORS_SECTION_FUNCTION \ - DTORS_SECTION_FUNCTION - -#undef READONLY_DATA_SECTION -#define READONLY_DATA_SECTION() const_section () - -#undef CONST_SECTION_FUNCTION -#define CONST_SECTION_FUNCTION \ -void \ -const_section () \ -{ \ - if (!USE_CONST_SECTION) \ - text_section(); \ - else if (in_section != in_const) \ - { \ - fprintf (asm_out_file, "%s\n", CONST_SECTION_ASM_OP); \ - in_section = in_const; \ - } \ -} - -#undef CTORS_SECTION_FUNCTION -#define CTORS_SECTION_FUNCTION \ -void \ -ctors_section () \ -{ \ - if (in_section != in_ctors) \ - { \ - fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP); \ - in_section = in_ctors; \ - } \ -} - -#undef DTORS_SECTION_FUNCTION -#define DTORS_SECTION_FUNCTION \ -void \ -dtors_section () \ -{ \ - if (in_section != in_dtors) \ - { \ - fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP); \ - in_section = in_dtors; \ - } \ -} - -/* Switch into a generic section. - This is currently only used to support section attributes. - - We make the section read-only and executable for a function decl, - read-only for a const data decl, and writable for a non-const data decl. */ -#undef ASM_OUTPUT_SECTION_NAME -#define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME, RELOC) \ - fprintf (FILE, ".section\t%s,\"%s\",@progbits\n", NAME, \ - (DECL) && TREE_CODE (DECL) == FUNCTION_DECL ? "ax" : \ - (DECL) && DECL_READONLY_SECTION (DECL, RELOC) ? "a" : "aw") - - -/* A C statement (sans semicolon) to output an element in the table of - global constructors. */ -#undef ASM_OUTPUT_CONSTRUCTOR -#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \ - do { \ - ctors_section (); \ - fprintf (FILE, "\t%s\t ", INT_ASM_OP); \ - assemble_name (FILE, NAME); \ - fprintf (FILE, "\n"); \ - } while (0) - -/* A C statement (sans semicolon) to output an element in the table of - global destructors. */ -#undef ASM_OUTPUT_DESTRUCTOR -#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME) \ - do { \ - dtors_section (); \ - fprintf (FILE, "\t%s\t ", INT_ASM_OP); \ - assemble_name (FILE, NAME); \ - fprintf (FILE, "\n"); \ - } while (0) - -/* A C statement or statements to switch to the appropriate - section for output of DECL. DECL is either a `VAR_DECL' node - or a constant of some sort. RELOC indicates whether forming - the initial value of DECL requires link-time relocations. */ - -#undef SELECT_SECTION -#define SELECT_SECTION(DECL,RELOC) \ -{ \ - if (TREE_CODE (DECL) == STRING_CST) \ - { \ - if (! flag_writable_strings) \ - const_section (); \ - else \ - data_section (); \ - } \ - else if (TREE_CODE (DECL) == VAR_DECL) \ - { \ - if ((flag_pic && RELOC) \ - || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \ - || !DECL_INITIAL (DECL) \ - || (DECL_INITIAL (DECL) != error_mark_node \ - && !TREE_CONSTANT (DECL_INITIAL (DECL)))) \ - data_section (); \ - else \ - const_section (); \ - } \ - else \ - const_section (); \ -} - -/* A C statement or statements to switch to the appropriate - section for output of RTX in mode MODE. RTX is some kind - of constant in RTL. The argument MODE is redundant except - in the case of a `const_int' rtx. Currently, these always - go into the const section. */ - -#undef SELECT_RTX_SECTION -#define SELECT_RTX_SECTION(MODE,RTX) const_section() - -/* Define the strings used for the .type, .size and .set directives. - These strings generally do not vary from one system running svr4 to - another, but if a given system (e.g. m88k running svr) needs to use - different pseudo-op names for these, they may be overridden in the - file which includes this one. */ - -#undef TYPE_ASM_OP -#define TYPE_ASM_OP ".type" -#undef SIZE_ASM_OP -#define SIZE_ASM_OP ".size" - -/* This is how we tell the assembler that two symbols have the same value. */ - -#undef ASM_OUTPUT_DEF -#define ASM_OUTPUT_DEF(FILE,NAME1,NAME2) \ - do { assemble_name(FILE, NAME1); \ - fputs(" = ", FILE); \ - assemble_name(FILE, NAME2); \ - fputc('\n', FILE); } while (0) - -/* A table of bytes codes used by the ASM_OUTPUT_ASCII and - ASM_OUTPUT_LIMITED_STRING macros. Each byte in the table - corresponds to a particular byte value [0..255]. For any - given byte value, if the value in the corresponding table - position is zero, the given character can be output directly. - If the table value is 1, the byte must be output as a \ooo - octal escape. If the tables value is anything else, then the - byte value should be output as a \ followed by the value - in the table. Note that we can use standard UN*X escape - sequences for many control characters, but we don't use - \a to represent BEL because some svr4 assemblers (e.g. on - the i386) don't know about that. Also, we don't use \v - since some versions of gas, such as 2.2 did not accept it. */ - -#undef ESCAPES -#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. -*/ - -#undef STRING_LIMIT -#define STRING_LIMIT ((unsigned) 256) - -#undef STRING_ASM_OP -#define STRING_ASM_OP ".string" - -/* - * We always use gas here, so we don't worry about ECOFF assembler problems. - */ -#undef TARGET_GAS -#define TARGET_GAS 1 - -#undef PREFERRED_DEBUGGING_TYPE -#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG - -#undef LINK_SPEC -#define LINK_SPEC "-m elf64alpha \ - %{p:%e`-p' not supported; use `-pg' and gprof(1)} \ - %{Wl,*:%*} \ - %{assert*} %{R*} %{rpath*} %{defsym*} \ - %{shared:-Bshareable %{h*} %{soname*}} \ - %{symbolic:-Bsymbolic} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \ - %{static:-Bstatic}}" - -#undef STARTFILE_SPEC -#define STARTFILE_SPEC \ - "%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} \ - %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" - -/* Provide a ENDFILE_SPEC appropriate for ELF. Here we tack on the - magical crtend.o file which provides part of the support for - getting C++ file-scope static object constructed before entering - `main', followed by a normal ELF "finalizer" file, `crtn.o'. */ - -#undef ENDFILE_SPEC -#define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s}" - -/* Handle #pragma weak and #pragma pack. */ - -#define HANDLE_SYSV_PRAGMA - -/* - * Some imports from svr4.h in support of shared libraries. - * Currently, we need the DECLARE_OBJECT_SIZE stuff. - */ - -/* This is how we tell the assembler that a symbol is weak. */ - -#undef ASM_WEAKEN_LABEL -#define ASM_WEAKEN_LABEL(FILE,NAME) \ - do { fputs ("\t.globl\t", FILE); assemble_name (FILE, NAME); \ - fputc ('\n', FILE); \ - fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \ - fputc ('\n', FILE); } while (0) - -/* The following macro defines the format used to output the second - operand of the .type assembler directive. Different svr4 assemblers - expect various different forms for this operand. The one given here - is just a default. You may need to override it in your machine- - specific tm.h file (depending upon the particulars of your assembler). */ - -#undef TYPE_OPERAND_FMT -#define TYPE_OPERAND_FMT "@%s" - -/* Write the extra assembler code needed to declare a function's result. - Most svr4 assemblers don't require any special declaration of the - result value, but there are exceptions. */ +/* This is the char to use for continuation (in case we need to turn + continuation back on). */ -#ifndef ASM_DECLARE_RESULT -#define ASM_DECLARE_RESULT(FILE, RESULT) -#endif +#undef DBX_CONTIN_CHAR +#define DBX_CONTIN_CHAR '?' diff --git a/lang/gcc34/files/patch-ad b/lang/gcc34/files/patch-ad index 934da77780a4..53927df88598 100644 --- a/lang/gcc34/files/patch-ad +++ b/lang/gcc34/files/patch-ad @@ -1,5 +1,5 @@ ---- gcc/config/i386/freebsd-aout.h.orig Sun Jan 30 23:28:05 2000 -+++ gcc/config/i386/freebsd-aout.h Fri Feb 4 05:19:16 2000 +--- gcc/config/i386/freebsd-aout.h.orig Mon Sep 25 06:03:18 2000 ++++ gcc/config/i386/freebsd-aout.h Tue Sep 26 12:23:26 2000 @@ -31,12 +31,7 @@ /* This goes away when the math-emulator is fixed */ @@ -54,9 +54,9 @@ } @@ -132,6 +118,7 @@ - #define TYPE_ASM_OP ".type" - #define SIZE_ASM_OP ".size" -+#define SET_ASM_OP ".set" + #define TYPE_ASM_OP "\t.type\t" + #define SIZE_ASM_OP "\t.size\t" ++#define SET_ASM_OP "\t.set\t" /* The following macro defines the format used to output the second operand of the .type assembler directive. Different svr4 assemblers diff --git a/lang/gcc34/files/patch-ak b/lang/gcc34/files/patch-ak index f783ebef16ab..98c373d4e980 100644 --- a/lang/gcc34/files/patch-ak +++ b/lang/gcc34/files/patch-ak @@ -1,18 +1,19 @@ ---- gcc/configure.orig Mon Jun 19 10:23:54 2000 -+++ gcc/configure Mon Jun 26 15:36:08 2000 -@@ -3687,6 +3687,22 @@ +--- gcc/configure.orig Sun Oct 1 23:50:51 2000 ++++ gcc/configure Mon Oct 9 18:55:44 2000 +@@ -3910,6 +3910,23 @@ thread_file='posix' fi ;; + alpha*-*-freebsd*) -+ tm_file="${tm_file} freebsd.h alpha/freebsd.h" ++ tm_file="${tm_file} freebsd.h alpha/elf.h alpha/freebsd.h" + xm_file="${xm_file} xm-freebsd.h" + target_cpu_default="MASK_GAS" -+ tmake_file="t-freebsd alpha/t-crtbe" ++ tmake_file="t-freebsd alpha/t-crtbe alpha/t-alpha alpha/t-ieee" ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + xmake_file=none + fixincludes=fixinc.wrap -+ gas=yes -+ gnu_ld=yes ++ gas=yes gnu_ld=yes ++ stabs=yes + case x${enable_threads} in + xyes | xpthreads | xposix) + thread_file='posix' @@ -23,17 +24,3 @@ alpha*-*-netbsd*) tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsd-elf.h" target_cpu_default="MASK_GAS" -@@ -4346,11 +4362,11 @@ - # use_collect2=yes - ;; - i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aout*) -- tm_file="i386/freebsd.h i386/perform.h" -+ tm_file="i386/freebsd-aout.h i386/perform.h" - tmake_file=t-freebsd - ;; - i[34567]86-*-freebsd*) -- tm_file="i386/i386.h i386/att.h svr4.h freebsd.h i386/freebsd-elf.h i386/perform.h" -+ tm_file="i386/i386.h i386/att.h svr4.h freebsd.h i386/freebsd.h i386/perform.h" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - tmake_file=t-freebsd - gas=yes diff --git a/lang/gcc34/files/patch-al b/lang/gcc34/files/patch-al index 4484e2e070a9..e2760943566e 100644 --- a/lang/gcc34/files/patch-al +++ b/lang/gcc34/files/patch-al @@ -1,18 +1,19 @@ ---- gcc/configure.in.orig Mon Jun 19 10:23:54 2000 -+++ gcc/configure.in Mon Jun 26 15:37:26 2000 -@@ -742,6 +742,22 @@ +--- gcc/configure.in.orig Sun Oct 1 23:50:51 2000 ++++ gcc/configure.in Mon Oct 9 18:56:34 2000 +@@ -786,6 +786,23 @@ + if test x$enable_threads = xyes; then thread_file='posix' fi - ;; + alpha*-*-freebsd*) -+ tm_file="${tm_file} freebsd.h alpha/freebsd.h" ++ tm_file="${tm_file} freebsd.h alpha/elf.h alpha/freebsd.h" + xm_file="${xm_file} xm-freebsd.h" + target_cpu_default="MASK_GAS" -+ tmake_file="t-freebsd alpha/t-crtbe" ++ tmake_file="t-freebsd alpha/t-crtbe alpha/t-alpha alpha/t-ieee" ++ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o" + xmake_file=none + fixincludes=fixinc.wrap -+ gas=yes -+ gnu_ld=yes ++ gas=yes gnu_ld=yes ++ stabs=yes + case x${enable_threads} in + xyes | xpthreads | xposix) + thread_file='posix' @@ -20,22 +21,6 @@ + ;; + esac + ;; + ;; alpha*-*-netbsd*) tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsd-elf.h" - target_cpu_default="MASK_GAS" -@@ -1441,13 +1457,13 @@ - changequote(,)dnl - i[34567]86-*-freebsd[12] | i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd*aout*) - changequote([,])dnl -- tm_file="i386/freebsd.h i386/perform.h" -+ tm_file="i386/freebsd-aout.h i386/perform.h" - tmake_file=t-freebsd - ;; - changequote(,)dnl - i[34567]86-*-freebsd*) - changequote([,])dnl -- tm_file="i386/i386.h i386/att.h svr4.h freebsd.h i386/freebsd-elf.h i386/perform.h" -+ tm_file="i386/i386.h i386/att.h svr4.h freebsd.h i386/freebsd.h i386/perform.h" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - tmake_file=t-freebsd - gas=yes diff --git a/lang/gcc34/files/patch-fa b/lang/gcc34/files/patch-fa index 55221295f0b7..d6b90e4ba86c 100644 --- a/lang/gcc34/files/patch-fa +++ b/lang/gcc34/files/patch-fa @@ -1,6 +1,6 @@ ---- gcc/c-common.c.orig Fri Aug 25 08:27:55 2000 -+++ gcc/c-common.c Fri Sep 15 11:30:42 2000 -@@ -157,7 +157,7 @@ +--- gcc/c-common.c.orig Mon Sep 25 10:04:45 2000 ++++ gcc/c-common.c Mon Oct 9 02:51:14 2000 +@@ -171,7 +171,7 @@ int, int, int)); static void init_attributes PARAMS ((void)); static void record_function_format PARAMS ((tree, tree, enum format_type, @@ -9,7 +9,7 @@ static void record_international_format PARAMS ((tree, tree, int)); static int default_valid_lang_attribute PARAMS ((tree, tree, tree, tree)); -@@ -827,6 +827,7 @@ +@@ -862,6 +862,7 @@ enum format_type format_type; tree argument; unsigned int arg_num; @@ -17,7 +17,7 @@ if (TREE_CODE (decl) != FUNCTION_DECL) { -@@ -837,7 +838,7 @@ +@@ -872,7 +873,7 @@ if (TREE_CODE (format_type_id) != IDENTIFIER_NODE) { @@ -26,7 +26,7 @@ continue; } else -@@ -845,12 +846,26 @@ +@@ -880,12 +881,26 @@ const char *p = IDENTIFIER_POINTER (format_type_id); if (!strcmp (p, "printf") || !strcmp (p, "__printf__")) @@ -52,8 +52,8 @@ + } else { - warning ("`%s' is an unrecognized format function type", p); -@@ -923,7 +938,8 @@ + status_warning (status, "`%s' is an unrecognized format function type", p); +@@ -958,7 +973,8 @@ record_function_format (DECL_NAME (decl), DECL_ASSEMBLER_NAME (decl), @@ -63,19 +63,21 @@ break; } -@@ -1242,6 +1258,11 @@ - } format_char_info; +@@ -1441,6 +1457,13 @@ - static format_char_info print_char_table[] = { + static const format_char_info print_char_table[] = + { ++#ifdef XXX_NEED_TO_UPDATE_THIS_FOR_GCC297_CHANGES +/* FreeBSD kernel extensions. */ + { "D", 1, T_C, T_C, NULL, NULL, NULL, NULL, NULL, "-wp" }, + { "b", 1, T_C, T_C, NULL, NULL, NULL, NULL, NULL, "-wp" }, + { "rz", 0, NULL, T_I, T_I, T_L, NULL, NULL, NULL, "-wp0 +#" }, +#define unextended_print_char_table (print_char_table + 3) - { "di", 0, T_I, T_I, T_I, T_L, T_LL, T_LL, T_SST, T_PD, T_IM, "-wp0 +'I" }, - { "oxX", 0, T_UI, T_UI, T_UI, T_UL, T_ULL, T_ULL, T_ST, T_UPD, T_UIM, "-wp0#" }, - { "u", 0, T_UI, T_UI, T_UI, T_UL, T_ULL, T_ULL, T_ST, T_UPD, T_UIM, "-wp0'I" }, -@@ -1314,6 +1335,7 @@ ++#endif + /* C89 conversion specifiers. */ + { "di", 0, STD_C89, { T89_I, T99_I, T89_I, T89_L, T99_LL, TEX_LL, T99_SST, T99_PD, T99_IM }, "-wp0 +'I", "i" }, + { "oxX", 0, STD_C89, { T89_UI, T99_UI, T89_UI, T89_UL, T99_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0#", "i" }, +@@ -1526,6 +1549,7 @@ enum format_type format_type; /* type of format (printf, scanf, etc.) */ int format_num; /* number of format argument */ int first_arg_num; /* number of first arg (zero for varargs) */ @@ -83,12 +85,15 @@ } function_format_info; static function_format_info *function_format_list = NULL; -@@ -1354,40 +1376,40 @@ +@@ -1570,42 +1594,42 @@ { /* Functions from ISO/IEC 9899:1990. */ record_function_format (get_identifier ("printf"), NULL_TREE, - printf_format_type, 1, 2); + printf_format_type, 1, 2, 0); + record_function_format (get_identifier ("__builtin_printf"), NULL_TREE, +- printf_format_type, 1, 2); ++ printf_format_type, 1, 2, 0); record_function_format (get_identifier ("fprintf"), NULL_TREE, - printf_format_type, 2, 3); + printf_format_type, 2, 3, 0); @@ -139,7 +144,7 @@ } if (flag_hosted && flag_noniso_default_format_attributes) -@@ -1410,12 +1432,13 @@ +@@ -1630,12 +1654,13 @@ static void record_function_format (name, assembler_name, format_type, @@ -154,7 +159,7 @@ { function_format_info *info; -@@ -1439,6 +1462,7 @@ +@@ -1659,6 +1684,7 @@ info->format_type = format_type; info->format_num = format_num; info->first_arg_num = first_arg_num; @@ -162,32 +167,16 @@ } /* Record information for the names of function that modify the format -@@ -1755,7 +1779,8 @@ +@@ -2019,7 +2045,7 @@ if (integer_zerop (format_tree)) { -- warning ("null format string"); -+ if (!info->null_format_ok) -+ warning ("null format string"); +- status_warning (status, "null format string"); ++ if (!info->null_format_ok) status_warning (status, "null format string"); return; } if (TREE_CODE (format_tree) != ADDR_EXPR) -@@ -1981,12 +2006,13 @@ - It will work on most machines, because size_t and int - have the same mode. But might as well warn anyway, - since it will fail on other machines. */ -+ /* XXX should we allow unsigned ints here? */ - if ((TYPE_MAIN_VARIANT (TREE_TYPE (cur_param)) - != integer_type_node) - && - (TYPE_MAIN_VARIANT (TREE_TYPE (cur_param)) - != unsigned_type_node)) -- warning ("field width is not type int (arg %d)", arg_num); -+ warning ("precision is not type int (arg %d)", arg_num); - } - } - else -@@ -2046,6 +2072,53 @@ +@@ -2340,6 +2366,54 @@ } } } @@ -196,7 +185,7 @@ + /* There should be an int arg to control the string arg. */ + if (params == 0) + { -+ tfaff (); ++ status_warning (status, "too few arguments for format"); + return; + } + if (info->first_arg_num != 0) @@ -210,7 +199,7 @@ + (TYPE_MAIN_VARIANT (TREE_TYPE (cur_param)) + != unsigned_type_node)) + { -+ warning ("bitmap is not type int (arg %d)", arg_num); ++ status_warning (status, "bitmap is not type int (arg %d)", arg_num); + } + } + } @@ -219,11 +208,12 @@ + /* There should be an unsigned char * arg before the string arg. */ + if (params == 0) + { -+ tfaff (); ++ status_warning (status, "too few arguments for format"); + return; + } + if (info->first_arg_num != 0) + { ++ tree cur_type; + cur_param = TREE_VALUE (params); + params = TREE_CHAIN (params); + ++arg_num; @@ -232,8 +222,8 @@ + || TYPE_MAIN_VARIANT (TREE_TYPE (cur_type)) + != unsigned_char_type_node) + { -+ warning ("ethernet address is not type unsigned char *" -+ " (arg %d)", ++ status_warning (status, ++ "ethernet address is not type unsigned char * (arg %d)", + arg_num); + } + } @@ -241,22 +231,12 @@ aflag = 0; -@@ -2130,7 +2203,8 @@ - switch (info->format_type) - { - case printf_format_type: -- fci = print_char_table; -+ fci = flag_format_extensions ? print_char_table -+ : unextended_print_char_table; - break; - case scanf_format_type: - fci = scan_char_table; -@@ -2174,7 +2248,7 @@ - warning ("width used with `%c' format", format_char); - if (index (fci->flag_chars, '3') != 0 +@@ -2441,7 +2515,7 @@ + status_warning (status, "width used with `%c' format", format_char); + if (index (fci->flags2, '3') != 0 || (format_char == 'y' && index (flag_chars, 'E'))) -- warning ("`%%%c' yields only last 2 digits of year in some locales", -+ warning ("`%%%c' yields only last 2 digits of year in some locales on non-BSD systems", +- status_warning (status, "`%%%c' yields only last 2 digits of year in some locales", ++ status_warning (status, "`%%%c' yields only last 2 digits of year in some locales on non-BSD systems", format_char); - else if (index (fci->flag_chars, '2') != 0) - warning ("`%%%c' yields only last 2 digits of year", format_char); + else if (index (fci->flags2, '2') != 0) + status_warning (status, "`%%%c' yields only last 2 digits of year", format_char); |