diff options
Diffstat (limited to 'lang/gcc44')
-rw-r--r-- | lang/gcc44/Makefile | 58 | ||||
-rw-r--r-- | lang/gcc44/distinfo | 10 | ||||
-rw-r--r-- | lang/gcc44/files/patch-aa | 4 | ||||
-rw-r--r-- | lang/gcc44/files/patch-ac | 13 | ||||
-rw-r--r-- | lang/gcc44/files/patch-ad | 38 | ||||
-rw-r--r-- | lang/gcc44/files/patch-af | 32 | ||||
-rw-r--r-- | lang/gcc44/files/patch-ai | 32 | ||||
-rw-r--r-- | lang/gcc44/files/patch-ar | 60 | ||||
-rw-r--r-- | lang/gcc44/files/patch-fa | 218 | ||||
-rw-r--r-- | lang/gcc44/files/patch-fc | 6 | ||||
-rw-r--r-- | lang/gcc44/files/patch-va | 28 |
11 files changed, 202 insertions, 297 deletions
diff --git a/lang/gcc44/Makefile b/lang/gcc44/Makefile index 1c3c528fd13..fa2466b1d71 100644 --- a/lang/gcc44/Makefile +++ b/lang/gcc44/Makefile @@ -6,27 +6,43 @@ # $FreeBSD$ # -SNAPDATE= 2001-04-30 +SNAPDATE= 2002-01-28 SNAPVER= ${SNAPDATE:S/-//g} PORTNAME= gcc-devel PORTVERSION= ${SNAPVER} CATEGORIES= lang java -MASTER_SITES= ftp://egcs.cygnus.com/pub/egcs/snapshots/${SNAPDATE}/ \ - ${MASTER_SITE_SOURCEWARE} +MASTER_SITES= ${MASTER_SITE_SOURCEWARE} \ + ftp://ftp.netwinder.org/pub/build/gcc/i386/${SNAPVER}/ \ + ftp://egcs.cygnus.com/pub/egcs/snapshots/${SNAPDATE}/ MASTER_SITE_SUBDIR= gcc/snapshots/${SNAPDATE} -DISTFILES= gcc-core-${SNAPVER}${EXTRACT_SUFX} \ +DISTFILES= \ + gcc-core-${SNAPVER}${EXTRACT_SUFX} \ gcc-g++-${SNAPVER}${EXTRACT_SUFX} \ gcc-g77-${SNAPVER}${EXTRACT_SUFX} \ gcc-java-${SNAPVER}${EXTRACT_SUFX} \ gcc-objc-${SNAPVER}${EXTRACT_SUFX} +# gcc-ss-3.1-0_${SNAPVER}.src.rpm MAINTAINER= obrien@FreeBSD.org NO_CDROM= 'dated material' +.if defined(NETWINDER_SS) +BUILD_DEPENDS= rpm:${PORTSDIR}/archivers/rpm + +EXTRACT_CMD= rpm2cpio +EXTRACT_BEFORE_ARGS= +EXTRACT_AFTER_ARGS= |cpio -idum +EXTRACT_ONLY= +.endif +PATCH_ARGS= -d ${SRCDIR} -E ${PATCH_STRIP} +.if !defined(PATCH_DEBUG) +PATCH_ARGS+= --forward --quiet +.endif PATCH_WRKDIR= ${SRCDIR} -CONFIGURE_SCRIPT= ../gcc-${SNAPVER}/configure +#CONFIGURE_SCRIPT= ../gcc-${SNAPVER}/configure +CONFIGURE_SCRIPT= ../${SRCDIR:C/${WRKDIR}//}/configure .include <bsd.port.pre.mk> @@ -36,11 +52,11 @@ CONFIGURE_TARGET= ${ARCH}-portbld-freebsd${OSREL} CONFIGURE_TARGET= ${ARCH}-portbld-freebsdaout${OSREL} .endif -EGCS_REV= 3.0 -SRCDIR= ${WRKDIR}/gcc-${SNAPVER} +GCC_REV= ${PORTVERSION:C/\.0$//} +SRCDIR= ${WRKDIR}/gcc-${GCC_REV} WRKSRC= ${WRKDIR}/build -TARGLIB= ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV} -PLIST_SUB= EGCS_REV=${EGCS_REV} GNU_HOST=${CONFIGURE_TARGET} \ +TARGLIB= ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV} +PLIST_SUB= GCC_REV=${GCC_REV} GNU_HOST=${CONFIGURE_TARGET} \ SNAPVER=${SNAPVER} GNU_CONFIGURE= yes USE_GMAKE= yes @@ -64,10 +80,16 @@ MAN1= gcpp.1 gg++.1 gg77.1 ggcc.1 ggcov.1 pre-fetch: @${ECHO} "Making GCC ${DISTNAME:S/^gcc-//} for ${OPSYS} ${OSREL} ${PORTOBJFORMAT} target ${ARCH}-portbld-freebsd${OSREL}" +.if defined(NETWINDER_SS) +post-extract: +.for F in ${DISTFILES} + cd ${WRKDIR} ; rpm2cpio ${DISTDIR}/$F |cpio -idum +.endfor + cd ${WRKDIR} ; ${TAR} -xzf gcc-${SNAPVER}.tar.gz + cd ${WRKDIR} ; ${LN} -sf gcc gcc-${SNAPVER} +.endif + pre-configure: - @(MAJ=`sysctl -n kern.osreldate | ${SED} -e '/.....$$/s///'` ; \ - ${PERL} -pi.orig -e "s:__FreeBSD__:__FreeBSD__=$${MAJ}:" \ - ${SRCDIR}/gcc/config/freebsd.h ) @# Keep from running `autoconf' and `autoheader' since we modified @# configure.in by patching it. @touch ${SRCDIR}/gcc/configure @@ -86,12 +108,12 @@ post-install: @(for prog in ${PREFIX}/bin/gcc ${PREFIX}/bin/g++ \ ${PREFIX}/bin/g++filt ${PREFIX}/bin/g77 ${PREFIX}/bin/gcov \ ${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}/cpp0 \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/collect2 \ - ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${EGCS_REV}/f771 ; \ + ${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}/cpp0 \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/collect2 \ + ${PREFIX}/lib/gcc-lib/${CONFIGURE_TARGET}/${GCC_REV}/f771 ; \ do \ strip $$prog ; \ done ) diff --git a/lang/gcc44/distinfo b/lang/gcc44/distinfo index 6aba37c8c9a..be32ab96836 100644 --- a/lang/gcc44/distinfo +++ b/lang/gcc44/distinfo @@ -1,5 +1,5 @@ -MD5 (gcc-core-20010430.tar.gz) = 2f4f1744b8aba33a1700e0be0b58f264 -MD5 (gcc-g++-20010430.tar.gz) = 75bb2329937caa975a541ba493f87198 -MD5 (gcc-g77-20010430.tar.gz) = 592086ce2864559df2608efb831c4ed1 -MD5 (gcc-java-20010430.tar.gz) = 63cee3b2ed763a8eb31501b2fad26fcf -MD5 (gcc-objc-20010430.tar.gz) = 6616e23d3ee6efb1a124870e30841cf6 +MD5 (gcc-core-20020128.tar.gz) = 54110b0ad374d30674112ace40560d8e +MD5 (gcc-g++-20020128.tar.gz) = 606c5143f56128f79e0d216baccdc58e +MD5 (gcc-g77-20020128.tar.gz) = 152ec08066878c584f7b22e93da71beb +MD5 (gcc-java-20020128.tar.gz) = 0c5ba3ea62a511c22403d89d0bf2f0b8 +MD5 (gcc-objc-20020128.tar.gz) = b1bd14a1cb0aa00a789d5ae317320c3d diff --git a/lang/gcc44/files/patch-aa b/lang/gcc44/files/patch-aa index 9dc2e19279b..db932fa5c7e 100644 --- a/lang/gcc44/files/patch-aa +++ b/lang/gcc44/files/patch-aa @@ -1,5 +1,5 @@ ---- gcc/cpp.texi.orig Mon Aug 11 08:57:05 1997 -+++ gcc/cpp.texi Sat Jan 10 11:59:15 1998 +--- gcc/doc/cpp.texi.orig Mon Aug 11 08:57:05 1997 ++++ gcc/doc/cpp.texi Sat Jan 10 11:59:15 1998 @@ -1,5 +1,9 @@ \input texinfo @setfilename cpp.info diff --git a/lang/gcc44/files/patch-ac b/lang/gcc44/files/patch-ac deleted file mode 100644 index 961874c5c31..00000000000 --- a/lang/gcc44/files/patch-ac +++ /dev/null @@ -1,13 +0,0 @@ ---- gcc/gcc.texi.orig Fri Jan 2 15:38:11 1998 -+++ gcc/gcc.texi Sat Jan 10 11:56:49 1998 -@@ -1,6 +1,10 @@ - >\input texinfo @c -*-texinfo-*- - @c %**start of header - @setfilename gcc.info -+@dircategory The egcs enhanced GNU compiler suite -+@direntry -+* gcc: (gcc). The egcs C/C++ compiler. -+@end direntry - @c @setfilename usegcc.info - @c @setfilename portgcc.info - @c To produce the full manual, use the "gcc.info" setfilename, and diff --git a/lang/gcc44/files/patch-ad b/lang/gcc44/files/patch-ad index d11c865f10f..c59833513fa 100644 --- a/lang/gcc44/files/patch-ad +++ b/lang/gcc44/files/patch-ad @@ -1,33 +1,21 @@ ---- gcc/config/i386/freebsd-aout.h.orig Thu Nov 2 15:29:09 2000 -+++ gcc/config/i386/freebsd-aout.h Mon Nov 27 01:45:04 2000 -@@ -31,8 +31,11 @@ - - /* 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 -D__FreeBSD__\ -@@ -84,14 +87,6 @@ - necessary when compiling PIC code. */ - - #define JUMP_TABLES_IN_TEXT_SECTION 1 -- +--- gcc/config/i386/freebsd-aout.h.orig Tue Jan 22 16:56:28 2002 ++++ gcc/config/i386/freebsd-aout.h Sat Feb 2 13:30:32 2002 +@@ -76,14 +76,6 @@ + /* FreeBSD using a.out does not support DWARF2 unwinding mechanisms. */ + #define DWARF2_UNWIND_INFO 0 + -/* Don't default to pcc-struct-return, because in FreeBSD we prefer the - superior nature of the older gcc way. */ -#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 - +- /* 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 -@@ -102,19 +97,18 @@ + segment. */ +@@ -93,19 +85,18 @@ /* Profiling routines, partially copied from i386/osfrose.h. */ @@ -50,7 +38,7 @@ fprintf (FILE, "\tcall mcount\n"); \ } \ } -@@ -132,6 +126,7 @@ +@@ -123,6 +114,7 @@ #define TYPE_ASM_OP "\t.type\t" #define SIZE_ASM_OP "\t.size\t" @@ -58,7 +46,7 @@ /* The following macro defines the format used to output the second operand of the .type assembler directive. Different svr4 assemblers -@@ -141,6 +136,12 @@ +@@ -132,6 +124,12 @@ #define TYPE_OPERAND_FMT "@%s" @@ -71,7 +59,7 @@ /* 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. */ -@@ -242,6 +243,8 @@ +@@ -233,6 +231,8 @@ #define STARTFILE_SPEC \ "%{shared:c++rt0.o%s} \ %{!shared:%{pg:gcrt0.o%s}%{!pg:%{static:scrt0.o%s}%{!static:crt0.o%s}}}" diff --git a/lang/gcc44/files/patch-af b/lang/gcc44/files/patch-af index 3941ebdce31..9da4d3279d7 100644 --- a/lang/gcc44/files/patch-af +++ b/lang/gcc44/files/patch-af @@ -1,14 +1,10 @@ ---- gcc/config/i386/freebsd.h.orig Thu Nov 2 15:29:09 2000 -+++ gcc/config/i386/freebsd.h Mon Nov 27 01:52:39 2000 -@@ -76,11 +76,15 @@ +--- gcc/config/i386/freebsd.h.orig Wed May 30 16:05:31 2001 ++++ gcc/config/i386/freebsd.h Mon Jun 18 17:47:30 2001 +@@ -76,6 +76,14 @@ #undef WCHAR_TYPE_SIZE #define WCHAR_TYPE_SIZE BITS_PER_WORD -- --#undef CPP_PREDEFINES --#define CPP_PREDEFINES "-Dunix -D__ELF__ -D__FreeBSD__\ -- -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" - ++ +#undef CC1_SPEC +#define CC1_SPEC "\ + %{gline:%{!g:%{!g0:%{!g1:%{!g2: -g1}}}}} \ @@ -16,11 +12,10 @@ + +#undef ASM_SPEC +#define ASM_SPEC "%{v*: -v} %{maout: %{fpic:-k} %{fPIC:-k}}" -+ + /* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add the magical crtbegin.o file (see crtstuff.c) which provides part - of the support for getting C++ file-scope static object constructed -@@ -88,11 +92,11 @@ +@@ -84,11 +92,18 @@ #undef STARTFILE_SPEC #define STARTFILE_SPEC \ @@ -31,13 +26,20 @@ - 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}}" ++ %{!maout: \ ++ %{!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} \ ++ }" /* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on the magical crtend.o file (see crtstuff.c) which provides part of -@@ -102,7 +106,7 @@ +@@ -98,7 +113,7 @@ #undef ENDFILE_SPEC #define ENDFILE_SPEC \ diff --git a/lang/gcc44/files/patch-ai b/lang/gcc44/files/patch-ai index d88ee27871b..54d2e32149a 100644 --- a/lang/gcc44/files/patch-ai +++ b/lang/gcc44/files/patch-ai @@ -1,31 +1,35 @@ ---- gcc/final.c.orig Sat Sep 5 22:52:01 1998 -+++ gcc/final.c Wed Oct 7 17:06:58 1998 -@@ -383,6 +383,8 @@ - /* zero word */ - assemble_integer (const0_rtx, long_bytes, 1); +--- gcc/final.c.orig Thu Jan 3 09:39:59 2002 ++++ gcc/final.c Sat Feb 2 19:20:09 2002 +@@ -295,6 +295,8 @@ + /* Zero word. */ + assemble_integer (const0_rtx, long_bytes, align2, 1); + fprintf(asm_out_file,".stabs \"bbset\", 25, 0, 0, LPBX0\n"); + - /* address of filename */ + /* Address of filename. */ ASM_GENERATE_INTERNAL_LABEL (name, "LPBX", 1); - assemble_integer (gen_rtx_SYMBOL_REF (Pmode, name), pointer_bytes, 1); -@@ -1635,6 +1637,9 @@ + assemble_integer (gen_rtx_SYMBOL_REF (Pmode, name), pointer_bytes, +@@ -1524,6 +1526,11 @@ leaf_renumber_regs (first); #endif ++/* + if (profile_block_flag) + add_bb (file); ++*/ + /* The Sun386i and perhaps other machines don't work right if the profiling code comes after the prologue. */ #ifdef PROFILE_BEFORE_PROLOGUE -@@ -1800,6 +1809,9 @@ +@@ -1668,6 +1675,11 @@ + /* Finally, output the function epilogue: code to restore the stack frame and return to the caller. */ - FUNCTION_EPILOGUE (file, get_frame_size ()); - #endif + (*targetm.asm_out.function_epilogue) (asm_out_file, get_frame_size ()); + ++/* + if (profile_block_flag) -+ add_bb (file); ++ add_bb (asm_out_file); ++*/ - #ifdef SDB_DEBUGGING_INFO - if (write_symbols == SDB_DEBUG) + /* And debug output. */ + (*debug_hooks->end_epilogue) (); diff --git a/lang/gcc44/files/patch-ar b/lang/gcc44/files/patch-ar index e6a4c8ad30b..8b3f5f6b267 100644 --- a/lang/gcc44/files/patch-ar +++ b/lang/gcc44/files/patch-ar @@ -1,32 +1,52 @@ ---- gcc/config/freebsd.h.orig Mon Nov 22 22:17:32 1999 -+++ gcc/config/freebsd.h Fri Feb 4 05:29:31 2000 -@@ -48,13 +48,26 @@ - #undef WORD_SWITCH_TAKES_ARG - #define WORD_SWITCH_TAKES_ARG(STR) (FBSD_WORD_SWITCH_TAKES_ARG(STR)) +--- gcc/config/freebsd-spec.h.orig Tue Nov 20 18:06:45 2001 ++++ gcc/config/freebsd-spec.h Sat Feb 2 13:37:38 2002 +@@ -48,29 +48,32 @@ + || !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \ + || !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker")) +/* Place spaces around this string. We depend on string splicing to produce + the final CPP_PREDEFINES value. */ -+#define FBSD_CPP_PREDEFINES " -Dunix -D__FreeBSD__ -Asystem(unix) -Asystem(bsd) -Asystem(FreeBSD) " + -+#undef CPP_PREDEFINES -+#define CPP_PREDEFINES FBSD_CPP_PREDEFINES -+ - /* Provide a CPP_SPEC appropriate for FreeBSD. We just deal with the GCC - option `-posix', and PIC issues. */ + #if FBSD_MAJOR == 6 + #define FBSD_CPP_PREDEFINES \ +- "-D__FreeBSD__=6 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" ++ " -D__FreeBSD__=6 -Dunix -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD " + #endif + + #if FBSD_MAJOR == 5 + #define FBSD_CPP_PREDEFINES \ +- "-D__FreeBSD__=5 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" ++ " -D__FreeBSD__=5 -Dunix -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD " + #endif + + #if FBSD_MAJOR == 4 + #define FBSD_CPP_PREDEFINES \ +- "-D__FreeBSD__=4 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" ++ " -D__FreeBSD__=4 -Dunix -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD " + #endif --#undef CPP_SPEC --#define CPP_SPEC "%(cpp_cpu) \ -+#define FBSD_CPP_SPEC " \ -+ %(cpp_cpu) \ + #if FBSD_MAJOR == 3 + #define FBSD_CPP_PREDEFINES \ +- "-D__FreeBSD__=3 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" ++ " -D__FreeBSD__=3 -Dunix -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD " + #endif + + #ifndef FBSD_CPP_PREDEFINES + #define FBSD_CPP_PREDEFINES \ +- "-D__FreeBSD__ -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" ++ " -D__FreeBSD__ -Dunix -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD " + #endif + + /* Provide a CPP_SPEC appropriate for FreeBSD. We just deal with the GCC +@@ -79,7 +82,10 @@ + #define FBSD_CPP_SPEC " \ + %(cpp_cpu) \ %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ - %{posix:-D_POSIX_SOURCE}" + %{posix:-D_POSIX_SOURCE} \ + %{!maout: -D__ELF__} \ + %{munderscores: -D__UNDERSCORES__} \ + %{maout: %{!mno-underscores: -D__UNDERSCORES__}}" -+ -+#undef CPP_SPEC -+#define CPP_SPEC FBSD_CPP_SPEC - /* 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 STARTFILE_SPEC appropriate for FreeBSD. Here we add + the magical crtbegin.o file (see crtstuff.c) which provides part diff --git a/lang/gcc44/files/patch-fa b/lang/gcc44/files/patch-fa index 350959df8e8..10385dd3c7b 100644 --- a/lang/gcc44/files/patch-fa +++ b/lang/gcc44/files/patch-fa @@ -1,170 +1,55 @@ ---- gcc/c-format.c.orig Sat Jan 13 15:29:57 2001 -+++ gcc/c-format.c Wed Feb 14 03:47:34 2001 -@@ -75,13 +75,16 @@ - last. */ - enum format_type { printf_format_type, scanf_format_type, - strftime_format_type, strfmon_format_type, -+ printf0_format_type, - format_type_error }; +--- gcc/c-format.c.orig Sun Nov 25 10:54:11 2001 ++++ gcc/c-format.c Sat Feb 2 19:04:24 2002 +@@ -82,12 +82,15 @@ + enum format_type format_type; /* type of format (printf, scanf, etc.) */ + unsigned HOST_WIDE_INT format_num; /* number of format argument */ + unsigned HOST_WIDE_INT first_arg_num; /* number of first arg (zero for varargs) */ ++ /* int null_format_ok; */ /* TRUE if the format string may be NULL */ + } function_format_info; + static bool decode_format_attr PARAMS ((tree, + function_format_info *, int)); static enum format_type decode_format_type PARAMS ((const char *)); - static void record_function_format PARAMS ((tree, tree, enum format_type, -- int, int)); -+ int, int, int)); - static void record_international_format PARAMS ((tree, tree, int)); -+inline static int get_null_fmt_ok PARAMS ((enum format_type)); ++/* inline static int get_null_fmt_ok PARAMS ((enum format_type)); */ + - /* Handle the format attribute (with arguments ARGS) attached to the decl - DECL. It is already verified that DECL is a decl and ARGS contains - exactly three arguments. */ -@@ -99,6 +102,7 @@ - enum format_type format_type; - tree argument; - unsigned int arg_num; -+ int null_format_ok; - - if (TREE_CODE (decl) != FUNCTION_DECL) - { -@@ -109,7 +113,7 @@ - - if (TREE_CODE (format_type_id) != IDENTIFIER_NODE) - { -- error ("unrecognized format specifier"); -+ error_with_decl (decl, "unrecognized format specifier"); - return; - } - else -@@ -117,6 +121,7 @@ + /* Handle a "format" attribute; arguments as in + struct attribute_spec.handler. */ + tree +@@ -97,6 +100,7 @@ + tree args; + int flags; + bool *no_add_attrs; ++ /* int null_format_ok; */ + { + tree type = *node; + function_format_info info; +@@ -257,6 +261,7 @@ const char *p = IDENTIFIER_POINTER (format_type_id); - format_type = decode_format_type (p); -+ null_format_ok = get_null_fmt_ok (format_type); + info->format_type = decode_format_type (p); ++ /* info->null_format_ok = get_null_fmt_ok (format_type); */ - if (format_type == format_type_error) + if (info->format_type == format_type_error) { -@@ -195,7 +200,8 @@ - } +@@ -292,6 +297,7 @@ - record_function_format (DECL_NAME (decl), DECL_ASSEMBLER_NAME (decl), -- format_type, format_num, first_arg_num); -+ format_type, format_num, first_arg_num, -+ null_format_ok); - } - - -@@ -276,6 +282,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) */ -+ int null_format_ok; /* TRUE if the format string may be NULL */ - } function_format_info; - - static function_format_info *function_format_list = NULL; -@@ -309,44 +316,44 @@ + info->format_num = TREE_INT_CST_LOW (format_num_expr); + info->first_arg_num = TREE_INT_CST_LOW (first_arg_num_expr); ++ /* info->null_format_ok = TREE_INT_CST_LOW (null_format_ok); */ + if (info->first_arg_num != 0 && info->first_arg_num <= info->format_num) { - /* 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); - record_function_format (get_identifier ("__builtin_fprintf"), NULL_TREE, -- printf_format_type, 2, 3); -+ printf_format_type, 2, 3, 0); - record_function_format (get_identifier ("sprintf"), NULL_TREE, -- printf_format_type, 2, 3); -+ printf_format_type, 2, 3, 0); - record_function_format (get_identifier ("scanf"), NULL_TREE, -- scanf_format_type, 1, 2); -+ scanf_format_type, 1, 2, 0); - record_function_format (get_identifier ("fscanf"), NULL_TREE, -- scanf_format_type, 2, 3); -+ scanf_format_type, 2, 3, 0); - record_function_format (get_identifier ("sscanf"), NULL_TREE, -- scanf_format_type, 2, 3); -+ scanf_format_type, 2, 3, 0); - record_function_format (get_identifier ("vprintf"), NULL_TREE, -- printf_format_type, 1, 0); -+ printf_format_type, 1, 0, 0); - record_function_format (get_identifier ("vfprintf"), NULL_TREE, -- printf_format_type, 2, 0); -+ printf_format_type, 2, 0, 0); - record_function_format (get_identifier ("vsprintf"), NULL_TREE, -- printf_format_type, 2, 0); -+ printf_format_type, 2, 0, 0); - record_function_format (get_identifier ("strftime"), NULL_TREE, -- strftime_format_type, 3, 0); -+ strftime_format_type, 3, 0, 0); - } - - if (flag_hosted && flag_isoc99) - { - /* ISO C99 adds the snprintf and vscanf family functions. */ - record_function_format (get_identifier ("snprintf"), NULL_TREE, -- printf_format_type, 3, 4); -+ printf_format_type, 3, 4, 0); - record_function_format (get_identifier ("vsnprintf"), NULL_TREE, -- printf_format_type, 3, 0); -+ printf_format_type, 3, 0, 0); - record_function_format (get_identifier ("vscanf"), NULL_TREE, -- scanf_format_type, 1, 0); -+ scanf_format_type, 1, 0, 0); - record_function_format (get_identifier ("vfscanf"), NULL_TREE, -- scanf_format_type, 2, 0); -+ scanf_format_type, 2, 0, 0); - record_function_format (get_identifier ("vsscanf"), NULL_TREE, -- scanf_format_type, 2, 0); -+ scanf_format_type, 2, 0, 0); - } - - if (flag_hosted && flag_noniso_default_format_attributes) -@@ -357,7 +364,7 @@ - record_international_format (get_identifier ("dcgettext"), NULL_TREE, 2); - /* X/Open strfmon function. */ - record_function_format (get_identifier ("strfmon"), NULL_TREE, -- strfmon_format_type, 3, 4); -+ strfmon_format_type, 3, 4, 0); - } - } - -@@ -372,12 +379,13 @@ - - static void - record_function_format (name, assembler_name, format_type, -- format_num, first_arg_num) -+ format_num, first_arg_num, null_format_ok) - tree name; - tree assembler_name; - enum format_type format_type; - int format_num; - int first_arg_num; -+ int null_format_ok; - { - function_format_info *info; - -@@ -401,6 +409,7 @@ - info->format_type = format_type; - info->format_num = format_num; - info->first_arg_num = first_arg_num; -+ info->null_format_ok = null_format_ok; - } - - /* Record information for the names of function that modify the format -@@ -677,6 +686,8 @@ + if (validated_p) +@@ -540,6 +546,8 @@ /* Pointer to type of argument expected if '*' is used for a precision, or NULL if '*' not used for precisions. */ - tree *precision_type; + tree *const precision_type; + /* Needed for FreeBSD kernel and the printf0() printf-like function. */ -+ int null_format_ok; ++ /* int null_format_ok; */ } format_kind_info; -@@ -902,6 +913,20 @@ +@@ -765,6 +773,20 @@ static const format_char_info print_char_table[] = { @@ -185,65 +70,70 @@ /* C89 conversion specifiers. */ { "di", 0, STD_C89, { T89_I, T99_SC, T89_S, T89_L, T9L_LL, TEX_LL, T99_SST, T99_PD, T99_IM }, "-wp0 +'I", "i" }, { "oxX", 0, STD_C89, { T89_UI, T99_UC, T89_US, T89_UL, T9L_ULL, TEX_ULL, T99_ST, T99_UPD, T99_UIM }, "-wp0#", "i" }, -@@ -985,22 +1010,33 @@ +@@ -848,23 +870,36 @@ FMT_FLAG_ARG_CONVERT|FMT_FLAG_DOLLAR_MULTIPLE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_EMPTY_PREC_OK, 'w', 0, 'p', 0, 'L', &integer_type_node, &integer_type_node -+ ,0 ++ /* ,0 */ }, { "scanf", scanf_length_specs, scan_char_table, "*'I", NULL, scanf_flag_specs, scanf_flag_pairs, - FMT_FLAG_ARG_CONVERT|FMT_FLAG_SCANF_A_KLUDGE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_ZERO_WIDTH_BAD, + FMT_FLAG_ARG_CONVERT|FMT_FLAG_SCANF_A_KLUDGE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_ZERO_WIDTH_BAD|FMT_FLAG_DOLLAR_GAP_POINTER_OK, 'w', 0, 0, '*', 'L', NULL, NULL -+ ,0 ++ /* ,0 */ }, { "strftime", NULL, time_char_table, "_-0^#", "EO", strftime_flag_specs, strftime_flag_pairs, FMT_FLAG_FANCY_PERCENT_OK, 'w', 0, 0, 0, 0, NULL, NULL -+ ,0 ++ /* ,0 */ }, { "strfmon", strfmon_length_specs, monetary_char_table, "=^+(!-", NULL, strfmon_flag_specs, strfmon_flag_pairs, FMT_FLAG_ARG_CONVERT, 'w', '#', 'p', 0, 'L', NULL, NULL -+ ,0 -+ }, ++ /* ,0 */ + } ++ /* + { "printf0", printf_length_specs, print_char_table, " +#0-'I", NULL, + printf_flag_specs, printf_flag_pairs, + FMT_FLAG_ARG_CONVERT|FMT_FLAG_DOLLAR_MULTIPLE|FMT_FLAG_USE_DOLLAR|FMT_FLAG_EMPTY_PREC_OK, + 'w', 0, 'p', 0, 'L', + &integer_type_node, &integer_type_node + ,1 - } ++ }, ++ */ }; -@@ -1053,6 +1089,14 @@ + +@@ -917,6 +952,16 @@ static void check_format_types PARAMS ((int *, format_wanted_type *)); + ++/* +inline static int get_null_fmt_ok (fmttype) + enum format_type fmttype; +{ + return format_types[(int)fmttype].null_format_ok; +} ++*/ + + /* Decode a format type from a string, returning the type, or format_type_error if not valid, in which case the caller should print an error message. */ -@@ -1568,7 +1612,7 @@ +@@ -1475,7 +1520,7 @@ specially if info == NULL and add a res->number_null entry for that case, or maybe add a function pointer to be called at the end instead of hardcoding check_format_info_main. */ - status_warning (status, "null format string"); -+ if (!info->null_format_ok) status_warning (status, "null format string"); ++ /*if (!info->null_format_ok)*/ status_warning (status, "null format string"); /* Skip to first argument to check, so we can see if this format has any arguments (it shouldn't). */ -@@ -1764,6 +1808,54 @@ +@@ -1710,6 +1755,54 @@ main_arg_num = opnum + info->first_arg_num - 1; } } @@ -298,7 +188,7 @@ /* Read any format flags, but do not yet validate them beyond removing duplicates, since in general validation depends on the rest of -@@ -2166,7 +2258,7 @@ +@@ -2113,7 +2206,7 @@ else if (strchr (fci->flags2, '2') != 0) y2k_level = 2; if (y2k_level == 3) diff --git a/lang/gcc44/files/patch-fc b/lang/gcc44/files/patch-fc index f783e5cae52..d03aaf30787 100644 --- a/lang/gcc44/files/patch-fc +++ b/lang/gcc44/files/patch-fc @@ -13,11 +13,11 @@ @@ -1064,6 +1067,8 @@ "Do the full regmove optimization pass"}, {"pack-struct", &flag_pack_struct, 1, - "Pack structure members together without holes" }, + N_("Pack structure members together without holes") }, + {"format-extensions", &flag_format_extensions, 1, -+ "-Wformat accepts certain FreeBSD system-dependent formats" }, ++ N_("-Wformat accepts certain FreeBSD system-dependent formats") }, {"stack-check", &flag_stack_check, 1, - "Insert stack checking code into the program" }, + N_("Insert stack checking code into the program") }, {"argument-alias", &flag_argument_noalias, 0, @@ -4484,6 +4489,19 @@ if (optimize_val != -1) diff --git a/lang/gcc44/files/patch-va b/lang/gcc44/files/patch-va index 9b046ee019f..c8c656a80ba 100644 --- a/lang/gcc44/files/patch-va +++ b/lang/gcc44/files/patch-va @@ -1,20 +1,12 @@ ---- gcc/Makefile.in.orig Sat Nov 18 16:30:05 2000 -+++ gcc/Makefile.in Mon Nov 27 02:29:50 2000 -@@ -863,7 +863,7 @@ - rm -f config.run - - $(srcdir)/configure: $(srcdir)/configure.in +--- gcc/Makefile.in.orig Mon Aug 27 21:06:24 2001 ++++ gcc/Makefile.in Fri Aug 31 08:45:23 2001 +@@ -895,3 +895,3 @@ + $(srcdir)/configure: @MAINT@ $(srcdir)/configure.in - (cd $(srcdir) && autoconf) -+ (cd $(srcdir) && echo "wants to run autoconf") ++ (cd $(srcdir) && echo "wants to run autoconf, blah") - gccbug: $(srcdir)/gccbug.in - CONFIG_FILES=gccbug CONFIG_HEADERS= ./config.status -@@ -882,7 +882,7 @@ - # ??? Newer versions have a maintainer mode that may be useful here. - $(srcdir)/config.in: $(srcdir)/cstamp-h.in - $(srcdir)/cstamp-h.in: $(srcdir)/configure.in $(srcdir)/acconfig.h -- (cd $(srcdir) && autoheader) -+ (cd $(srcdir) && echo "wants to run autoheader") - @rm -f $(srcdir)/cstamp-h.in - echo timestamp > $(srcdir)/cstamp-h.in - auto-host.h: cstamp-h ; @true +@@ -917,3 +917,3 @@ + @MAINT@ $(srcdir)/cstamp-h.in: $(srcdir)/configure.in $(srcdir)/acconfig.h +-@MAINT@ (cd $(srcdir) && autoheader) ++@MAINT@ (cd $(srcdir) && echo "wants to run autoheader, blah") + @MAINT@ @rm -f $(srcdir)/cstamp-h.in |