From 512b62fb1bdb3e758207b6bf72eb1024848e8ec6 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Wed, 12 Jan 2000 19:37:06 -0500 Subject: [PATCH] configure.in (i?86-*-beos{pe,elf,}*): Recognize. * configure.in (i?86-*-beos{pe,elf,}*): Recognize. * i386/t-beos, i386/x-beos, i386/xm-beos.h: New files. * i386/beos-elf.h, i386/beos-pe.h: New files. * Makefile.in (CROSS_SYSTEM_HEADER_DIR): New. * cross-make (SYSTEM_HEADER_DIR): Define using CROSS_SYSTEM_HEADER_DIR. * gcc.c (LIBRARY_PATH_ENV): Provide default. (process_command): Use it. (main): Likewise. Kill trailing = from env vars. (build_search_list): Put it back. * collect2.c (main): Use LIBRARY_PATH_ENV. * configure.in (GCC_NEED_DECLARATIONS): Add environ. * toplev.c: Use NEED_DECLARATION_ENVIRON. * tm.texi (Frame Layout): Document SMALL_STACK. * c-common.c (c_common_nodes_and_builtins): Check it. * system.h: Undef alloca after including glibc's , if USE_C_ALLOCA is defined. * gcc.c (set_input): New fn. (main): After all input files are compiled, reset the input file info to the first. * aclocal.m4 (rindex, index): If already defined, don't attempt to redefine. * ginclude/varargs.h: (__va_list__): Define ifndef. * ginclude/stdarg.h: Likewise. * ginclude/stddef.h (__WCHAR_TYPE__) [BEOS]: Use int instead of unsigned char. * hash.h (true, false, boolean): Undef before enum. From-SVN: r31366 --- gcc/Makefile.in | 3 + gcc/aclocal.m4 | 4 + gcc/c-common.c | 2 + gcc/collect2.c | 8 +- gcc/config/i386/beos-elf.h | 436 +++++++++++++++++++++++++++++++++++++ gcc/config/i386/beos-pe.h | 118 ++++++++++ gcc/config/i386/t-beos | 14 ++ gcc/config/i386/x-beos | 9 + gcc/config/i386/xm-beos.h | 64 ++++++ gcc/configure.in | 23 +- gcc/cross-make | 2 +- gcc/gcc.c | 72 ++++-- gcc/ginclude/stdarg.h | 6 + gcc/ginclude/stddef.h | 4 - gcc/ginclude/varargs.h | 6 + gcc/hash.h | 4 + gcc/system.h | 5 + gcc/tm.texi | 16 +- gcc/toplev.c | 2 +- 19 files changed, 764 insertions(+), 34 deletions(-) create mode 100644 gcc/config/i386/beos-elf.h create mode 100644 gcc/config/i386/beos-pe.h create mode 100644 gcc/config/i386/t-beos create mode 100644 gcc/config/i386/x-beos create mode 100644 gcc/config/i386/xm-beos.h diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 932ab36a5e56..fc7f2d0fdc7c 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -209,6 +209,9 @@ RANLIB_TEST_FOR_TARGET = \ # Dir to search for system headers. Overridden by cross-make. SYSTEM_HEADER_DIR = /usr/include +# Default cross SYSTEM_HEADER_DIR, to be overridden by targets. +CROSS_SYSTEM_HEADER_DIR = $(tooldir)/sys-include + # Control whether to run fixproto. STMP_FIXPROTO = stmp-fixproto diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4 index 543938325ed4..300127f29313 100644 --- a/gcc/aclocal.m4 +++ b/gcc/aclocal.m4 @@ -35,11 +35,15 @@ AC_CACHE_VAL(gcc_cv_decl_needed_$1, #include #endif #ifndef HAVE_RINDEX +#ifndef rindex #define rindex strrchr #endif +#endif #ifndef HAVE_INDEX +#ifndef index #define index strchr #endif +#endif $2], [char *(*pfn) = (char *(*)) $1], eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")]) diff --git a/gcc/c-common.c b/gcc/c-common.c index b07600c69b29..b4353506e087 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -3650,10 +3650,12 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins) Declare _exit just to mark it as volatile. */ if (! no_builtins && ! no_nonansi_builtins) { +#ifndef SMALL_STACK temp = builtin_function ("alloca", ptr_ftype_sizetype, BUILT_IN_ALLOCA, BUILT_IN_NORMAL, NULL_PTR); /* Suppress error if redefined as a non-function. */ DECL_BUILT_IN_NONANSI (temp) = 1; +#endif temp = builtin_function ("ffs", int_ftype_int, BUILT_IN_FFS, BUILT_IN_NORMAL, NULL_PTR); /* Suppress error if redefined as a non-function. */ diff --git a/gcc/collect2.c b/gcc/collect2.c index 9689599aac21..cb5e2fa1d47d 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -42,6 +42,10 @@ Boston, MA 02111-1307, USA. */ lib$get_current_invo_context(decc$$get_vfork_jmpbuf()) : -1) #endif /* VMS */ +#ifndef LIBRARY_PATH_ENV +#define LIBRARY_PATH_ENV "LIBRARY_PATH" +#endif + #define COLLECT #include "collect2.h" @@ -1353,9 +1357,9 @@ main (argc, argv) if (ptr) fprintf (stderr, "COMPILER_PATH = %s\n", ptr); - ptr = getenv ("LIBRARY_PATH"); + ptr = getenv (LIBRARY_PATH_ENV); if (ptr) - fprintf (stderr, "LIBRARY_PATH = %s\n", ptr); + fprintf (stderr, "%-20s= %s\n", LIBRARY_PATH_ENV, ptr); fprintf (stderr, "\n"); } diff --git a/gcc/config/i386/beos-elf.h b/gcc/config/i386/beos-elf.h new file mode 100644 index 000000000000..44524df5a990 --- /dev/null +++ b/gcc/config/i386/beos-elf.h @@ -0,0 +1,436 @@ +/* Definitions for Intel x86 running BeOS + Copyright (C) 1998-99, 2000 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, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#include /* Base i386 target machine definitions */ +#include /* Use the i386 AT&T assembler syntax */ +#include /* some common stuff */ + +#undef TARGET_VERSION +#define TARGET_VERSION fprintf (stderr, " (i386 BeOS/ELF)"); + +/* Change debugging to Dwarf2. */ +#undef PREFERRED_DEBUGGING_TYPE +#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG + +/* The SVR4 ABI for the i386 says that records and unions are returned + in memory. */ +#undef DEFAULT_PCC_STRUCT_RETURN +#define DEFAULT_PCC_STRUCT_RETURN 1 + +#undef ASM_COMMENT_START +#define ASM_COMMENT_START " #" + +/* 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. */ +#undef ASM_OUTPUT_ADDR_DIFF_ELT +#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \ + fprintf (FILE, "\t.long _GLOBAL_OFFSET_TABLE_+[.-%s%d]\n", LPREFIX, VALUE) + +/* Indicate that jump tables go in the text section. This is + necessary when compiling PIC code. */ +#define JUMP_TABLES_IN_TEXT_SECTION (flag_pic) + +/* Copy this from the svr4 specifications... */ +/* Define the register numbers to be used in Dwarf debugging information. + The SVR4 reference port C compiler uses the following register numbers + in its Dwarf output code: + 0 for %eax (gnu regno = 0) + 1 for %ecx (gnu regno = 2) + 2 for %edx (gnu regno = 1) + 3 for %ebx (gnu regno = 3) + 4 for %esp (gnu regno = 7) + 5 for %ebp (gnu regno = 6) + 6 for %esi (gnu regno = 4) + 7 for %edi (gnu regno = 5) + The following three DWARF register numbers are never generated by + the SVR4 C compiler or by the GNU compilers, but SDB on x86/svr4 + believes these numbers have these meanings. + 8 for %eip (no gnu equivalent) + 9 for %eflags (no gnu equivalent) + 10 for %trapno (no gnu equivalent) + It is not at all clear how we should number the FP stack registers + for the x86 architecture. If the version of SDB on x86/svr4 were + a bit less brain dead with respect to floating-point then we would + have a precedent to follow with respect to DWARF register numbers + for x86 FP registers, but the SDB on x86/svr4 is so completely + broken with respect to FP registers that it is hardly worth thinking + of it as something to strive for compatibility with. + The version of x86/svr4 SDB I have at the moment does (partially) + seem to believe that DWARF register number 11 is associated with + the x86 register %st(0), but that's about all. Higher DWARF + register numbers don't seem to be associated with anything in + particular, and even for DWARF regno 11, SDB only seems to under- + stand that it should say that a variable lives in %st(0) (when + asked via an `=' command) if we said it was in DWARF regno 11, + but SDB still prints garbage when asked for the value of the + variable in question (via a `/' command). + (Also note that the labels SDB prints for various FP stack regs + when doing an `x' command are all wrong.) + Note that these problems generally don't affect the native SVR4 + C compiler because it doesn't allow the use of -O with -g and + because when it is *not* optimizing, it allocates a memory + location for each floating-point variable, and the memory + location is what gets described in the DWARF AT_location + attribute for the variable in question. + Regardless of the severe mental illness of the x86/svr4 SDB, we + do something sensible here and we use the following DWARF + register numbers. Note that these are all stack-top-relative + numbers. + 11 for %st(0) (gnu regno = 8) + 12 for %st(1) (gnu regno = 9) + 13 for %st(2) (gnu regno = 10) + 14 for %st(3) (gnu regno = 11) + 15 for %st(4) (gnu regno = 12) + 16 for %st(5) (gnu regno = 13) + 17 for %st(6) (gnu regno = 14) + 18 for %st(7) (gnu regno = 15) +*/ +#undef DBX_REGISTER_NUMBER +#define DBX_REGISTER_NUMBER(n) \ +((n) == 0 ? 0 \ + : (n) == 1 ? 2 \ + : (n) == 2 ? 1 \ + : (n) == 3 ? 3 \ + : (n) == 4 ? 6 \ + : (n) == 5 ? 7 \ + : (n) == 6 ? 5 \ + : (n) == 7 ? 4 \ + : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \ + : (-1)) + +/* Output assembler code to FILE to increment profiler label # LABELNO + for profiling a function entry. */ + +#undef FUNCTION_PROFILER +#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"); \ + } \ + else \ + { \ + fprintf (FILE, "\tmovl $%sP%d,%%edx\n", LPREFIX, (LABELNO)); \ + fprintf (FILE, "\tcall mcount\n"); \ + } \ +} + +#undef SIZE_TYPE +#define SIZE_TYPE "long unsigned int" + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "long int" + +#undef WCHAR_TYPE +#define WCHAR_TYPE "short unsigned int" + +#undef WCHAR_UNSIGNED +#define WCHAR_UNSIGNED 1 + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 16 + +#undef CPP_PREDEFINES +#define CPP_PREDEFINES "-D__ELF__ -D__BEOS__ -D__INTEL__ -D_X86_=1 \ +-D__stdcall=__attribute__((__stdcall__)) \ +-D__cdecl=__attribute__((__cdecl__)) \ +-D__declspec(x)=__attribute__((x)) \ +-Asystem(beos)" + +#undef CPP_SPEC +#define CPP_SPEC "%(cpp_cpu) %{!no-fPIC:%{!no-fpic:-D__PIC__ -D__pic__}}" + +/* BeOS uses lots of multichars, so don't warn about them unless the + user explicitly asks for the warnings with -Wmultichar. Note that + CC1_SPEC is used for both cc1 and cc1plus. */ + +#undef CC1_SPEC +#define CC1_SPEC "%{!no-fpic:%{!fPIC:-fpic}} %{!Wmultichar: -Wno-multichar} %(cc1_cpu) %{profile:-p}" + +#undef CC1PLUS_SPEC +#define CC1PLUS_SPEC "%{!Wctor-dtor-privacy:-Wno-ctor-dtor-privacy}" + +/* Provide a LINK_SPEC appropriate for BeOS. Here we provide support + for the special GCC options -static and -shared, which allow us to + link things in one of these three modes by applying the appropriate + combinations of options at link-time. */ + +/* If ELF is the default format, we should not use /lib/elf. */ + +#undef LINK_SPEC +#define LINK_SPEC "%{!o*:-o %b} -m elf_i386_be -shared -Bsymbolic %{nostart:-e 0}" + +/* Provide start and end file specs appropriate to glibc. */ + +/* LIB_SPEC for BeOS */ +#undef LIB_SPEC +#define LIB_SPEC "-lnet -lroot" + +/* gcc runtime lib is built into libroot.so on BeOS */ +/* ??? This is gonna be lovely when the next release of gcc has + some new symbol in, so that links start failing. */ +#undef LIBGCC_SPEC +#define LIBGCC_SPEC "" + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "crti.o%s crtbegin.o%s %{!nostart:start_dyn.o%s}" + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "crtend.o%s crtn.o%s" + +/* Get perform_* macros to build libgcc.a. */ +#include "i386/perform.h" + +/* A C statement (sans semicolon) to output to the stdio stream + FILE the assembler definition of uninitialized global DECL named + NAME whose size is SIZE bytes and alignment is ALIGN bytes. + Try to use asm_output_aligned_bss to implement this macro. */ + +#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ + asm_output_aligned_bss (FILE, DECL, NAME, SIZE, ALIGN) + +/* A C statement to output to the stdio stream FILE an assembler + command to advance the location counter to a multiple of 1< + +/* Arguments to use with `exit'. */ + +#define SUCCESS_EXIT_CODE 0 +#define FATAL_EXIT_CODE 33 + +/* Include to define the exit status access macros. */ +#ifndef inhibit_libc +#include +#endif + +#define ONLY_INT_FIELDS + +/* use ANSI/SYSV style byte manipulation routines instead of BSD ones */ + +#undef bcopy +#define bcopy(s,d,n) memmove((d),(s),(n)) +#undef bzero +#define bzero(d,n) memset((d),0,(n)) +#undef bcmp +#define bcmp(l,r,n) memcmp((l),(r),(n)) +#undef index +#define index strchr +#undef rindex +#define rindex strrchr + +/* BeOS is closer to USG than BSD */ + +#define USG + +/* Define various things that the BeOS host has. */ + +#ifndef HAVE_VPRINTF +#define HAVE_VPRINTF +#endif +#ifndef HAVE_PUTENV +#define HAVE_PUTENV +#endif +#define HAVE_RENAME + +#define STDC_HEADERS 1 diff --git a/gcc/configure.in b/gcc/configure.in index bf499fc53c79..4dbcf86f627c 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -409,7 +409,7 @@ AC_FUNC_MMAP GCC_NEED_DECLARATIONS(bcopy bzero bcmp \ index rindex getenv atol sbrk abort atof strerror getcwd getwd \ - strsignal putc_unlocked fputs_unlocked strstr) + strsignal putc_unlocked fputs_unlocked strstr environ) GCC_NEED_DECLARATIONS(malloc realloc calloc free, [ #ifdef HAVE_MALLOC_H @@ -1276,6 +1276,27 @@ changequote([,])dnl tm_file=i386/i386-aout.h tmake_file=i386/t-i386bare ;; +changequote(,)dnl + i[34567]86-*-beospe*) +changequote([,])dnl + xm_file=i386/xm-beos.h + xm_defines="USE_C_ALLOCA" + tmake_file=i386/t-beos + tm_file=i386/beos-pe.h + xmake_file=i386/x-beos + extra_objs=winnt.o + ;; +changequote(,)dnl + i[34567]86-*-beoself* | i[34567]86-*-beos*) +changequote([,])dnl + xm_file=i386/xm-beos.h + tmake_file='i386/t-beos i386/t-crtpic' + tm_file=i386/beos-elf.h + xmake_file=i386/x-beos + extra_objs=winnt.o + extra_parts='crtbegin.o crtend.o' + fixincludes=Makefile.in + ;; changequote(,)dnl i[34567]86-*-bsdi* | i[34567]86-*-bsd386*) changequote([,])dnl diff --git a/gcc/cross-make b/gcc/cross-make index 84be67fd605b..fef123c40cd4 100644 --- a/gcc/cross-make +++ b/gcc/cross-make @@ -5,7 +5,7 @@ LIBGCC1 = $(CROSS_LIBGCC1) # Dir to search for system headers. Normally /usr/include. # Use CROSS_INCLUDE_DIR not TOOL_INCLUDE_DIR for other vendor's headers. -SYSTEM_HEADER_DIR = $(tooldir)/sys-include +SYSTEM_HEADER_DIR = $(CROSS_SYSTEM_HEADER_DIR) # Don't try to compile the things we can't compile. ALL = all.cross diff --git a/gcc/gcc.c b/gcc/gcc.c index b65d6e8cc020..8f81369d1780 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -82,6 +82,11 @@ static char dir_separator_str[] = {DIR_SEPARATOR, 0}; #define GET_ENV_PATH_LIST(VAR,NAME) do { (VAR) = getenv (NAME); } while (0) #endif +/* Most every one is fine with LIBRARY_PATH. For some, it conflicts. */ +#ifndef LIBRARY_PATH_ENV +#define LIBRARY_PATH_ENV "LIBRARY_PATH" +#endif + #ifndef HAVE_KILL #define kill(p,s) raise(s) #endif @@ -240,6 +245,7 @@ static int execute PROTO ((void)); static void unused_prefix_warnings PROTO ((struct path_prefix *)); static void clear_args PROTO ((void)); static void fatal_error PROTO ((int)); +static void set_input PROTO ((const char *)); /* Specs are strings containing lines, each of which (if not blank) is made up of a program name, and arguments separated by spaces. @@ -1892,6 +1898,7 @@ build_search_list (paths, prefix, check_dir_p) struct prefix_list *pprefix; obstack_grow (&collect_obstack, prefix, strlen (prefix)); + obstack_1grow (&collect_obstack, '='); for (pprefix = paths->plist; pprefix != 0; pprefix = pprefix->next) { @@ -2941,7 +2948,7 @@ process_command (argc, argv) } } - GET_ENV_PATH_LIST (temp, "LIBRARY_PATH"); + GET_ENV_PATH_LIST (temp, LIBRARY_PATH_ENV); if (temp && *cross_compile == '0') { const char *startp, *endp; @@ -4935,6 +4942,37 @@ is_directory (path1, path2, linker) return (stat (path, &st) >= 0 && S_ISDIR (st.st_mode)); } + +/* Set up the various global variables to indicate that we're processing + the input file named FILENAME. */ + +static void +set_input (filename) + const char *filename; +{ + register const char *p; + + input_filename = filename; + input_filename_length = strlen (input_filename); + + input_basename = input_filename; + for (p = input_filename; *p; p++) + if (IS_DIR_SEPARATOR (*p)) + input_basename = p + 1; + + /* Find a suffix starting with the last period, + and set basename_length to exclude that suffix. */ + basename_length = strlen (input_basename); + p = input_basename + basename_length; + while (p != input_basename && *p != '.') --p; + if (*p == '.' && p != input_basename) + { + basename_length = p - input_basename; + input_suffix = p + 1; + } + else + input_suffix = ""; +} /* On fatal signals, delete all the temporary files. */ @@ -5335,9 +5373,8 @@ main (argc, argv) /* Tell do_spec what to substitute for %i. */ - input_filename = infiles[i].name; - input_filename_length = strlen (input_filename); input_file_number = i; + set_input (infiles[i].name); /* Use the same thing in %o, unless cp->spec says otherwise. */ @@ -5352,31 +5389,12 @@ main (argc, argv) { /* Ok, we found an applicable compiler. Run its spec. */ /* First say how much of input_filename to substitute for %b */ - register const char *p; int len; if (cp->spec[0][0] == '#') error ("%s: %s compiler not installed on this system", input_filename, &cp->spec[0][1]); - input_basename = input_filename; - for (p = input_filename; *p; p++) - if (IS_DIR_SEPARATOR (*p)) - input_basename = p + 1; - - /* Find a suffix starting with the last period, - and set basename_length to exclude that suffix. */ - basename_length = strlen (input_basename); - p = input_basename + basename_length; - while (p != input_basename && *p != '.') --p; - if (*p == '.' && p != input_basename) - { - basename_length = p - input_basename; - input_suffix = p + 1; - } - else - input_suffix = ""; - len = 0; for (j = 0; j < sizeof cp->spec / sizeof cp->spec[0]; j++) if (cp->spec[j]) @@ -5418,6 +5436,12 @@ main (argc, argv) clear_failure_queue (); } + /* Reset the output file name to the first input file name, for use + with %b in LINK_SPEC on a target that prefers not to emit a.out + by default. */ + if (n_infiles > 0) + set_input (infiles[0].name); + if (error_count == 0) { /* Make sure INPUT_FILE_NUMBER points to first available open @@ -5442,8 +5466,8 @@ main (argc, argv) } /* Rebuild the COMPILER_PATH and LIBRARY_PATH environment variables for collect. */ - putenv_from_prefixes (&exec_prefixes, "COMPILER_PATH="); - putenv_from_prefixes (&startfile_prefixes, "LIBRARY_PATH="); + putenv_from_prefixes (&exec_prefixes, "COMPILER_PATH"); + putenv_from_prefixes (&startfile_prefixes, LIBRARY_PATH_ENV); value = do_spec (link_command_spec); if (value < 0) diff --git a/gcc/ginclude/stdarg.h b/gcc/ginclude/stdarg.h index 2464599c1b5f..3337065a06c9 100644 --- a/gcc/ginclude/stdarg.h +++ b/gcc/ginclude/stdarg.h @@ -105,7 +105,10 @@ typedef __gnuc_va_list va_list; #ifndef _VA_LIST /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ #ifndef _VA_LIST_T_H +/* The macro __va_list__ is used by BeOS. */ +#ifndef __va_list__ typedef __gnuc_va_list va_list; +#endif /* not __va_list__ */ #endif /* not _VA_LIST_T_H */ #endif /* not _VA_LIST */ #endif /* not _VA_LIST_DEFINED */ @@ -121,6 +124,9 @@ typedef __gnuc_va_list va_list; #ifndef _VA_LIST_T_H #define _VA_LIST_T_H #endif +#ifndef __va_list__ +#define __va_list__ +#endif #endif /* not _VA_LIST_, except on certain systems */ diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h index 0004ec774079..ae1037fd09d8 100644 --- a/gcc/ginclude/stddef.h +++ b/gcc/ginclude/stddef.h @@ -274,12 +274,8 @@ typedef _BSD_RUNE_T_ rune_t; #endif #ifndef __WCHAR_TYPE__ -#ifdef __BEOS__ -#define __WCHAR_TYPE__ unsigned char -#else #define __WCHAR_TYPE__ int #endif -#endif #ifndef __cplusplus typedef __WCHAR_TYPE__ wchar_t; #endif diff --git a/gcc/ginclude/varargs.h b/gcc/ginclude/varargs.h index 6c70f7a0440e..210b9674743f 100644 --- a/gcc/ginclude/varargs.h +++ b/gcc/ginclude/varargs.h @@ -108,7 +108,10 @@ typedef __gnuc_va_list va_list; #ifndef _VA_LIST /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ #ifndef _VA_LIST_T_H +/* The macro __va_list__ is used by BeOS. */ +#ifndef __va_list__ typedef __gnuc_va_list va_list; +#endif /* not __va_list__ */ #endif /* not _VA_LIST_T_H */ #endif /* not _VA_LIST */ #endif /* not _VA_LIST_DEFINED */ @@ -124,6 +127,9 @@ typedef __gnuc_va_list va_list; #ifndef _VA_LIST_T_H #define _VA_LIST_T_H #endif +#ifndef __va_list__ +#define __va_list__ +#endif #endif /* not _VA_LIST_, except on certain systems */ diff --git a/gcc/hash.h b/gcc/hash.h index ac3b1ede5701..b42502b81088 100644 --- a/gcc/hash.h +++ b/gcc/hash.h @@ -25,6 +25,10 @@ Boston, MA 02111-1307, USA. */ #include "obstack.h" +#undef false +#undef true +#undef boolean + typedef enum {false, true} boolean; typedef PTR hash_table_key; diff --git a/gcc/system.h b/gcc/system.h index 431b32fa2cae..5d31b45f2acb 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -176,6 +176,11 @@ extern int errno; #ifdef HAVE_STDLIB_H # include +# ifdef USE_C_ALLOCA +/* Note that systems that use glibc have a that includes + that defines alloca, so let USE_C_ALLOCA override this. */ +# undef alloca +#endif #endif #ifdef HAVE_UNISTD_H diff --git a/gcc/tm.texi b/gcc/tm.texi index b2d43c954ac2..385a0dcb940e 100644 --- a/gcc/tm.texi +++ b/gcc/tm.texi @@ -461,7 +461,7 @@ The environment variable @code{GCC_EXEC_PREFIX}, if any. @item The directories specified by the environment variable @code{LIBRARY_PATH} -(native only, cross compilers do not use this). +(or port-specific name; native only, cross compilers do not use this). @item The macro @code{STANDARD_EXEC_PREFIX}. @@ -2281,6 +2281,12 @@ during virtual register instantiation. You only need to define this macro if you want to support call frame debugging information like that provided by DWARF 2. + +@findex SMALL_STACK +@item SMALL_STACK +Define this macro if the stack size for the target is very small. This +has the effect of disabling gcc's builtin @samp{alloca}, though +@samp{__builtin_alloca} is not affected. @end table @node Stack Checking @@ -7784,4 +7790,12 @@ in the system math library, or @samp{""} if the target does not have a separate math library. You need only define this macro if the default of @samp{"-lm"} is wrong. + +@findex LIBRARY_PATH_ENV +@item LIBRARY_PATH_ENV +Define this macro as a C string constant for the environment variable that +specifies where the linker should look for libraries. + +You need only define this macro if the default of @samp{"LIBRARY_PATH"} +is wrong. @end table diff --git a/gcc/toplev.c b/gcc/toplev.c index 4ddfc04bdad7..9c4a184a79cb 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -138,7 +138,7 @@ You Lose! You must define PREFERRED_DEBUGGING_TYPE! #define PREFERRED_DEBUGGING_TYPE NO_DEBUG #endif -#if ! (defined (VMS) || defined (OS2)) +#ifdef NEED_DECLARATION_ENVIRON extern char **environ; #endif extern char *version_string; -- 2.39.5