diff options
author | obrien <obrien@FreeBSD.org> | 2000-11-30 19:39:26 +0800 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2000-11-30 19:39:26 +0800 |
commit | 3e734a0c4cff689a3da326cd13ca4f6b2652a69b (patch) | |
tree | 21dff0a810c12ec4e38552504034427855dd3e31 | |
parent | 3c33e5b4b4a927e63b33087d668742210520e7c7 (diff) | |
download | freebsd-ports-gnome-3e734a0c4cff689a3da326cd13ca4f6b2652a69b.tar.gz freebsd-ports-gnome-3e734a0c4cff689a3da326cd13ca4f6b2652a69b.tar.zst freebsd-ports-gnome-3e734a0c4cff689a3da326cd13ca4f6b2652a69b.zip |
This should take this port back to the last version of it for EGCS-1.1.2.
The gcc-2.95.2 bits have been repo copied to ports/lang/gcc295.
GCC 2.95.2 does not work for some people's code. GCC 3.0 will be even
worse. So it looks like we'll have to keep a port for each version of
GCC we've ever used.
-rw-r--r-- | lang/egcs/Makefile | 106 | ||||
-rw-r--r-- | lang/egcs/distinfo | 9 | ||||
-rw-r--r-- | lang/egcs/files/alpha-freebsd-elf.h | 61 | ||||
-rw-r--r-- | lang/egcs/files/alpha-freebsd.h | 122 | ||||
-rw-r--r-- | lang/egcs/files/freebsd.h | 65 | ||||
-rw-r--r-- | lang/egcs/files/patch-ad | 59 | ||||
-rw-r--r-- | lang/egcs/files/patch-af | 136 | ||||
-rw-r--r-- | lang/egcs/files/patch-ah | 67 | ||||
-rw-r--r-- | lang/egcs/files/patch-aj | 20 | ||||
-rw-r--r-- | lang/egcs/files/patch-ak | 47 | ||||
-rw-r--r-- | lang/egcs/files/patch-al | 46 | ||||
-rw-r--r-- | lang/egcs/files/patch-am | 19 | ||||
-rw-r--r-- | lang/egcs/files/patch-an | 11 | ||||
-rw-r--r-- | lang/egcs/files/patch-ap | 26 | ||||
-rw-r--r-- | lang/egcs/files/patch-aq | 11 | ||||
-rw-r--r-- | lang/egcs/files/patch-ba | 10 | ||||
-rw-r--r-- | lang/egcs/files/patch-bb | 9 | ||||
-rw-r--r-- | lang/egcs/files/patch-bc | 31 | ||||
-rw-r--r-- | lang/egcs/files/patch-fa | 183 | ||||
-rw-r--r-- | lang/egcs/files/patch-fb | 17 | ||||
-rw-r--r-- | lang/egcs/files/patch-fc | 29 | ||||
-rw-r--r-- | lang/egcs/pkg-comment | 2 | ||||
-rw-r--r-- | lang/egcs/pkg-descr | 21 | ||||
-rw-r--r-- | lang/egcs/pkg-plist | 68 |
24 files changed, 489 insertions, 686 deletions
diff --git a/lang/egcs/Makefile b/lang/egcs/Makefile index ed89d55e4ee2..251b63a8935d 100644 --- a/lang/egcs/Makefile +++ b/lang/egcs/Makefile @@ -1,25 +1,25 @@ # ex:ts=8 # Ports collection makefile for: egcs +# Version required: 1998-09-14 # Date created: 9 Jan 1998 # Whom: John Polstra <jdp@polstra.com> # # $FreeBSD$ # -PORTNAME= gcc -PORTVERSION= 2.95.2 -CATEGORIES= lang java -MASTER_SITES= ftp://egcs.cygnus.com/pub/egcs/releases/${DISTNAME}/ \ - ftp://ftp.ninemoons.com/pub/mirrors/egcs/releases/${DISTNAME}/ \ - ftp://ftp.iij.ad.jp/pub/egcs/releases/${DISTNAME}/ \ - ftp://ftp.yggdrasil.com/mirrors/site/egcs.cygnus.com/pub/egcs/releases/${DISTNAME}/ \ - ftp://ftp.fu-berlin.de/unix/languages/egcs/releases/${DISTNAME}/ -MASTER_SITE_SUBDIR= gcc -DISTFILES= gcc-core-${GCC_REV}${EXTRACT_SUFX} \ - gcc-g++-${GCC_REV}${EXTRACT_SUFX} \ - gcc-g77-${GCC_REV}${EXTRACT_SUFX} \ - gcc-java-${GCC_REV}${EXTRACT_SUFX} \ - gcc-objc-${GCC_REV}${EXTRACT_SUFX} +PORTNAME= egcs +PORTVERSION= 1.1.2 +CATEGORIES= lang +MASTER_SITES= ftp://go.cygnus.com/pub/ftp.cygnus.com/egcs/releases/egcs-1.1.2/ \ + ftp://ftp.crc.ca/pub/packages/egcs/egcs-1.1.2/ \ + ftp://ftp.funet.fi/mirrors/ftp.cygnus.com/pub/egcs/releases/egcs-1.1.2/ \ + ftp://egcs.cygnus.com/pub/egcs/releases/egcs-1.1.2/ \ + ftp://ftp.nluug.nl/pub/languages/egcs/releases/egcs-1.1.2/ \ + ftp://ftp.iij.ad.jp/pub/egcs/releases/egcs-1.1.2/ \ + ftp://ftp.fu-berlin.de/unix/languages/egcs/releases/egcs-1.1.2/ \ + ftp://cambridge.cygnus.com/pub/egcs/releases/egcs-1.1.2/ +DISTFILES= egcs-core-1.1.2${EXTRACT_SUFX} egcs-g++-1.1.2${EXTRACT_SUFX} \ + egcs-g77-1.1.2${EXTRACT_SUFX} egcs-objc-1.1.2${EXTRACT_SUFX} MAINTAINER= obrien@FreeBSD.org @@ -27,54 +27,47 @@ USE_BZIP2= yes .include <bsd.port.pre.mk> -GCC_REV= ${DISTNAME:S/gcc-//g} -LIBSTDCPP_REV= 4 - -.if ${OSVERSION} < 400000 -PLIST_SUB+= CURSES:="@comment " -.else -PLIST_SUB+= CURSES:="" -.endif +EGCS_REV= egcs-2.91.66 +LIBSTDCPP_REV= 2.9.0 .if ${PORTOBJFORMAT} == "elf" .if ${MACHINE_ARCH} == "i386" -PLIST_SUB+= ELF:="" -.else -PLIST_SUB+= ELF:="@comment " +PLIST= ${WRKDIR}/PLIST .endif CONFIGURE_TARGET= ${ARCH}-portbld-freebsd${OSREL} .else CONFIGURE_TARGET= ${ARCH}-portbld-freebsdaout${OSREL} .endif -PLIST_SUB+= EGCS_REV=${GCC_REV} GNU_HOST=${CONFIGURE_TARGET} +PLIST_SUB= EGCS_REV=${EGCS_REV} GNU_HOST=${CONFIGURE_TARGET} GNU_CONFIGURE= yes USE_GMAKE= yes CONFIGURE_ARGS= --with-gnu-as --with-gnu-ld \ - --with-gxx-include-dir=${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/include/g++ + --with-gxx-include-dir=${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/include/g++ .if defined(WANT_SHAREDLIBS) CONFIGURE_ARGS+= --enable-shared .endif -.if defined(WANT_THREADS) -# ?is this an ObjC only thing? -CONFIGURE_ARGS+= --enable-threads=posix -.endif ALL_TARGET= bootstrap -MAN1= cccp.1 g++295.1 g77.1 gcc295.1 +MAN1= cccp.1 g++.1 g77.1 gcc.1 pre-patch: + @${MV} ${WRKSRC}/gcc/config/i386/t-freebsd ${WRKSRC}/gcc/config/ @${MV} ${WRKSRC}/gcc/config/i386/freebsd.h ${WRKSRC}/gcc/config/i386/freebsd-aout.h @${MV} ${WRKSRC}/gcc/config/i386/freebsd-elf.h ${WRKSRC}/gcc/config/i386/freebsd.h + @${CP} ${FILESDIR}/alpha-freebsd-elf.h ${WRKSRC}/gcc/config/alpha/freebsd-elf.h + @${CP} ${FILESDIR}/alpha-freebsd.h ${WRKSRC}/gcc/config/alpha/freebsd.h pre-configure: - @(MAJ=`sysctl -n kern.osreldate | ${SED} -e '/.....$$/s///'` ; \ - ${SED} -e "s:__FreeBSD__[0-9=]*:__FreeBSD__=$${MAJ}:" ${FILESDIR}/freebsd.h \ - >${WRKSRC}/gcc/config/freebsd.h ) - @${CP} ${FILESDIR}/alpha-freebsd.h ${WRKSRC}/gcc/config/alpha/freebsd.h @# Keep from running `autoconf' and `autoheader' since we modified @# configure.in by patching it. @touch ${WRKSRC}/gcc/configure @touch ${WRKSRC}/gcc/cstamp-h.in + @(MAJ=`sysctl -n kern.osreldate | ${SED} -e '/.....$$/s///'` ; \ + ${SED} -e "s:__FreeBSD__:__FreeBSD__=$${MAJ}:" ${FILESDIR}/freebsd.h \ + >${WRKSRC}/gcc/config/freebsd.h ) +.if ${PORTOBJFORMAT} == "elf" && ${MACHINE_ARCH} == "i386" + @${SED} -e 's/^@comment ELF-only://' ${PKGDIR}/pkg-plist >${PLIST} +.endif pre-install: ${MKDIR} ${PREFIX}/info @@ -83,33 +76,26 @@ post-install: @${RM} -f ${PREFIX}/bin/c++ @${MV} -f ${PREFIX}/bin/c++filt ${PREFIX}/bin/g++filt @(for prog in ${PREFIX}/bin/gcc ${PREFIX}/bin/g++ \ - ${PREFIX}/bin/g++filt ${PREFIX}/bin/g77 ${PREFIX}/bin/gcov \ - ${PREFIX}/bin/protoize ${PREFIX}/bin/unprotoize \ - ${PREFIX}/bin/${CONFIGURE_TARGET}-gcc \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/cc1 \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/cc1obj \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/cc1plus \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/cpp \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/collect2 \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/f771 ; \ - do \ - strip $$prog ; \ - done) - ${MV} ${PREFIX}/bin/gcc ${PREFIX}/bin/gcc295 - ${MV} ${PREFIX}/bin/g++ ${PREFIX}/bin/g++295 - ${MV} ${PREFIX}/bin/g77 ${PREFIX}/bin/g77 - ${MV} ${PREFIX}/bin/g++filt ${PREFIX}/bin/g++filt295 - ${RM} -f ${PREFIX}/bin/cpp + ${PREFIX}/bin/g++filt ${PREFIX}/bin/g77 ${PREFIX}/bin/gcov \ + ${PREFIX}/bin/protoize ${PREFIX}/bin/unprotoize \ + ${PREFIX}/bin/${CONFIGURE_TARGET}-gcc \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/cc1 \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/cc1obj \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/cc1plus \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/cpp \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/collect2 \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/f771 ; \ + do strip $$prog ; \ + done) + ln -f ${PREFIX}/bin/gcc ${PREFIX}/bin/egcc + ln -f ${PREFIX}/bin/g++ ${PREFIX}/bin/eg++ ${MV} ${PREFIX}/lib/libiberty.a \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV} - ${MV} -f ${PREFIX}/lib/libstdc++.a.${LIBSTDCPP_REV} \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/libstdc++.a - ${MV} ${PREFIX}/man/man1/gcc.1 ${PREFIX}/man/man1/gcc295.1 - ${MV} ${PREFIX}/man/man1/g++.1 ${PREFIX}/man/man1/g++295.1 - ${MV} ${PREFIX}/man/man1/g77.1 ${PREFIX}/man/man1/g77.1 + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV} + ${MV} -f ${PREFIX}/lib/libstdc++.a \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/libstdc++.a .if defined(WANT_SHAREDLIBS) ${MV} -f ${PREFIX}/lib/libstdc++.so* \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV} + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV} .endif .for info in cpp g77 gcc install-info ${PREFIX}/info/${info}.info ${PREFIX}/info/dir diff --git a/lang/egcs/distinfo b/lang/egcs/distinfo index 4c92893d4f64..55665654d3f3 100644 --- a/lang/egcs/distinfo +++ b/lang/egcs/distinfo @@ -1,5 +1,4 @@ -MD5 (gcc-core-2.95.2.tar.bz2) = ec486554bc3491f1ebbb3b850c12650a -MD5 (gcc-g++-2.95.2.tar.bz2) = eaabfb6b09d5f0ada4d7ce45db8b7e52 -MD5 (gcc-g77-2.95.2.tar.bz2) = 7e7b81a6ded50121b12fb78384b63a6e -MD5 (gcc-java-2.95.2.tar.bz2) = cd19878014d3c60808af8fc8e976c6e5 -MD5 (gcc-objc-2.95.2.tar.bz2) = 44e0ba43e4c9b68e2ecaa7a50c1cddab +MD5 (egcs-core-1.1.2.tar.bz2) = ad12b8eb6014a3f4fd3fe7f9bd6df01d +MD5 (egcs-g++-1.1.2.tar.bz2) = defecf8027a98c18b0ecbff0ab970243 +MD5 (egcs-g77-1.1.2.tar.bz2) = d5e7e645896a549bdbdfebbb01bc3235 +MD5 (egcs-objc-1.1.2.tar.bz2) = 91e12ee2e12fa866aeec41174bcf1dfe diff --git a/lang/egcs/files/alpha-freebsd-elf.h b/lang/egcs/files/alpha-freebsd-elf.h new file mode 100644 index 000000000000..5edb57f05dd0 --- /dev/null +++ b/lang/egcs/files/alpha-freebsd-elf.h @@ -0,0 +1,61 @@ +/* Definitions of target machine for GNU compiler + for Alpha FreeBSD systems using ELF. + Copyright (C) 1998 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (FreeBSD/alpha ELF)"); + +#undef SUB_CPP_PREDEFINES +#define SUB_CPP_PREDEFINES "-D__ELF__" + +#undef SUBTARGET_EXTRA_SPECS +#define SUBTARGET_EXTRA_SPECS \ +{ "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, + +#define ELF_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1" + +#undef LINK_SPEC +#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ + %{O*:-O3} %{!O*:-O1} \ + %{assert*} \ + %{shared:-shared} \ + %{!shared: \ + -dc -dp \ + %{!nostdlib:%{!r*:%{!e*:-e _start}}} \ + %{!static: \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker %(elf_dynamic_linker)}} \ + %{static:-static}}" + +#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}" + +/* We support #pragma. */ +#define HANDLE_SYSV_PRAGMA diff --git a/lang/egcs/files/alpha-freebsd.h b/lang/egcs/files/alpha-freebsd.h index 5ffada3584e4..e6f81cca503a 100644 --- a/lang/egcs/files/alpha-freebsd.h +++ b/lang/egcs/files/alpha-freebsd.h @@ -22,7 +22,9 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ This was taken from the NetBSD configuration, and modified for FreeBSD/alpha by Hidetoshi Shimokawa <simokawa@FreeBSD.ORG> */ -/* $FreeBSD$ */ + +/* Get generic FreeBSD definitions. */ +#include <freebsd.h> #undef OBJECT_FORMAT_COFF @@ -36,7 +38,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ /* 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 '?' #undef ASM_FINAL_SPEC @@ -45,28 +46,20 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ XXX FreeBSD, by convention, shouldn't do __alpha, but lots of applications expect it because that's what OSF/1 does. */ -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (FreeBSD/alpha ELF)"); - #undef TARGET_DEFAULT #define TARGET_DEFAULT (MASK_FP | MASK_FPREGS | MASK_GAS) #undef CPP_PREDEFINES -#define CPP_PREDEFINES \ - "-D__alpha__ -D__alpha -D__ELF__ -Acpu(alpha) -Amachine(alpha)" \ - CPP_FBSD_PREDEFINES - -#undef CPP_SPEC -#define CPP_SPEC "%{posix:-D_POSIX_SOURCE}" +#define CPP_PREDEFINES "\ +-D__alpha__ -D__alpha -Acpu(alpha) -Amachine(alpha) " \ +CPP_FBSD_PREDEFINES \ +SUB_CPP_PREDEFINES /* Make gcc agree with <machine/ansi.h> */ #undef WCHAR_TYPE #define WCHAR_TYPE "int" -#undef WCHAR_UNSIGNED -#define WCHAR_UNSIGNED 0 - #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE 32 @@ -101,7 +94,6 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ fprintf (FILE, "\t.set noat\n"); \ } -#undef ASM_OUTPUT_SOURCE_LINE #define ASM_OUTPUT_SOURCE_LINE(STREAM, LINE) \ alpha_output_lineno (STREAM, LINE) extern void alpha_output_lineno (); @@ -113,18 +105,14 @@ extern void output_file_directive (); .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", \ @@ -138,14 +126,12 @@ do { \ /* 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 @@ -160,7 +146,6 @@ do { \ 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 @@ -179,7 +164,6 @@ do { \ 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)) @@ -188,7 +172,6 @@ do { \ 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 @@ -204,7 +187,6 @@ do { \ 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 @@ -219,7 +201,6 @@ do { \ /* 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 @@ -237,10 +218,8 @@ do { \ 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. @@ -258,9 +237,7 @@ do { \ 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 @@ -269,9 +246,7 @@ do { \ 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 @@ -297,7 +272,6 @@ do { \ extern void text_section (); -#undef CONST_SECTION_FUNCTION #define CONST_SECTION_FUNCTION \ void \ const_section () \ @@ -311,7 +285,6 @@ const_section () \ } \ } -#undef CTORS_SECTION_FUNCTION #define CTORS_SECTION_FUNCTION \ void \ ctors_section () \ @@ -323,7 +296,6 @@ ctors_section () \ } \ } -#undef DTORS_SECTION_FUNCTION #define DTORS_SECTION_FUNCTION \ void \ dtors_section () \ @@ -340,7 +312,6 @@ dtors_section () \ 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" : \ @@ -349,7 +320,6 @@ dtors_section () \ /* 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 (); \ @@ -360,7 +330,6 @@ dtors_section () \ /* 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 (); \ @@ -374,7 +343,6 @@ dtors_section () \ 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) \ @@ -408,20 +376,17 @@ dtors_section () \ #undef SELECT_RTX_SECTION #define SELECT_RTX_SECTION(MODE,RTX) const_section() -/* Define the strings used for the .type, .size and .set directives. +/* Define the strings used for the special svr4 .type and .size 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); \ @@ -442,7 +407,6 @@ dtors_section () \ 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\ @@ -465,83 +429,15 @@ dtors_section () \ 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 +#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}" - -/* Implicit library calls should use memcpy, not bcopy, etc. */ - -#define TARGET_MEM_FUNCTIONS - -/* 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. */ - -#ifndef ASM_DECLARE_RESULT -#define ASM_DECLARE_RESULT(FILE, RESULT) -#endif diff --git a/lang/egcs/files/freebsd.h b/lang/egcs/files/freebsd.h index 17511cd638f5..5719d55a4b9b 100644 --- a/lang/egcs/files/freebsd.h +++ b/lang/egcs/files/freebsd.h @@ -1,4 +1,3 @@ -/* $FreeBSD$ */ /* Base configuration file for all FreeBSD targets. Copyright (C) 1999 Free Software Foundation, Inc. @@ -26,83 +25,59 @@ Boston, MA 02111-1307, USA. */ egcs/gcc/config/i386/freebsd-elf.h version by David O'Brien */ -/* Don't assume anything about the header files. */ +/* Don't assume anything about the header files. */ #undef NO_IMPLICIT_EXTERN_C #define NO_IMPLICIT_EXTERN_C /* This defines which switch letters take arguments. On FreeBSD, most of the normal cases (defined in gcc.c) apply, and we also have -h* and -z* options (for the linker) (comming from svr4). - We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ - -#define FBSD_SWITCH_TAKES_ARG(CHAR) \ - (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ - || (CHAR) == 'h' \ - || (CHAR) == 'z' /* ignored by ld */ \ - || (CHAR) == 'R') + We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ #undef SWITCH_TAKES_ARG -#define SWITCH_TAKES_ARG(CHAR) (FBSD_SWITCH_TAKES_ARG(CHAR)) +#define SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ + || (CHAR) == 'h' \ + || (CHAR) == 'z' /* ignored by ld */ \ + || (CHAR) == 'R') -#define FBSD_WORD_SWITCH_TAKES_ARG(STR) \ +#undef WORD_SWITCH_TAKES_ARG +#define WORD_SWITCH_TAKES_ARG(STR) \ (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \ || !strcmp (STR, "rpath") || !strcmp (STR, "rpath-link") \ || !strcmp (STR, "soname") || !strcmp (STR, "defsym") \ || !strcmp (STR, "assert") || !strcmp (STR, "dynamic-linker")) -#undef WORD_SWITCH_TAKES_ARG -#define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR)) -/* Place spaces around this string. We depend on string splicing to produce - the final CPP_PREDEFINES value. */ #define CPP_FBSD_PREDEFINES " -Dunix -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) " -/* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate - libc, depending on whether we're doing profiling or need threads support. - (simular to the default, except no -lg, and no -p). */ - -#undef LIB_SPEC -#define LIB_SPEC "%{!shared: \ - %{!pg:%{!pthread:%{!kthread:-lc} \ - %{kthread:-lpthread -lc}} \ - %{pthread:-lc_r}} \ - %{pg:%{!pthread:%{!kthread:-lc_p} \ - %{kthread:-lpthread_p -lc_p}} \ - %{pthread:-lc_r_p}}}" - -#ifdef COMMENT_OUT /* only redefine LIBGCC_SPEC for our native GCC */ -/* Tell gcc to locate libgcc.a for us according to the -m rules. */ -#undef LIBGCC_SPEC -#define LIBGCC_SPEC \ - "%{!shared:%{!pthread:%{!kthread:libgcc.a%s}}%{pthread|kthread:libgcc_r.a%s}}" -#endif - /* Code generation parameters. */ /* Don't default to pcc-struct-return, because gcc is the only compiler, and - we want to retain compatibility with older gcc versions + we want to retain compatibility with older gcc versions. (even though the svr4 ABI for the i386 says that records and unions are - returned in memory). */ + returned in memory) */ #undef DEFAULT_PCC_STRUCT_RETURN #define DEFAULT_PCC_STRUCT_RETURN 0 /* Ensure we the configuration knows our system correctly so we can link with - libraries compiled with the native cc. */ + libraries compiled with the native cc. */ #undef NO_DOLLAR_IN_LABEL -/* Use more efficient ``thunks'' to implement C++ vtables. */ +/* Use more efficient ``thunks'' to implement C++ vtables. XXX note that + this setting is claimed to have a few bugs by the EGCS maintainers. They + believe the bugs will be worked out in EGCS 1.2. */ #undef DEFAULT_VTABLE_THUNKS #define DEFAULT_VTABLE_THUNKS 1 +/* Our malloc can allocte pagesized blocks efficiently. The default size + of 4072 bytes is not optimal on the i386 nor the Alpha. */ +#undef OBSTACK_CHUNK_SIZE +#define OBSTACK_CHUNK_SIZE (getpagesize()) + /* Miscellaneous parameters. */ /* Tell libgcc2.c that FreeBSD targets support atexit(3). */ #define HAVE_ATEXIT - -#ifdef BOOTSTRAP_BOMBS_ON_CURRENT -/* Our malloc can allocte pagesized blocks efficiently. The default size - of 4072 bytes is not optimal on the i386 nor the Alpha. */ -#define OBSTACK_CHUNK_SIZE (getpagesize()) -#endif diff --git a/lang/egcs/files/patch-ad b/lang/egcs/files/patch-ad index f8a3b90fdb1a..bea070deb344 100644 --- a/lang/egcs/files/patch-ad +++ b/lang/egcs/files/patch-ad @@ -1,5 +1,5 @@ ---- gcc/config/i386/freebsd-aout.h.orig Tue Jun 1 17:02:37 1999 -+++ gcc/config/i386/freebsd-aout.h Mon Jun 14 14:11:20 1999 +--- gcc/config/i386/freebsd-aout.h.orig Mon Mar 1 14:47:33 1999 ++++ gcc/config/i386/freebsd-aout.h Sat Mar 20 00:27:02 1999 @@ -20,6 +20,10 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ @@ -8,31 +8,25 @@ +/* Get generic FreeBSD definitions. */ +#include <freebsd.h> + - /* This is tested by i386gas.h. */ - #define YES_UNDERSCORES + /* This goes away when the math-emulator is fixed */ + #define TARGET_CPU_DEFAULT 0400 /* TARGET_NO_FANCY_MATH_387 */ -@@ -32,12 +36,10 @@ +@@ -35,7 +39,7 @@ #include "i386/perform.h" - /* This goes away when the math-emulator is fixed */ --#undef TARGET_DEFAULT --#define TARGET_DEFAULT \ -- (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_NO_FANCY_MATH_387) -+#define TARGET_CPU_DEFAULT 0400 /* TARGET_NO_FANCY_MATH_387 */ - #undef CPP_PREDEFINES -#define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)" +#define CPP_PREDEFINES "-Di386 -Acpu(i386) -Amachine(i386)" CPP_FBSD_PREDEFINES /* Like the default, except no -lg. */ #define LIB_SPEC "%{!shared:%{!pg:-lc}%{pg:-lc_p}}" -@@ -87,14 +89,6 @@ +@@ -85,14 +89,6 @@ necessary when compiling PIC code. */ #define JUMP_TABLES_IN_TEXT_SECTION 1 - --/* Don't default to pcc-struct-return, because in FreeBSD we prefer the -- superior nature of the older gcc way. */ +-/* 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 - -/* Ensure we the configuration knows our system correctly so we can link with @@ -41,7 +35,7 @@ /* i386 freebsd still uses old binutils that don't insert nops by default when the .align directive demands to insert extra space in the text -@@ -105,19 +99,18 @@ +@@ -103,19 +99,18 @@ /* Profiling routines, partially copied from i386/osfrose.h. */ @@ -64,7 +58,7 @@ fprintf (FILE, "\tcall mcount\n"); \ } \ } -@@ -135,6 +128,7 @@ +@@ -133,6 +128,7 @@ #define TYPE_ASM_OP ".type" #define SIZE_ASM_OP ".size" @@ -72,7 +66,7 @@ /* The following macro defines the format used to output the second operand of the .type assembler directive. Different svr4 assemblers -@@ -144,6 +138,12 @@ +@@ -142,6 +138,12 @@ #define TYPE_OPERAND_FMT "@%s" @@ -85,9 +79,34 @@ /* 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. */ -@@ -245,3 +245,5 @@ - #define STARTFILE_SPEC \ +@@ -244,29 +246,4 @@ "%{shared:c++rt0.o%s} \ %{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}" -+ + +-/* This is defined when gcc is compiled in the BSD-directory-tree, and must +- * make up for the gap to all the stuff done in the GNU-makefiles. +- */ +- +-#ifdef FREEBSD_NATIVE +- +-#define INCLUDE_DEFAULTS { \ +- { "/usr/include", 0, 0, 0 }, \ +- { "/usr/include/g++", "G++", 1, 1 }, \ +- { 0, 0, 0, 0} \ +- } +- +-#undef MD_EXEC_PREFIX +-#define MD_EXEC_PREFIX "/usr/libexec/" +- +-#undef STANDARD_STARTFILE_PREFIX +-#define STANDARD_STARTFILE_PREFIX "/usr/lib" +- +-#if 0 /* This is very wrong!!! */ +-#define DEFAULT_TARGET_MACHINE "i386-unknown-freebsd_1.0" +-#define GPLUSPLUS_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include" +-#define TOOL_INCLUDE_DIR "/usr/local/i386-unknown-freebsd_1.0/include" +-#define GCC_INCLUDE_DIR "/usr/local/lib/gcc-lib/i386-unknown-freebsd_1.0/2.5.8/include" +-#endif +- +-#endif /* FREEBSD_NATIVE */ +#define MD_STARTFILE_PREFIX "/usr/lib/aout/" diff --git a/lang/egcs/files/patch-af b/lang/egcs/files/patch-af index 533a35a95584..c1f1ba0e855f 100644 --- a/lang/egcs/files/patch-af +++ b/lang/egcs/files/patch-af @@ -1,83 +1,85 @@ ---- gcc/config/i386/freebsd.h.orig Thu Jun 17 05:33:32 1999 -+++ gcc/config/i386/freebsd.h Sat Jul 24 17:59:06 1999 -@@ -135,6 +135,10 @@ +--- gcc/config/i386/freebsd.h.orig Mon Mar 1 14:47:32 1999 ++++ gcc/config/i386/freebsd.h Sun Mar 21 16:58:39 1999 +@@ -21,19 +21,13 @@ + the Free Software Foundation, 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + ++ ++/* Get generic FreeBSD definitions. */ ++#include <freebsd.h> ++ + #undef TARGET_VERSION + #define TARGET_VERSION fprintf (stderr, " (i386 FreeBSD/ELF)"); + +-/* The svr4 ABI for the i386 says that records and unions are returned +- in memory. */ +-/* On FreeBSD, we do not. */ +-#undef DEFAULT_PCC_STRUCT_RETURN +-#define DEFAULT_PCC_STRUCT_RETURN 0 +- +-/* This gets defined in tm.h->linux.h->svr4.h, and keeps us from using +- libraries compiled with the native cc, so undef it. */ +-#undef NO_DOLLAR_IN_LABEL +- + /* This is how to output an element of a case-vector that is relative. + This is only used for PIC code. See comments by the `casesi' insn in + i386.md for an explanation of the expression this outputs. */ +@@ -113,22 +107,19 @@ : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \ : (-1)) -+/* Don't use EGCS's normal profiling code -- we have our own fine-grained -+ basic block profiling. */ +-/* Output assembler code to FILE to increment profiler label # LABELNO +- for profiling a function entry. */ ++/* Tell final.c that we don't need a label passed to mcount. */ +#define NO_PROFILE_DATA -+ - /* Tell final.c that we don't need a label passed to mcount. */ #undef FUNCTION_PROFILER -@@ -162,22 +166,30 @@ + #define FUNCTION_PROFILER(FILE, LABELNO) \ + { \ + if (flag_pic) \ + { \ +- fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%edx\n", \ +- LPREFIX, (LABELNO)); \ +- fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \ ++ fprintf (FILE, "\tcall *.mcount@GOT(%%ebx)\n"); \ + } \ + else \ + { \ +- fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO)); \ +- fprintf (FILE, "\tcall mcount\n"); \ ++ fprintf (FILE, "\tcall .mcount\n"); \ + } \ + } + +@@ -145,26 +136,16 @@ #define WCHAR_TYPE_SIZE BITS_PER_WORD #undef CPP_PREDEFINES -#define CPP_PREDEFINES "-Di386 -Dunix -D__ELF__ -D__FreeBSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)" -+#define CPP_PREDEFINES "-Di386 -Acpu(i386) -Amachine(i386)" CPP_FBSD_PREDEFINES ++#define CPP_PREDEFINES "-Di386 -D__ELF__ -Acpu(i386) -Amachine(i386)" CPP_FBSD_PREDEFINES #undef CPP_SPEC -#define CPP_SPEC "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE}" -+#if TARGET_CPU_DEFAULT == 2 -+#define CPP_SPEC "\ -+ %{!maout: -D__ELF__} \ -+ %{munderscores: -D__UNDERSCORES__} \ -+ %{maout: %{!mno-underscores: -D__UNDERSCORES__}} \ -+ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!m386:-D__i486__}" -+#else -+#define CPP_SPEC "\ -+ %{!maout: -D__ELF__} \ -+ %{munderscores: -D__UNDERSCORES__} \ -+ %{maout: %{!mno-underscores: -D__UNDERSCORES__}} \ -+ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{m486:-D__i486__}" -+#endif -+ -+#undef CC1_SPEC -+#define CC1_SPEC "\ -+ %{gline:%{!g:%{!g0:%{!g1:%{!g2: -g1}}}}} \ -+ %{maout: %{!mno-underscores: %{!munderscores: -munderscores }}}" - --/* This defines which switch letters take arguments. On FreeBSD, most of -- the normal cases (defined in gcc.c) apply, and we also have -h* and -- -z* options (for the linker) (comming from svr4). -- We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ -- --#undef SWITCH_TAKES_ARG --#define SWITCH_TAKES_ARG(CHAR) \ -- (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ -- || (CHAR) == 'h' \ -- || (CHAR) == 'z' \ -- || (CHAR) == 'R') -+#undef ASM_SPEC -+#define ASM_SPEC "%{v*: -v} %{maout: %{fpic:-k} %{fPIC:-k}}" ++#define CPP_SPEC \ ++ "%(cpp_cpu) %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{posix:-D_POSIX_SOURCE} %{m486:-D__i486__}" ++ /* %{pthread:-D_REENTRANT} */ - /* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add - the magical crtbegin.o file (see crtstuff.c) which provides part -@@ -186,11 +198,11 @@ - - #undef STARTFILE_SPEC - #define STARTFILE_SPEC \ + #undef LIB_SPEC +-#if 1 +-/* We no longer link with libc_p.a or libg.a by default. If you +- * want to profile or debug the C library, please add +- * -lc_p or -ggdb to LDFLAGS at the link time, respectively. +- */ +-#define LIB_SPEC \ +- "%{!shared: %{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} \ +- %{!ggdb:-lc} %{ggdb:-lg}}" +-#else + #define LIB_SPEC \ - "%{!shared: \ -- %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ -- %{!p:%{profile:gcrt1.o%s} \ -- %{!profile:crt1.o%s}}}} \ -- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" -+ "%{maout: %{shared:c++rt0.o%s} \ -+ %{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}} \ -+ %{!maout: %{!shared: \ -+ %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} \ -+ crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" - - /* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on - the magical crtend.o file (see crtstuff.c) which provides part of -@@ -200,7 +212,7 @@ - - #undef ENDFILE_SPEC - #define ENDFILE_SPEC \ -- "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" -+ "%{!maout: %{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s}" +- %{mieee-fp:-lieee} %{p:-lgmon -lc_p} %{pg:-lgmon -lc_p} \ +- %{!p:%{!pg:%{!g*:-lc} %{g*:-lg}}}}" +-#endif ++ "%{!shared:%{!pg:%{!pthread:%{!kthread:-lc}%{kthread:-lpthread -lc}}%{pthread:-lc_r}}%{pg:%{!pthread:%{!kthread:-lc_p}%{kthread:-lpthread_p -lc_p}}%{pthread:-lc_r_p}}}" - /* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate - libc, depending on whether we're doing profiling or need threads support. + /* Provide a LINK_SPEC appropriate for FreeBSD. Here we provide support + for the special GCC options -static and -shared, which allow us to diff --git a/lang/egcs/files/patch-ah b/lang/egcs/files/patch-ah new file mode 100644 index 000000000000..fad69668db7b --- /dev/null +++ b/lang/egcs/files/patch-ah @@ -0,0 +1,67 @@ +--- gcc/config/i386/i386.c.orig Sat Sep 5 22:52:05 1998 ++++ gcc/config/i386/i386.c Wed Oct 7 17:06:48 1998 +@@ -51,6 +51,11 @@ + #define CHECK_STACK_LIMIT -1 + #endif + ++#define PIC_REG_USED \ ++ (flag_pic && (current_function_uses_pic_offset_table \ ++ || current_function_uses_const_pool \ ++ || profile_flag || profile_block_flag)) ++ + /* Type of an operand for ix86_{binary,unary}_operator_ok */ + enum reg_mem + { +@@ -1938,13 +1943,11 @@ + char *name ATTRIBUTE_UNUSED; + { + rtx xops[2]; +- int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table +- || current_function_uses_const_pool); + xops[0] = pic_offset_table_rtx; + xops[1] = stack_pointer_rtx; + + /* Deep branch prediction favors having a return for every call. */ +- if (pic_reg_used && TARGET_DEEP_BRANCH_PREDICTION) ++ if (PIC_REG_USED && TARGET_DEEP_BRANCH_PREDICTION) + { + tree prologue_node; + +@@ -2074,8 +2077,7 @@ + register int regno; + int limit; + rtx xops[4]; +- int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table +- || current_function_uses_const_pool); ++ int pic_reg_used = PIC_REG_USED; + long tsize = get_frame_size (); + rtx insn; + int cfa_offset = INCOMING_FRAME_SP_OFFSET, cfa_store_offset = cfa_offset; +@@ -2245,8 +2247,6 @@ + int nregs = 0; + int reglimit = (frame_pointer_needed + ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM); +- int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table +- || current_function_uses_const_pool); + + #ifdef NON_SAVING_SETJMP + if (NON_SAVING_SETJMP && current_function_calls_setjmp) +@@ -2258,7 +2258,7 @@ + + for (regno = reglimit - 1; regno >= 0; regno--) + if ((regs_ever_live[regno] && ! call_used_regs[regno]) +- || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used)) ++ || (regno == PIC_OFFSET_TABLE_REGNUM && PIC_REG_USED)) + nregs++; + + return nregs == 0 || ! frame_pointer_needed; +@@ -2292,8 +2292,7 @@ + register int nregs, limit; + int offset; + rtx xops[3]; +- int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table +- || current_function_uses_const_pool); ++ int pic_reg_used = PIC_REG_USED; + long tsize = get_frame_size (); + + /* Compute the number of registers to pop */ diff --git a/lang/egcs/files/patch-aj b/lang/egcs/files/patch-aj index 4666dfa4e86f..035627fc0908 100644 --- a/lang/egcs/files/patch-aj +++ b/lang/egcs/files/patch-aj @@ -1,14 +1,14 @@ ---- config.guess.orig Sun May 30 09:04:33 1999 -+++ config.guess Mon Jun 21 00:55:29 1999 -@@ -521,9 +521,9 @@ +--- config.guess.orig Mon Mar 1 14:37:59 1999 ++++ config.guess Sat Mar 13 19:28:44 1999 +@@ -478,9 +478,9 @@ exit 0 ;; *:FreeBSD:*:*) - if test -x /usr/bin/objformat -a "elf" = "`/usr/bin/objformat`"; then -- echo ${UNAME_MACHINE}-unknown-freebsdelf -+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` - else -- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` -+ echo ${UNAME_MACHINE}-unknown-freebsdaout`echo ${UNAME_RELEASE}|sed -e 's/[-_].*//'` - fi + if test -x /usr/bin/objformat -a "elf" = "`/usr/bin/objformat`"; then +- echo ${UNAME_MACHINE}-unknown-freebsdelf`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` +- else + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ++ else ++ echo ${UNAME_MACHINE}-unknown-freebsdaout`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + fi exit 0 ;; *:NetBSD:*:*) diff --git a/lang/egcs/files/patch-ak b/lang/egcs/files/patch-ak index c5585f836a0e..2e54beea1a61 100644 --- a/lang/egcs/files/patch-ak +++ b/lang/egcs/files/patch-ak @@ -1,11 +1,11 @@ ---- gcc/configure.orig Tue Jun 8 02:19:23 1999 -+++ gcc/configure Mon Jun 14 23:54:18 1999 -@@ -3058,6 +3058,15 @@ +--- gcc/configure.orig Sun Mar 14 02:59:02 1999 ++++ gcc/configure Sat Mar 20 00:40:05 1999 +@@ -2395,6 +2395,15 @@ thread_file='posix' fi ;; + alpha*-*-freebsd*) -+ tm_file="${tm_file} freebsd.h alpha/freebsd.h" ++ tm_file="${tm_file} freebsd.h alpha/freebsd.h alpha/freebsd-elf.h" + xm_file="${xm_file} xm-freebsd.h" + target_cpu_default="MASK_GAS" + tmake_file="t-freebsd alpha/t-crtbe" @@ -14,29 +14,36 @@ + gas=yes gnu_ld=yes + ;; alpha*-*-netbsd*) - tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsd-elf.h" - target_cpu_default="MASK_GAS" -@@ -3536,17 +3545,17 @@ + tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsdl-elf.h" + xm_file="xm-netbsd.h ${xm_file}" +@@ -2851,21 +2860,21 @@ # Next line turned off because both 386BSD and BSD/386 use GNU ld. # use_collect2=yes ;; - i[34567]86-*-freebsdelf*) -- tm_file="i386/i386.h i386/att.h svr4.h i386/freebsd-elf.h i386/perform.h" -+ i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd[12] | i[34567]86-*-freebsdaout*) +- tm_file="i386/i386.h i386/att.h linux.h i386/freebsd-elf.h i386/perform.h" ++ i[34567]86-*-freebsdaout*) + tm_file=i386/freebsd-aout.h + # On FreeBSD, the headers are already ok, except for math.h. + fixincludes=fixinc.wrap +- extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" +- tmake_file=i386/t-freebsd +- gas=yes +- gnu_ld=yes +- stabs=yes + tmake_file=t-freebsd -+ ;; -+ i[34567]86-*-freebsd[3-9].* | i[34567]86-*-freebsd[3-9] | i[34567]86-*-freebsd* | i[34567]86-*-freebsdelf*) -+ 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 - gnu_ld=yes - stabs=yes -- ;; -- i[34567]86-*-freebsd*) + ;; + i[34567]86-*-freebsd*) - tm_file=i386/freebsd.h -- tmake_file=t-freebsd ++ tm_file="i386/i386.h i386/att.h linux.h i386/freebsd.h i386/perform.h" + # On FreeBSD, the headers are already ok, except for math.h. + fixincludes=fixinc.wrap +- tmake_file=i386/t-freebsd ++ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" ++ tmake_file=t-freebsd ++ gas=yes ++ gnu_ld=yes ++ stabs=yes ;; i[34567]86-*-netbsd*) tm_file=i386/netbsd.h diff --git a/lang/egcs/files/patch-al b/lang/egcs/files/patch-al index de95c4439b95..c8a195127ed0 100644 --- a/lang/egcs/files/patch-al +++ b/lang/egcs/files/patch-al @@ -1,11 +1,11 @@ ---- gcc/configure.in.orig Mon Jun 7 14:37:24 1999 -+++ gcc/configure.in Mon Jun 14 19:25:53 1999 -@@ -625,6 +625,15 @@ +--- gcc/configure.in.orig Sun Mar 7 16:22:22 1999 ++++ gcc/configure.in Sat Mar 20 00:40:58 1999 +@@ -416,6 +416,15 @@ thread_file='posix' fi ;; + alpha*-*-freebsd*) -+ tm_file="${tm_file} freebsd.h alpha/freebsd.h" ++ tm_file="${tm_file} freebsd.h alpha/freebsd.h alpha/freebsd-elf.h" + xm_file="${xm_file} xm-freebsd.h" + target_cpu_default="MASK_GAS" + tmake_file="t-freebsd alpha/t-crtbe" @@ -14,34 +14,36 @@ + gas=yes gnu_ld=yes + ;; alpha*-*-netbsd*) - tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsd-elf.h" - target_cpu_default="MASK_GAS" -@@ -1136,20 +1145,20 @@ + tm_file="${tm_file} alpha/elf.h alpha/netbsd.h alpha/netbsdl-elf.h" + xm_file="xm-netbsd.h ${xm_file}" +@@ -872,21 +881,21 @@ + # Next line turned off because both 386BSD and BSD/386 use GNU ld. # use_collect2=yes ;; - changequote(,)dnl -- i[34567]86-*-freebsdelf*) -++ i[34567]86-*-freebsd[12].* | i[34567]86-*-freebsd[12] | i[34567]86-*-freebsdaout*) - changequote([,])dnl -- tm_file="i386/i386.h i386/att.h svr4.h i386/freebsd-elf.h i386/perform.h" +- i[[34567]]86-*-freebsdelf*) +- tm_file="i386/i386.h i386/att.h linux.h i386/freebsd-elf.h i386/perform.h" ++ i[[34567]]86-*-freebsdaout*) ++ tm_file=i386/freebsd-aout.h + # On FreeBSD, the headers are already ok, except for math.h. + fixincludes=fixinc.wrap - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+ tm_file=i386/freebsd.h - tmake_file=t-freebsd +- tmake_file=i386/t-freebsd - gas=yes - gnu_ld=yes - stabs=yes ++ tmake_file=t-freebsd ;; - changequote(,)dnl -- i[34567]86-*-freebsd*) -+ i[34567]86-*-freebsd[3-9].* | i[34567]86-*-freebsd[3-9] | i[34567]86-*-freebsd* | i[34567]86-*-freebsdelf* | i[34567]86-*-freebsd*) - changequote([,])dnl + i[[34567]]86-*-freebsd*) - tm_file=i386/freebsd.h -+ tm_file="i386/i386.h i386/att.h svr4.h freebsd.h i386/freebsd.h i386/perform.h" ++ tm_file="i386/i386.h i386/att.h linux.h i386/freebsd.h i386/perform.h" + # On FreeBSD, the headers are already ok, except for math.h. + fixincludes=fixinc.wrap +- tmake_file=i386/t-freebsd + extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - tmake_file=t-freebsd ++ tmake_file=t-freebsd + gas=yes + gnu_ld=yes + stabs=yes ;; - changequote(,)dnl - i[34567]86-*-netbsd*) + i[[34567]]86-*-netbsd*) + tm_file=i386/netbsd.h diff --git a/lang/egcs/files/patch-am b/lang/egcs/files/patch-am index c3c4553367c9..f69f6ffa7798 100644 --- a/lang/egcs/files/patch-am +++ b/lang/egcs/files/patch-am @@ -1,7 +1,12 @@ ---- gcc/config/t-freebsd.orig Tue Jun 1 17:02:39 1999 -+++ gcc/config/t-freebsd Tue Jun 22 11:05:25 1999 -@@ -1,4 +1,2 @@ - # Don't run fixproto - STMP_FIXPROTO = --# Use only native include files --USER_H = $(EXTRA_HEADERS) $(LANG_EXTRA_HEADERS) +--- libstdc++/stl/stl_rope.h.orig Fri Feb 20 03:13:44 1998 ++++ libstdc++/stl/stl_rope.h Sun Feb 28 03:50:24 1999 +@@ -702,7 +702,8 @@ + __rope_iterator_base<charT,Alloc>(r.tree_ptr, pos) {} + __rope_const_iterator& operator= (const __rope_const_iterator & x) { + if (0 != x.buf_ptr) { +- *this = x; ++ *(static_cast<__rope_iterator_base<charT,Alloc>*>(this)) = x; ++ // bugfix by Kevin Atkinosn (kevina@clark.net) was *this = x; + } else { + current_pos = x.current_pos; + root = x.root; diff --git a/lang/egcs/files/patch-an b/lang/egcs/files/patch-an deleted file mode 100644 index 36378bfeee3f..000000000000 --- a/lang/egcs/files/patch-an +++ /dev/null @@ -1,11 +0,0 @@ ---- gcc/fixinc/mkfixinc.sh.orig Sat May 15 11:21:35 1999 -+++ gcc/fixinc/mkfixinc.sh Thu Jun 10 19:49:25 1999 -@@ -40,7 +40,7 @@ - - *-*-netbsd* | \ - alpha*-*-linux-gnulibc1* | \ -- i[34567]86-*-freebsd* | \ -+ *-*-freebsd* | \ - i[34567]86-*-netbsd* | i[34567]86-*-openbsd* | \ - i[34567]86-*-solaris2* | \ - sparcv9-*-solaris2* | \ diff --git a/lang/egcs/files/patch-ap b/lang/egcs/files/patch-ap deleted file mode 100644 index f7a486910063..000000000000 --- a/lang/egcs/files/patch-ap +++ /dev/null @@ -1,26 +0,0 @@ ---- gcc/ginclude/stddef.h.orig Wed Dec 16 13:19:25 1998 -+++ gcc/ginclude/stddef.h Tue Jun 22 11:05:25 1999 -@@ -109,7 +109,6 @@ - #define _T_PTRDIFF - #define __PTRDIFF_T - #define _PTRDIFF_T_ --#define _BSD_PTRDIFF_T_ - #define ___int_ptrdiff_t_h - #define _GCC_PTRDIFF_T - #ifndef __PTRDIFF_TYPE__ -@@ -156,7 +155,6 @@ - #define _T_SIZE - #define __SIZE_T - #define _SIZE_T_ --#define _BSD_SIZE_T_ - #define _SIZE_T_DEFINED_ - #define _SIZE_T_DEFINED - #define ___int_size_t_h -@@ -217,7 +215,6 @@ - #define _T_WCHAR - #define __WCHAR_T - #define _WCHAR_T_ --#define _BSD_WCHAR_T_ - #define _WCHAR_T_DEFINED_ - #define _WCHAR_T_DEFINED - #define _WCHAR_T_H diff --git a/lang/egcs/files/patch-aq b/lang/egcs/files/patch-aq deleted file mode 100644 index 32f0788b5379..000000000000 --- a/lang/egcs/files/patch-aq +++ /dev/null @@ -1,11 +0,0 @@ ---- gcc/ginclude/stdarg.h.orig Fri May 7 18:52:35 1999 -+++ gcc/ginclude/stdarg.h Wed Jun 23 16:38:00 1999 -@@ -67,7 +67,7 @@ - - #ifndef __GNUC_VA_LIST - #define __GNUC_VA_LIST --#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__) -+#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__) || defined(__FreeBSD__) - typedef char *__gnuc_va_list; - #else - typedef void *__gnuc_va_list; diff --git a/lang/egcs/files/patch-ba b/lang/egcs/files/patch-ba new file mode 100644 index 000000000000..9ad05014b6e6 --- /dev/null +++ b/lang/egcs/files/patch-ba @@ -0,0 +1,10 @@ +--- libstdc++/configure.in.orig Thu Feb 18 11:40:03 1999 ++++ libstdc++/configure.in Thu Feb 18 11:44:01 1999 +@@ -54,6 +54,7 @@ + *-*-hpux*) frags="${frags} hpux.ml" ;; + *-*-irix[56]*) frags="${frags} irix5.ml" ;; + *-*-linux*aout*) ;; ++ *-*-freebsd*) frags="${frags} freebsd.ml" ;; + *-*-linux*) frags="${frags} linux.ml" ;; + *-*-sysv4*) frags="${frags} elf.ml" ;; + *-*-solaris*) frags="${frags} sol2shm.ml" ;; diff --git a/lang/egcs/files/patch-bb b/lang/egcs/files/patch-bb new file mode 100644 index 000000000000..193a278d3c44 --- /dev/null +++ b/lang/egcs/files/patch-bb @@ -0,0 +1,9 @@ +--- libstdc++/config/freebsd.ml.orig Thu Feb 18 11:44:11 1999 ++++ libstdc++/config/freebsd.ml Thu Feb 18 11:44:17 1999 +@@ -0,0 +1,6 @@ ++# Elf with shared libm, so we can link it into the shared libstdc++. ++ ++LIBS = $(ARLIB) $(SHLIB) $(SHLINK) mshlink ++SHFLAGS = -Wl,-soname,$(MSHLINK) ++SHDEPS = -lm ++DEPLIBS = ../$(SHLIB) diff --git a/lang/egcs/files/patch-bc b/lang/egcs/files/patch-bc index c3159ca2788c..c6faefae79d6 100644 --- a/lang/egcs/files/patch-bc +++ b/lang/egcs/files/patch-bc @@ -1,16 +1,16 @@ ---- libstdc++/Makefile.in.orig Sat Jul 17 22:50:47 1999 -+++ libstdc++/Makefile.in Tue Jul 20 07:56:00 1999 +--- libstdc++/Makefile.in.orig Sat Jul 11 19:20:49 1998 ++++ libstdc++/Makefile.in Sun Mar 14 21:48:39 1999 @@ -14,7 +14,7 @@ # along with this library; see the file COPYING. If not, write to the Free # Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. --VERSION = 2.10.0 -+VERSION = 4 - INTERFACE = 3 +-VERSION = 2.9.0 ++VERSION = 3 - gxx_include_dir=${includedir}/g++ -@@ -111,7 +111,8 @@ - $(LN_S) $(SHLIB) $(SHLINK) || cp $(ARLIB) $(ARLINK) + OBJS = cstringi.o stdexcepti.o cstdlibi.o cmathi.o stlinst.o + SUBLIBS = $(STAMP)-string $(STAMP)-complx +@@ -98,7 +98,8 @@ + ln -f -s $(SHLIB) $(SHLINK) mshlink: - @$(MAKE) $(MSHLINK) "SHLINK=$(MSHLINK)" @@ -19,16 +19,15 @@ $(IO_DIR)/iostream.list: force cd $(IO_DIR) ; $(MAKE) $(FLAGS_TO_PASS) iostream.list -@@ -336,11 +337,7 @@ - || cp $${RELINSTALLDIR}$(ARLIB) $${INSTALLLINKDIR}$(MULTISUBDIR)/$$FILE ; \ - fi; \ +@@ -281,10 +282,7 @@ + if [ $$FILE = $(SHLINK) ] ; then \ + ln -f -s $(SHLIB) $${INSTALLDIR}$(MULTISUBDIR)/$$FILE ; \ elif [ $$FILE = mshlink ]; then \ - for FILE in $(MSHLINK) ; do \ - rm -f $${INSTALLDIR}$(MULTISUBDIR)/$$FILE ; \ -- $(LN_S) $(SHLIB) $${INSTALLDIR}$(MULTISUBDIR)/$$FILE \ -- || cp $(SHLIB) $${INSTALLDIR}$(MULTISUBDIR)/$$FILE ; \ +- ln -f -s $(SHLIB) $${INSTALLDIR}$(MULTISUBDIR)/$$FILE ; \ - done; \ + true; \ - elif [ $$FILE = marlink ]; then \ - for FILE in $(MARLINK) ; do \ - rm -f $${INSTALLDIR}$(MULTISUBDIR)/$$FILE ; \ + elif [ $$FILE = $(SHLIB) ]; then \ + $(INSTALL_PROGRAM) $$FILE $${INSTALLDIR}$(MULTISUBDIR)/$$FILE ; \ + : On the HP, shared libraries must be mode 555. ;\ diff --git a/lang/egcs/files/patch-fa b/lang/egcs/files/patch-fa index b4cc8fd420bd..7f5e0e611ae8 100644 --- a/lang/egcs/files/patch-fa +++ b/lang/egcs/files/patch-fa @@ -1,15 +1,15 @@ ---- gcc/c-common.c.orig Tue Sep 7 01:11:16 1999 -+++ gcc/c-common.c Sun Nov 26 15:35:38 2000 -@@ -64,7 +64,7 @@ +--- gcc/c-common.c.orig Mon Feb 15 16:40:05 1999 ++++ gcc/c-common.c Tue Mar 30 03:35:22 1999 +@@ -61,7 +61,7 @@ int, int, int)); static void init_attributes PROTO((void)); static void record_function_format PROTO((tree, tree, enum format_type, - int, int)); + int, int, int)); static void record_international_format PROTO((tree, tree, int)); - static tree c_find_base_decl PROTO((tree)); - static int default_valid_lang_attribute PROTO ((tree, tree, tree, tree)); -@@ -715,6 +715,7 @@ + + /* Keep a stack of if statements. We record the number of compound +@@ -669,6 +669,7 @@ = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (args))); int format_num; int first_arg_num; @@ -17,7 +17,7 @@ enum format_type format_type; tree argument; int arg_num; -@@ -728,7 +729,7 @@ +@@ -682,7 +683,7 @@ if (TREE_CODE (format_type_id) != IDENTIFIER_NODE) { @@ -26,8 +26,8 @@ continue; } else -@@ -736,12 +737,26 @@ - const char *p = IDENTIFIER_POINTER (format_type_id); +@@ -690,12 +691,26 @@ + 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); -@@ -812,7 +827,8 @@ + error ("`%s' is an unrecognized format function type", p); +@@ -766,7 +781,8 @@ record_function_format (DECL_NAME (decl), DECL_ASSEMBLER_NAME (decl), @@ -63,7 +63,7 @@ break; } -@@ -1090,6 +1106,11 @@ +@@ -1010,6 +1026,11 @@ } format_char_info; static format_char_info print_char_table[] = { @@ -75,7 +75,7 @@ { "di", 0, T_I, T_I, T_I, T_L, T_LL, T_LL, T_ST, "-wp0 +" }, { "oxX", 0, T_UI, T_UI, T_UI, T_UL, T_ULL, T_ULL, T_ST, "-wp0#" }, { "u", 0, T_UI, T_UI, T_UI, T_UL, T_ULL, T_ULL, T_ST, "-wp0" }, -@@ -1150,6 +1171,7 @@ +@@ -1070,6 +1091,7 @@ tree name; /* identifier such as "printf" */ tree assembler_name; /* optional mangled identifier (for C++) */ enum format_type format_type; /* type of format (printf, scanf, etc.) */ @@ -83,7 +83,7 @@ int format_num; /* number of format argument */ int first_arg_num; /* number of first arg (zero for varargs) */ } function_format_info; -@@ -1182,25 +1204,25 @@ +@@ -1102,25 +1124,25 @@ init_function_format_info () { record_function_format (get_identifier ("printf"), NULL_TREE, @@ -119,7 +119,7 @@ record_international_format (get_identifier ("gettext"), NULL_TREE, 1); record_international_format (get_identifier ("dgettext"), NULL_TREE, 2); -@@ -1217,11 +1239,12 @@ +@@ -1137,11 +1159,12 @@ (e.g. for varargs such as vfprintf). */ static void @@ -133,7 +133,7 @@ int format_num; int first_arg_num; { -@@ -1245,6 +1268,7 @@ +@@ -1165,6 +1188,7 @@ } info->format_type = format_type; @@ -141,150 +141,17 @@ info->format_num = format_num; info->first_arg_num = first_arg_num; } -@@ -1292,6 +1316,21 @@ - warning ("too few arguments for format"); - } - -+static function_format_info * -+find_function_format (name, assembler_name) -+ tree name; -+ tree assembler_name; -+{ -+ function_format_info *info; -+ -+ for (info = function_format_list; info; info = info->next) -+ if (info->assembler_name -+ ? (info->assembler_name == assembler_name) -+ : (info->name == name)) -+ return info; -+ return 0; -+} -+ - /* Check the argument list of a call to printf, scanf, etc. - NAME is the function identifier. - ASSEMBLER_NAME is the function's assembler identifier. -@@ -1307,17 +1346,10 @@ - function_format_info *info; - - /* See if this function is a format function. */ -- for (info = function_format_list; info; info = info->next) -- { -- if (info->assembler_name -- ? (info->assembler_name == assembler_name) -- : (info->name == name)) -- { -- /* Yup; check it. */ -- check_format_info (info, params); -- break; -- } -- } -+ info = find_function_format (name, assembler_name); -+ -+ if (info) -+ check_format_info (info, params); - } - - /* Check the argument list of a call to printf, scanf, etc. -@@ -1361,6 +1393,7 @@ - return; +@@ -1314,7 +1338,8 @@ - /* We can only check the format if it's a string constant. */ -+ again: - while (TREE_CODE (format_tree) == NOP_EXPR) - format_tree = TREE_OPERAND (format_tree, 0); /* strip coercion */ - -@@ -1396,16 +1429,73 @@ - } - } - -+ if (TREE_CODE (format_tree) == COND_EXPR) -+ { -+ format_tree = TREE_OPERAND(format_tree, 1); -+ goto again; -+ } -+ if (integer_zerop (format_tree)) { - warning ("null format string"); + if (!info->null_format_ok) + warning ("null format string"); -+ return; -+ } -+ if (TREE_CODE (format_tree) != ADDR_EXPR) -+ { -+ if ((info->first_arg_num == 0) && -+ (TREE_CODE(format_tree) == PARM_DECL)) -+ { -+ function_format_info *i2; -+ tree p; -+ int n; -+ -+ /* Now, we need to determine if the current function is printf-like, -+ and, if so, if the parameter we have here is as a parameter of -+ the current function and is in the argument slot declared to -+ contain the format argument. */ -+ -+ p = current_function_decl; -+ -+ i2 = find_function_format (p->decl.name, p->decl.assembler_name); -+ -+ if (i2 == NULL) -+ { -+ if (warn_format > 1) -+ warning("non-constant format parameter"); -+ } -+ else -+ { -+ for (n = 1, p = current_function_decl->decl.arguments; -+ (n < i2->format_num) && (p != NULL); -+ n++, p = TREE_CHAIN(p)) -+ ; -+ if ((p == NULL) || (n != i2->format_num)) -+ warning("can't find format arg for current format function"); -+ else if (p != format_tree) -+ warning("format argument passed here is not declared as format argument"); -+ } -+ } -+ else if ((info->format_type != strftime_format_type) && -+ (warn_format > 1)) -+ warning("non-constant format parameter"); return; } -- if (TREE_CODE (format_tree) != ADDR_EXPR) -- return; - format_tree = TREE_OPERAND (format_tree, 0); -- if (TREE_CODE (format_tree) != STRING_CST) -- return; -+ if (warn_format > 1 && -+ (TREE_CODE (format_tree) == VAR_DECL) && -+ TREE_READONLY(format_tree) && -+ (DECL_INITIAL(format_tree) != NULL) && -+ TREE_CODE(DECL_INITIAL(format_tree)) == STRING_CST) -+ format_tree = DECL_INITIAL(format_tree); -+ -+ if (TREE_CODE (format_tree) != STRING_CST) -+ { -+ if ((info->format_type != strftime_format_type) && -+ (warn_format > 1)) -+ warning("non-constant format parameter"); -+ return; -+ } - format_chars = TREE_STRING_POINTER (format_tree); - format_length = TREE_STRING_LENGTH (format_tree); - if (format_length <= 1) -@@ -1433,7 +1523,10 @@ - if (format_chars - TREE_STRING_POINTER (format_tree) != format_length) - warning ("embedded `\\0' in format"); - if (info->first_arg_num != 0 && params != 0 && ! has_operand_number) -- warning ("too many arguments for format"); -+ { -+ if (warn_format_extra_args) -+ warning ("too many arguments for format"); -+ } - return; - } - if (*format_chars++ != '%') -@@ -1569,12 +1662,13 @@ + if (TREE_CODE (format_tree) != ADDR_EXPR) +@@ -1485,12 +1510,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. */ @@ -299,7 +166,7 @@ } } else -@@ -1619,6 +1713,53 @@ +@@ -1535,6 +1561,53 @@ } } } @@ -353,7 +220,7 @@ aflag = 0; -@@ -1688,7 +1829,8 @@ +@@ -1604,7 +1677,8 @@ switch (info->format_type) { case printf_format_type: @@ -363,11 +230,3 @@ break; case scanf_format_type: fci = scan_char_table; -@@ -1787,7 +1929,6 @@ - warning ("use of `%c' length character with `%c' type character", - length_char, format_char); - -- /* Finally. . .check type of argument against desired type! */ - if (info->first_arg_num == 0) - continue; - if (fci->pointer_count == 0 && wanted_type == void_type_node) diff --git a/lang/egcs/files/patch-fb b/lang/egcs/files/patch-fb index dae6d331898c..b86da95cfa90 100644 --- a/lang/egcs/files/patch-fb +++ b/lang/egcs/files/patch-fb @@ -1,13 +1,12 @@ ---- gcc/flags.h.orig Sun Jan 31 09:46:18 1999 -+++ gcc/flags.h Tue Mar 30 13:17:11 1999 -@@ -137,6 +137,10 @@ +--- gcc/flags.h.orig Sat Feb 27 10:33:03 1999 ++++ gcc/flags.h Tue Mar 30 03:36:49 1999 +@@ -449,6 +449,9 @@ - extern int warn_aggregate_return; - -+/* Nonzero means that -Wformat accepts certain non-ANSI formats. */ + /* Do the full regmove optimization pass. */ + extern int flag_regmove; + ++/* Nonzero means that -Wformat accepts certain non-ANSI formats. */ +extern int flag_format_extensions; -+ - /* Nonzero if generating code to do profiling. */ + + /* Other basic status info about current function. */ - extern int profile_flag; diff --git a/lang/egcs/files/patch-fc b/lang/egcs/files/patch-fc index 081cdcbabc52..24fefb020007 100644 --- a/lang/egcs/files/patch-fc +++ b/lang/egcs/files/patch-fc @@ -1,31 +1,22 @@ ---- gcc/toplev.c.orig Thu Oct 21 00:01:37 1999 -+++ gcc/toplev.c Sun Nov 26 15:25:45 2000 -@@ -771,6 +771,9 @@ +--- gcc/toplev.c.orig Sat Feb 27 10:33:02 1999 ++++ gcc/toplev.c Tue Mar 30 03:37:57 1999 +@@ -728,6 +728,10 @@ - int flag_no_ident = 0; + extern int flag_dump_unnumbered; +/* Nonzero means that -Wformat accepts certain system-dependent formats. */ ++ +int flag_format_extensions = 0; + + /* Table of supported debugging formats. */ static struct - { -@@ -971,6 +974,8 @@ +@@ -915,6 +919,8 @@ "Generate code to check every memory access" }, {"prefix-function-name", &flag_prefix_function_name, 1, "Add a prefix to all function names" }, + {"format-extensions", &flag_format_extensions, 1, + "-Wformat accepts certain FreeBSD system-dependent formats" }, - {"dump-unnumbered", &flag_dump_unnumbered, 1, - "Suppress output of instruction numbers and line number notes in debugging dumps"}, - {"instrument-functions", &flag_instrument_function_entry_exit, 1, -@@ -1051,7 +1056,9 @@ - { "-Wconversion", "Warn about possibly confusing type conversions" }, - { "-Wno-conversion", "" }, - { "-Wformat", "Warn about printf format anomalies" }, -+ { "-Wnon-const-format", "Warn about printf-like format strings" }, - { "-Wno-format", "" }, -+ { "-Wno-format-extra-args", "" }, - { "-Wimplicit-function-declaration", - "Warn about implicit function declarations" }, - { "-Wno-implicit-function-declaration", "" }, + {"dump-unnumbered", &flag_dump_unnumbered, 1} + }; + diff --git a/lang/egcs/pkg-comment b/lang/egcs/pkg-comment index 5386f1ed981f..c23b39554386 100644 --- a/lang/egcs/pkg-comment +++ b/lang/egcs/pkg-comment @@ -1 +1 @@ -GNU compiler suite +EGCS enhanced version of the GNU compiler suite diff --git a/lang/egcs/pkg-descr b/lang/egcs/pkg-descr index 4ff8902c47b5..0429360a5404 100644 --- a/lang/egcs/pkg-descr +++ b/lang/egcs/pkg-descr @@ -1,10 +1,17 @@ -This is GNU's latest offering of GCC (the GNU Compiler Collection). -Version 2.95 contains many improvements and features not found in the -gcc-2.7.2 and gcc-2.8.1 compliers. C++ support, is vastly improved, in -particular template support is worlds above that that of gcc-2.7.2. +Egcs (pronounced "eggs") is an enhanced version of the GNU compiler +suite, including gcc, g++, and g77. Egcs is based on a recent +snapshot of the gcc-2.8 development sources; it contains nearly +all of the new features found in gcc-2.8. Egcs also contains many +improvements and features not found in gcc-2.7 and even the soon to be +released gcc-2.8 compilers. C++ support, and in particular template +support, is vastly improved over gcc-2.7. -For more details, see <http://egcs.cygnus.com/>. +For more details, see <http://www.cygnus.com/egcs/>. -- David O'Brien <obrien@FreeBSD.org> +Beware: This port installs new versions of "gcc", "g++", "c++" and +so forth into the "${PREFIX}/bin" directory. Mind your PATHs if you +don't want to use this compiler by default. -WWW: http://egcs.cygnus.com/ +- John Polstra <jdp@polstra.com> + +WWW: http://egcs.cygnus.com diff --git a/lang/egcs/pkg-plist b/lang/egcs/pkg-plist index 86d7c8841830..0c1c86753fa7 100644 --- a/lang/egcs/pkg-plist +++ b/lang/egcs/pkg-plist @@ -1,26 +1,23 @@ -@comment $FreeBSD$ -bin/g++295 -bin/g++filt295 +@comment $Id: PLIST,v 1.21 1998/12/26 20:10:02 obrien Exp $ +bin/g++filt +bin/g++ +bin/eg++ bin/g77 -bin/gcc295 -bin/%%GNU_HOST%%-gcc -bin/gcj -bin/gcjh +bin/gcc +bin/egcc bin/gcov -bin/jv-scan -bin/jcf-dump +bin/%%GNU_HOST%%-gcc bin/protoize bin/unprotoize %%GNU_HOST%%/include/_G_config.h %%GNU_HOST%%/include/assert.h -%%CURSES:%%lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/curses.h +%%GNU_HOST%%/lib/libiberty.a lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/PlotFile.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/SFile.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/algo.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/algobase.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/algorithm lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/alloc.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/bitset lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/builtinbuf.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/bvector.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/cassert @@ -104,18 +101,8 @@ lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/complext.cc lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/complext.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/dcomplex.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/fcomplex.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/gslice.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/gslice_array.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/indirect_array.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/ldcomplex.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/mask_array.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/slice.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/slice_array.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/std_valarray.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/straits.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/valarray_array.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/valarray_array.tcc -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std/valarray_meta.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/stdexcept lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/stdiostream.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/stl.h @@ -160,7 +147,6 @@ lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/tempbuf.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/tree.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/type_traits.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/utility -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/valarray lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/vector lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/vector.h @unexec install-info --delete %D/info/gcc.info %D/info/dir @@ -184,7 +170,6 @@ info/g77.info-18 info/g77.info-19 info/g77.info-2 info/g77.info-20 -info/g77.info-21 info/g77.info-3 info/g77.info-4 info/g77.info-5 @@ -215,7 +200,6 @@ info/gcc.info-26 info/gcc.info-27 info/gcc.info-28 info/gcc.info-29 -info/gcc.info-30 info/gcc.info-3 info/gcc.info-4 info/gcc.info-5 @@ -232,17 +216,16 @@ lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/cc1obj lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/cc1plus lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/cpp lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/collect2 -%%ELF:%%lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/crtbegin.o -%%ELF:%%lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/crtbeginS.o -%%ELF:%%lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/crtend.o -%%ELF:%%lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/crtendS.o +@comment ELF-only:lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/crtbegin.o +@comment ELF-only:lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/crtbeginS.o +@comment ELF-only:lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/crtend.o +@comment ELF-only:lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/crtendS.o lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/f771 lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/README lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/assert.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/exception lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/float.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g2c.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/iso646.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/limits.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/math.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/new @@ -258,34 +241,8 @@ lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/objc/objc.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/objc/sarray.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/objc/thr.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/objc/typedstream.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/proto.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/stdarg.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/stdbool.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/stddef.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/syslimits.h lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/typeinfo -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-alpha.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-arc.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-c4x.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-clipper.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-h8300.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-i860.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-i960.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-m32r.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-m88k.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-mips.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-mn10200.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-mn10300.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-pa.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-ppc.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-pyr.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-sh.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-sparc.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-spur.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/va-v850.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/varargs.h -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/jc1 -lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/jvgenmain lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/libgcc.a lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/libobjc.a lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/specs @@ -295,6 +252,7 @@ lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/libg2c.a lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/libiberty.a lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/libstdc++.a @dirrm %%GNU_HOST%%/include +@dirrm %%GNU_HOST%%/lib @dirrm %%GNU_HOST%% @dirrm lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/objc @dirrm lib/gcc-lib/%%GNU_HOST%%/%%EGCS_REV%%/include/g++/std |