Date: Mon, 25 Dec 1995 11:11:18 +1100 From: Bruce Evans <bde@zeta.org.au> To: chuckr@glue.umd.edu, jmacd@paris.CS.Berkeley.EDU Cc: freebsd-hackers@freebsd.org, freebsd-ports@freebsd.org Subject: Re: gcc 2.7.1 Message-ID: <199512250011.LAA11425@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>think. I think the only three diffs I have for 2.7.1 right now are the >ASM_WEAKEN_LABEL removal, a change to gcc's stdarg.h so that __gnuc_va_list >agrees with libc, and gcc's stddef.h is all messed up. It doesn't undefine >things like _BSD_SIZE_T_ leaves it defined but empty so that later stdlib.h >will produce something like 'typedef size_t' and produce annoying >warnings. Perhaps it is better not to use those two files. I have a lot more than 3. All of these except the ones for ginclude/* were obtained by diffing FreeBSD's version of gcc-2.6.3 with the standard version. The ones in freebsd.h are particularly important. You can't expect things to work if you use a different size for wchar_t and different SPEC strings. The other changes in freebsd.h aren't so important. Bruce diff -c2 gcc-2.7.2/Makefile.in~ gcc-2.7.2/Makefile.in *** gcc-2.7.2/Makefile.in~ Wed Dec 6 22:00:01 1995 --- gcc-2.7.2/Makefile.in Wed Dec 6 22:07:55 1995 *************** *** 246,250 **** # we use this here because that should be enough, and also # so that -g1 will be tested. ! LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) -g1 # Additional options to use when compiling libgcc2.a. --- 246,250 ---- # we use this here because that should be enough, and also # so that -g1 will be tested. ! LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) # -g1 # Additional options to use when compiling libgcc2.a. *************** *** 747,750 **** --- 747,751 ---- echo "__foo () {}" > dummy.c $(GCC_FOR_TARGET) $(GCC_CFLAGS) -c dummy.c + ld -r -x dummy$(objext); mv a.out dummy$(objext) $(OLDAR) $(OLDAR_FLAGS) libgcc1.null dummy$(objext) rm -f dummy$(objext) dummy.c *************** *** 778,781 **** --- 779,783 ---- if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ mv libgcc1$(objext) $${name}$(objext); \ + ld -r -x $${name}$(objext); mv a.out $${name}$(objext); \ $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \ rm -f $${name}$(objext); \ *************** *** 797,800 **** --- 799,803 ---- $(OLDCC) $(CCLIBFLAGS) $(INCLUDES) -c $${file}; \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ + ld -r -x $${name}$(objext); mv a.out $${name}$(objext); \ $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ *************** *** 826,829 **** --- 829,833 ---- if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ mv libgcc1$(objext) $${name}$(objext); \ + ld -r -x $${name}$(objext); mv a.out $${name}$(objext); \ $(AR) $(AR_FLAGS) tmplibgcc1.a $${name}$(objext); \ rm -f $${name}$(objext); \ *************** *** 876,879 **** --- 880,884 ---- $(srcdir)/libgcc2.c -o $${name}$(objext); \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ + ld -r -x $${name}$(objext); mv a.out $${name}$(objext); \ $(AR) $(AR_FLAGS) tmplibgcc2.a $${name}$(objext); \ rm -f $${name}$(objext); \ *************** *** 896,899 **** --- 901,905 ---- $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ + ld -r -x $${oname}$(objext); mv a.out $${oname}$(objext); \ $(AR) $(AR_FLAGS) tmplibgcc2.a $${oname}$(objext); \ rm -f $${name}.s $${oname}$(objext); \ diff -c2 gcc-2.7.2/cccp.1~ gcc-2.7.2/cccp.1 *** gcc-2.7.2/cccp.1~ Fri Jun 23 00:05:50 1995 --- gcc-2.7.2/cccp.1 Wed Dec 6 22:05:12 1995 *************** *** 1,12 **** .\" Copyright (c) 1991, 1992, 1993 Free Software Foundation \-*-Text-*- .\" See section COPYING for conditions for redistribution ! .TH cpp 1 "30apr1993" "GNU Tools" "GNU Tools" .SH NAME ! cccp, cpp \- The GNU C-Compatible Compiler Preprocessor. .SH SYNOPSIS .hy 0 .na .TP ! .B cccp .RB "[\|" \-$ "\|]" .RB "[\|" \-A \c --- 1,12 ---- .\" Copyright (c) 1991, 1992, 1993 Free Software Foundation \-*-Text-*- .\" See section COPYING for conditions for redistribution ! .TH cpp 1 "April 30, 1993" "GNU Tools" "GNU Tools" .SH NAME ! cpp \- The GNU C-Compatible Compiler Preprocessor. .SH SYNOPSIS .hy 0 .na .TP ! .B cpp .RB "[\|" \-$ "\|]" .RB "[\|" \-A \c *************** *** 143,153 **** explicitly: the C compiler will do so automatically. However, the preprocessor is sometimes useful individually. - - When you call the preprocessor individually, either name - (\c - .B cpp\c - \& or \c - .B cccp\c - \&) will do\(em\&they are completely synonymous. The C preprocessor expects two file names as arguments, \c --- 143,146 ---- diff -c2 gcc-2.7.2/cccp.c~ gcc-2.7.2/cccp.c *** gcc-2.7.2/cccp.c~ Wed Dec 6 21:53:37 1995 --- gcc-2.7.2/cccp.c Wed Dec 6 22:05:13 1995 *************** *** 4924,4927 **** --- 4924,4928 ---- char *p, *dir; + #if 0 if (searchptr && ! searchptr->got_name_map) { *************** *** 4946,4949 **** --- 4947,4951 ---- } } + #endif /* Try to find a mapping file for the particular directory we are *************** *** 4982,4988 **** --- 4984,4992 ---- from = p + 1; } + #if 0 for (map = read_name_map (dir); map; map = map->map_next) if (! strcmp (map->map_from, from)) return open (map->map_to, O_RDONLY, 0666); + #endif return open (filename, O_RDONLY, 0666); diff -c2 gcc-2.7.2/config/i386/freebsd.h~ gcc-2.7.2/config/i386/freebsd.h *** gcc-2.7.2/config/i386/freebsd.h~ Thu Jun 15 23:44:56 1995 --- gcc-2.7.2/config/i386/freebsd.h Wed Dec 6 22:05:13 1995 *************** *** 21,27 **** Boston, MA 02111-1307, USA. */ - /* This goes away when the math-emulator is fixed */ - #define TARGET_CPU_DEFAULT 0400 /* TARGET_NO_FANCY_MATH_387 */ - /* This is tested by i386gas.h. */ #define YES_UNDERSCORES --- 21,24 ---- *************** *** 34,44 **** /* Get perform_* macros to build libgcc.a. */ #include "i386/perform.h" #undef CPP_PREDEFINES ! #define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__ -D__386BSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)" /* Like the default, except no -lg. */ #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}" #undef SIZE_TYPE #define SIZE_TYPE "unsigned int" --- 31,92 ---- /* Get perform_* macros to build libgcc.a. */ #include "i386/perform.h" + + /* This is cloned from ../netbsd.h. It and several other things in + this file should be in ../freebsd.h. */ + /* FREEBSD_NATIVE is defined when gcc is integrated into the FreeBSD + source tree so it can be configured appropriately without using + the GNU configure/build mechanism. */ + + #ifdef FREEBSD_NATIVE + + /* Look for the include files in the system-defined places. */ + + #undef GPLUSPLUS_INCLUDE_DIR + #define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++" + + #undef GCC_INCLUDE_DIR + #define GCC_INCLUDE_DIR "/usr/include" + + /* FreeBSD has GCC_INCLUDE_DIR first. */ + #undef INCLUDE_DEFAULTS + #define INCLUDE_DEFAULTS \ + { \ + { GCC_INCLUDE_DIR, 0, 0 }, \ + { GPLUSPLUS_INCLUDE_DIR, 1, 1 }, \ + { 0, 0, 0 } \ + } + + /* Under FreeBSD, the normal location of the compiler back ends is the + /usr/libexec directory. */ + + #undef STANDARD_EXEC_PREFIX + #define STANDARD_EXEC_PREFIX "/usr/libexec/" + + /* Under FreeBSD, the normal location of the various *crt*.o files is the + /usr/lib directory. */ + + #undef STANDARD_STARTFILE_PREFIX + #define STANDARD_STARTFILE_PREFIX "/usr/lib/" + #endif /* FREEBSD_NATIVE */ + #undef CPP_PREDEFINES ! #define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__=2 -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)" ! ! #define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}" /* Like the default, except no -lg. */ #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}" + #define LINK_SPEC \ + "%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*} \ + %{p:-Bstatic} %{pg:-Bstatic} %{Z}" + + #define LINK_LIBGCC_SPECIAL_1 1 + + /* This goes away when the math emulator is fixed. */ + #undef TARGET_DEFAULT + #define TARGET_DEFAULT (MASK_NO_FANCY_MATH_387 | 0301) + #undef SIZE_TYPE #define SIZE_TYPE "unsigned int" *************** *** 48,64 **** #undef WCHAR_TYPE ! #define WCHAR_TYPE "short unsigned int" ! #define WCHAR_UNSIGNED 1 #undef WCHAR_TYPE_SIZE ! #define WCHAR_TYPE_SIZE 16 #define HAVE_ATEXIT ! /* There are conflicting reports about whether this system uses ! a different assembler syntax. wilson@cygnus.com says # is right. */ ! #undef COMMENT_BEGIN ! #define COMMENT_BEGIN "#" #undef ASM_APP_ON --- 96,112 ---- #undef WCHAR_TYPE ! #define WCHAR_TYPE "int" ! #define WCHAR_UNSIGNED 0 #undef WCHAR_TYPE_SIZE ! #define WCHAR_TYPE_SIZE BITS_PER_WORD #define HAVE_ATEXIT ! /* Override the default comment-starter of "/". */ ! ! #undef ASM_COMMENT_START ! #define ASM_COMMENT_START "#" #undef ASM_APP_ON *************** *** 87,110 **** we want to retain compatibility with older gcc versions. */ #define DEFAULT_PCC_STRUCT_RETURN 0 - - /* Profiling routines, partially copied from i386/osfrose.h. */ ! /* Redefine this to use %eax instead of %edx. */ #undef FUNCTION_PROFILER #define FUNCTION_PROFILER(FILE, LABELNO) \ { \ if (flag_pic) \ ! { \ ! fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%eax\n", \ ! LPREFIX, (LABELNO)); \ ! fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \ ! } \ else \ ! { \ ! fprintf (FILE, "\tmovl $%sP%d,%%eax\n", LPREFIX, (LABELNO)); \ ! fprintf (FILE, "\tcall mcount\n"); \ ! } \ } /* * Some imports from svr4.h in support of shared libraries. --- 135,164 ---- we want to retain compatibility with older gcc versions. */ #define DEFAULT_PCC_STRUCT_RETURN 0 ! /* Tell final.c that we don't need a label passed to mcount. */ ! ! #define NO_PROFILE_DATA ! ! /* Redefine this to not pass an unused label in %edx. */ ! #undef FUNCTION_PROFILER #define FUNCTION_PROFILER(FILE, LABELNO) \ { \ if (flag_pic) \ ! fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \ else \ ! fprintf (FILE, "\tcall mcount\n"); \ } + #if 0 /* not ready for this; it should be decided at compile time */ + #define FUNCTION_PROFILER_EPILOGUE(FILE) \ + { \ + if (flag_pic) \ + fprintf (FILE, "\tcall *mexitcount@GOT(%%ebx)\n"); \ + else \ + fprintf (FILE, "\tcall mexitcount\n"); \ + } + #endif + /* * Some imports from svr4.h in support of shared libraries. *************** *** 112,115 **** --- 166,171 ---- */ + #define HANDLE_SYSV_PRAGMA + /* Define the strings used for the special svr4 .type and .size directives. These strings generally do not vary from one system running svr4 to *************** *** 120,129 **** --- 176,188 ---- #define TYPE_ASM_OP ".type" #define SIZE_ASM_OP ".size" + #define SET_ASM_OP ".set" /* This is how we tell the assembler that a symbol is weak. */ + #if 0 /* not ready for this */ #define ASM_WEAKEN_LABEL(FILE,NAME) \ do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \ fputc ('\n', FILE); } while (0) + #endif /* The following macro defines the format used to output the second *************** *** 224,256 **** } \ } while (0) - - #define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}" - #define LINK_SPEC \ - "%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*}" - - /* 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 }, \ - { "/usr/include/g++", 1 }, \ - { 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 */ --- 283,284 ---- diff -c2 gcc-2.7.2/config/i386/i386.c~ gcc-2.7.2/config/i386/i386.c *** gcc-2.7.2/config/i386/i386.c~ Wed Dec 6 21:53:47 1995 --- gcc-2.7.2/config/i386/i386.c Wed Dec 6 22:05:14 1995 *************** *** 1461,1465 **** rtx xops[4]; int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table ! || current_function_uses_const_pool); xops[0] = stack_pointer_rtx; --- 1461,1466 ---- rtx xops[4]; int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table ! || current_function_uses_const_pool ! || profile_flag || profile_block_flag); xops[0] = stack_pointer_rtx; *************** *** 1522,1527 **** 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 --- 1523,1536 ---- int reglimit = (frame_pointer_needed ? FRAME_POINTER_REGNUM : STACK_POINTER_REGNUM); ! ! #ifdef FUNCTION_PROFILER_EPILOGUE ! if (profile_flag) ! return 0; ! #endif ! ! if (flag_pic && (current_function_uses_pic_offset_table ! || current_function_uses_const_pool ! || profile_flag || profile_block_flag)) ! return 0; #ifdef NON_SAVING_SETJMP *************** *** 1534,1539 **** for (regno = reglimit - 1; regno >= 0; regno--) ! if ((regs_ever_live[regno] && ! call_used_regs[regno]) ! || (regno == PIC_OFFSET_TABLE_REGNUM && pic_reg_used)) nregs++; --- 1543,1547 ---- for (regno = reglimit - 1; regno >= 0; regno--) ! if (regs_ever_live[regno] && ! call_used_regs[regno]) nregs++; *************** *** 1557,1560 **** --- 1565,1573 ---- int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table || current_function_uses_const_pool); + + #ifdef FUNCTION_PROFILER_EPILOGUE + if (profile_flag) + FUNCTION_PROFILER_EPILOGUE (file); + #endif /* Compute the number of registers to pop */ diff -c2 gcc-2.7.2/config/i386/unix.h~ gcc-2.7.2/config/i386/unix.h *** gcc-2.7.2/config/i386/unix.h~ Thu Jun 15 23:54:19 1995 --- gcc-2.7.2/config/i386/unix.h Wed Dec 6 22:05:14 1995 *************** *** 100,104 **** #define ASM_COMMENT_START "/" - #define COMMENT_BEGIN "/" /* Output to assembler file text saying following lines --- 100,103 ---- diff -c2 gcc-2.7.2/config/xm-freebsd.h~ gcc-2.7.2/config/xm-freebsd.h *** gcc-2.7.2/config/xm-freebsd.h~ Thu Jun 15 22:53:32 1995 --- gcc-2.7.2/config/xm-freebsd.h Wed Dec 6 22:05:14 1995 *************** *** 24,27 **** --- 24,30 ---- CPU/xm-CPU.h and this file xm-freebsd.h. */ + /* FreeBSD has putenv. */ + #define HAVE_PUTENV + /* FreeBSD has strerror. */ #define HAVE_STRERROR diff -c2 gcc-2.7.2/cp/g++.c~ gcc-2.7.2/cp/g++.c *** gcc-2.7.2/cp/g++.c~ Wed Dec 6 22:00:07 1995 --- gcc-2.7.2/cp/g++.c Wed Dec 6 22:05:14 1995 *************** *** 416,420 **** if (argc == 1) ! fatal ("No input files specified.\n"); #ifndef __MSDOS__ --- 416,420 ---- if (argc == 1) ! fatal ("No input files specified"); #ifndef __MSDOS__ diff -c2 gcc-2.7.2/final.c~ gcc-2.7.2/final.c *** gcc-2.7.2/final.c~ Wed Dec 6 22:00:10 1995 --- gcc-2.7.2/final.c Wed Dec 6 22:05:15 1995 *************** *** 342,345 **** --- 342,347 ---- ASM_OUTPUT_ALIGN (asm_out_file, align); + fprintf(asm_out_file,".stabs \"bbset\", 25, 0, 0, LPBX0\n"); + ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "LPBX", 0); /* zero word */ *************** *** 915,918 **** --- 917,923 ---- #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. */ *************** *** 972,983 **** --- 977,992 ---- FILE *file; { + #ifndef NO_PROFILE_DATA int align = MIN (BIGGEST_ALIGNMENT, POINTER_SIZE); + #endif /* not NO_PROFILE_DATA */ int sval = current_function_returns_struct; int cxt = current_function_needs_context; + #ifndef NO_PROFILE_DATA data_section (); ASM_OUTPUT_ALIGN (file, floor_log2 (align / BITS_PER_UNIT)); ASM_OUTPUT_INTERNAL_LABEL (file, "LP", profile_label_no); assemble_integer (const0_rtx, POINTER_SIZE / BITS_PER_UNIT, 1); + #endif /* not NO_PROFILE_DATA */ text_section (); *************** *** 1066,1069 **** --- 1075,1081 ---- FUNCTION_EPILOGUE (file, get_frame_size ()); #endif + + if (profile_block_flag) + add_bb (file); #ifdef SDB_DEBUGGING_INFO diff -c2 gcc-2.7.2/gcc.c~ gcc-2.7.2/gcc.c *** gcc-2.7.2/gcc.c~ Wed Dec 6 21:54:41 1995 --- gcc-2.7.2/gcc.c Wed Dec 6 22:05:15 1995 *************** *** 33,36 **** --- 33,37 ---- #include <sys/types.h> + #include <sys/wait.h> #include <ctype.h> #include <signal.h> *************** *** 54,57 **** --- 55,61 ---- #endif #include <stdio.h> + #include <stdlib.h> + #include <unistd.h> + #include <string.h> /* Include multi-lib information. */ *************** *** 1621,1625 **** int num_envs = 0; int name_len = 1; - int str_len = strlen (str); char *p = str; int ch; --- 1625,1628 ---- *************** *** 2704,2707 **** --- 2707,2714 ---- /* Use 2 as fourth arg meaning try just the machine as a suffix, as well as trying the machine and the version. */ + #ifdef FREEBSD_NATIVE + add_prefix (&exec_prefixes, "/usr/libexec/", 0, 0, NULL_PTR); + add_prefix (&exec_prefixes, "/usr/bin/", 0, 0, NULL_PTR); + #else /* not FREEBSD_NATIVE */ #ifndef OS2 add_prefix (&exec_prefixes, standard_exec_prefix, 0, 2, NULL_PTR); *************** *** 2711,2714 **** --- 2718,2722 ---- add_prefix (&startfile_prefixes, standard_exec_prefix, 0, 1, NULL_PTR); add_prefix (&startfile_prefixes, standard_exec_prefix_1, 0, 1, NULL_PTR); + #endif /* FREEBSD_NATIVE */ tooldir_prefix = concat3 (tooldir_base_prefix, spec_machine, *************** *** 2745,2748 **** --- 2753,2757 ---- } + #ifndef FREEBSD_NATIVE add_prefix (&exec_prefixes, concat3 (tooldir_prefix, "bin", dir_separator_str), *************** *** 2751,2754 **** --- 2760,2764 ---- concat3 (tooldir_prefix, "lib", dir_separator_str), 0, 0, NULL_PTR); + #endif /* FREEBSD_NATIVE */ /* More prefixes are enabled in main, after we read the specs file *************** *** 3771,3775 **** int c1 = *p++; /* Select first or second version number. */ char *v = compiler_version; ! char *q, *copy; /* If desired, advance to second version number. */ if (c1 == '2') --- 3781,3785 ---- int c1 = *p++; /* Select first or second version number. */ char *v = compiler_version; ! char *q; /* If desired, advance to second version number. */ if (c1 == '2') *************** *** 4267,4273 **** --- 4277,4285 ---- /* Read specs from a file if there is one. */ + #ifndef FREEBSD_NATIVE machine_suffix = concat4 (spec_machine, dir_separator_str, spec_version, dir_separator_str); just_machine_suffix = concat (spec_machine, dir_separator_str); + #endif specs_file = find_a_file (&startfile_prefixes, "specs", R_OK); *************** *** 4317,4320 **** --- 4329,4333 ---- } + #ifndef FREEBSD_NATIVE add_prefix (&startfile_prefixes, standard_startfile_prefix_1, 0, 0, NULL_PTR); *************** *** 4324,4327 **** --- 4337,4342 ---- add_prefix (&startfile_prefixes, "./", 0, 1, NULL_PTR); #endif + #endif /* FREEBSD_NATIVE */ + } else *************** *** 4414,4418 **** if (n_infiles == 0) ! fatal ("No input files"); /* Make a place to record the compiler output file names --- 4429,4433 ---- if (n_infiles == 0) ! fatal ("No input files specified"); /* Make a place to record the compiler output file names diff -c2 gcc-2.7.2/ginclude/stdarg.h~ gcc-2.7.2/ginclude/stdarg.h *** gcc-2.7.2/ginclude/stdarg.h~ Wed Dec 6 21:54:43 1995 --- gcc-2.7.2/ginclude/stdarg.h Wed Dec 6 22:05:16 1995 *************** *** 44,47 **** --- 44,56 ---- /* Define __gnuc_va_list. */ + #if defined (__FreeBSD__) + /* This is the correct way to handle all BSD NET2 and BSD 4.4 systems. */ + #include <machine/ansi.h> + #ifdef _BSD_VA_LIST_ + typedef _BSD_VA_LIST_ __gnuc_va_list; + #else + typedef _VA_LIST_ __gnuc_va_list; + #endif + #else #ifndef __GNUC_VA_LIST *************** *** 53,56 **** --- 62,66 ---- #endif #endif + #endif /* Define the standard macros for the user, *************** *** 117,122 **** --- 127,137 ---- #endif + #if 0 + /* BSD 4.4 actually spells the name _BSD_VA_LIST_ and requires it to be + * defined and usable in place of va_list when the latter name is not + * allowed (e.g., in stdio.h - see above). */ #ifdef _BSD_VA_LIST #undef _BSD_VA_LIST + #endif #endif diff -c2 gcc-2.7.2/ginclude/varargs.h~ gcc-2.7.2/ginclude/varargs.h *** gcc-2.7.2/ginclude/varargs.h~ Wed Dec 6 21:54:44 1995 --- gcc-2.7.2/ginclude/varargs.h Wed Dec 6 22:05:16 1995 *************** *** 79,82 **** --- 79,91 ---- #ifndef __GNUC_VA_LIST #define __GNUC_VA_LIST + #if defined (__FreeBSD__) + /* This is the correct way to handle all BSD NET2 and BSD 4.4 systems. */ + #include <machine/ansi.h> + #ifdef _BSD_VA_LIST_ + typedef _BSD_VA_LIST_ __gnuc_va_list; + #else + typedef _VA_LIST_ __gnuc_va_list; + #endif + #else #if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) typedef char *__gnuc_va_list; *************** *** 85,88 **** --- 94,98 ---- #endif #endif + #endif #define va_start(AP) AP=(char *) &__builtin_va_alist *************** *** 186,190 **** --- 196,205 ---- /* The next BSD release (if there is one) wants this symbol to be undefined instead of _VA_LIST_. */ + #if 0 + /* BSD 4.4 actually spells the name _BSD_VA_LIST_ and requires it to be + * defined and usable in place of va_list when the latter name is not + * allowed (e.g., in stdio.h - see ginclude/stdarg.h). */ #ifdef _BSD_VA_LIST #undef _BSD_VA_LIST + #endif #endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512250011.LAA11425>