diff options
Diffstat (limited to 'lang/gcc33')
| -rw-r--r-- | lang/gcc33/Makefile | 31 | ||||
| -rw-r--r-- | lang/gcc33/distinfo | 10 | ||||
| -rw-r--r-- | lang/gcc33/files/alpha-freebsd.h | 581 | ||||
| -rw-r--r-- | lang/gcc33/files/patch-ad | 10 | ||||
| -rw-r--r-- | lang/gcc33/files/patch-ak | 29 | ||||
| -rw-r--r-- | lang/gcc33/files/patch-al | 35 | ||||
| -rw-r--r-- | lang/gcc33/files/patch-fa | 100 | 
7 files changed, 173 insertions, 623 deletions
diff --git a/lang/gcc33/Makefile b/lang/gcc33/Makefile index 765d810dcb04..2e1cc84f07be 100644 --- a/lang/gcc33/Makefile +++ b/lang/gcc33/Makefile @@ -6,7 +6,7 @@  # $FreeBSD$  # -SNAPDATE=	2000-08-28 +SNAPDATE=	2000-10-02  SNAPVER=	${SNAPDATE:S/-//g}  PORTNAME=	gcc-devel @@ -28,9 +28,15 @@ MAINTAINER=	obrien@FreeBSD.org  NO_CDROM=	'dated material' -EGCS_REV=	2.96 -LIBSTDCPP_REV=	2.10.0 -WRKSRC=		${WRKDIR}/egcs-${SNAPVER} +EGCS_REV=	2.97 +LIBSTDCPP_REV=	4 +SRCDIR=		${WRKDIR}/egcs-${SNAPVER} +WRKSRC=		${WRKDIR}/build +PATCH_ARGS=	-d ${SRCDIR} -E ${PATCH_STRIP} +.if !defined(PATCH_DEBUG) +PATCH_ARGS+=	--forward --quiet +.endif +CONFIGURE_SCRIPT=	../egcs-${SNAPVER}/configure  .include <bsd.port.pre.mk> @@ -58,22 +64,19 @@ CONFIGURE_ARGS+= --enable-threads=posix  ALL_TARGET=	bootstrap  MAN1=		ecpp.1 eg++.1 eg77.1 egcc.1 -pre-patch: -	@${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 -  pre-configure:  	@(MAJ=`sysctl -n kern.osreldate | ${SED} -e '/.....$$/s///'` ; \  	    ${PERL} -pi.orig -e "s:__FreeBSD__:__FreeBSD__=$${MAJ}:" \ -	    ${WRKSRC}/gcc/config/freebsd.h ) -	@${CP} ${FILESDIR}/alpha-freebsd.h ${WRKSRC}/gcc/config/alpha/freebsd.h +	    ${SRCDIR}/gcc/config/freebsd.h ) +	@${CP} ${FILESDIR}/alpha-freebsd.h ${SRCDIR}/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 +	@touch ${SRCDIR}/gcc/configure +	@touch ${SRCDIR}/gcc/cstamp-h.in +	@${MKDIR} ${CONFIGURE_WRKSRC}  pre-build: -	cd ${WRKSRC} ; contrib/gcc_update --touch +	cd ${SRCDIR} ; contrib/gcc_update --touch  pre-install:  	${MKDIR} ${PREFIX}/info @@ -108,6 +111,8 @@ post-install:  		${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}  	cd ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV} ; \  		${LN} -sf libstdc++.a.${LIBSTDCPP_REV} libstdc++.a +	${MV} -f ${PREFIX}/lib/libzgcj.*  \ +		${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}  	${MV} ${PREFIX}/man/man1/gcc.1 ${PREFIX}/man/man1/egcc.1  	${MV} ${PREFIX}/man/man1/g++.1 ${PREFIX}/man/man1/eg++.1  	${MV} ${PREFIX}/man/man1/g77.1 ${PREFIX}/man/man1/eg77.1 diff --git a/lang/gcc33/distinfo b/lang/gcc33/distinfo index 2a326c9ddf80..ae27d54caced 100644 --- a/lang/gcc33/distinfo +++ b/lang/gcc33/distinfo @@ -1,5 +1,5 @@ -MD5 (egcs-core-20000828.tar.gz) = a616c37b09043ae789541103903bb8f1 -MD5 (egcs-g++-20000828.tar.gz) = 505d707047d0f8abdb95ae2823c12687 -MD5 (egcs-g77-20000828.tar.gz) = d9f07d48d6d23a5ed07f8917a932a1b8 -MD5 (egcs-java-20000828.tar.gz) = 1f62a45978b34ba6348997a765f4983e -MD5 (egcs-objc-20000828.tar.gz) = 705fdf65b91322a4b0ad6eb575350ed5 +MD5 (egcs-core-20001002.tar.gz) = 5b3bc1987fd61e10062823efe4b613c3 +MD5 (egcs-g++-20001002.tar.gz) = b9b73a770fe644e90d5285bf624b7ac9 +MD5 (egcs-g77-20001002.tar.gz) = cc7e8da8780a05e7f1106e33fa5aa432 +MD5 (egcs-java-20001002.tar.gz) = ddcc506af943d3565ed76ed08dd7ca48 +MD5 (egcs-objc-20001002.tar.gz) = f640a7b059001f215c8ed8bb243e5f73 diff --git a/lang/gcc33/files/alpha-freebsd.h b/lang/gcc33/files/alpha-freebsd.h index 6c0ee983a858..a227b9444b9e 100644 --- a/lang/gcc33/files/alpha-freebsd.h +++ b/lang/gcc33/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/gcc33/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/gcc33/files/patch-ad b/lang/gcc33/files/patch-ad index 934da77780a4..53927df88598 100644 --- a/lang/gcc33/files/patch-ad +++ b/lang/gcc33/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/gcc33/files/patch-ak b/lang/gcc33/files/patch-ak index f783ebef16ab..98c373d4e980 100644 --- a/lang/gcc33/files/patch-ak +++ b/lang/gcc33/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/gcc33/files/patch-al b/lang/gcc33/files/patch-al index 4484e2e070a9..e2760943566e 100644 --- a/lang/gcc33/files/patch-al +++ b/lang/gcc33/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/gcc33/files/patch-fa b/lang/gcc33/files/patch-fa index 55221295f0b7..d6b90e4ba86c 100644 --- a/lang/gcc33/files/patch-fa +++ b/lang/gcc33/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);  | 
