23,25d22
< /* This goes away when the math-emulator is fixed */
< #define TARGET_CPU_DEFAULT 0400 /* TARGET_NO_FANCY_MATH_387 */
<
35a33,38
>
> /* This was 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. */
36a40,83
> #ifdef FREEBSD_NATIVE
>
> /* Look for the include files in the system-defined places. */
>
> #define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++"
>
> #define GCC_INCLUDE_DIR "/usr/include"
>
> /* FreeBSD has GCC_INCLUDE_DIR first. */
> #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. */
>
> #define STANDARD_EXEC_PREFIX "/usr/libexec/"
>
> /* Under FreeBSD, the normal location of the various *crt*.o files is the
> /usr/lib directory. */
>
> #define STANDARD_STARTFILE_PREFIX "/usr/lib/"
>
> /* On FreeBSD, gcc is called 'cc' */
> #define GCC_NAME "cc"
>
> /* FreeBSD is 4.4BSD derived */
> #define bsd4_4
>
> #endif /* FREEBSD_NATIVE */
>
> #define MASK_PROFILER_EPILOGUE 010000000000
>
> #define TARGET_PROFILER_EPILOGUE (target_flags & MASK_PROFILER_EPILOGUE)
>
> #undef SUBTARGET_SWITCHES
> #define SUBTARGET_SWITCHES \
> { "profiler-epilogue", MASK_PROFILER_EPILOGUE}, \
> { "no-profiler-epilogue", -MASK_PROFILER_EPILOGUE},
>
>
38c85
< #define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__ -D__386BSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
---
> #define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__=2 -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
39a87,88
> #define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}"
>
42a92,104
> #define LINK_SPEC \
> "%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*} \
> %{p:-Bstatic} %{pg:-Bstatic} %{Z}"
>
> #define LINK_LIBGCC_SPECIAL_1 1
>
> #define STARTFILE_SPEC \
> "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
>
> /* This goes away when the math emulator is fixed. */
> #undef TARGET_DEFAULT
> #define TARGET_DEFAULT (MASK_NO_FANCY_MATH_387 | 0301)
>
50c112
< #define WCHAR_TYPE "short unsigned int"
---
> #define WCHAR_TYPE "int"
52c114
< #define WCHAR_UNSIGNED 1
---
> #define WCHAR_UNSIGNED 0
55c117
< #define WCHAR_TYPE_SIZE 16
---
> #define WCHAR_TYPE_SIZE BITS_PER_WORD
59,62c121
< /* 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 "#"
---
> #define HAVE_PUTENV
63a123,127
> /* Override the default comment-starter of "/". */
>
> #undef ASM_COMMENT_START
> #define ASM_COMMENT_START "#"
>
89,90d152
<
< /* Profiling routines, partially copied from i386/osfrose.h. */
92c154,159
< /* Redefine this to use %eax instead of %edx. */
---
> /* 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. */
>
97,101c164
< { \
< fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%eax\n", \
< LPREFIX, (LABELNO)); \
< fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
< } \
---
> fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
102a166,171
> fprintf (FILE, "\tcall mcount\n"); \
> }
>
> #define FUNCTION_PROFILER_EPILOGUE(FILE) \
> { \
> if (TARGET_PROFILER_EPILOGUE) \
104,105c173,176
< fprintf (FILE, "\tmovl $%sP%d,%%eax\n", LPREFIX, (LABELNO)); \
< fprintf (FILE, "\tcall mcount\n"); \
---
> if (flag_pic) \
> fprintf (FILE, "\tcall *mexitcount@GOT(%%ebx)\n"); \
> else \
> fprintf (FILE, "\tcall mexitcount\n"); \
108c179
<
---
>
113a185,186
> #define HANDLE_SYSV_PRAGMA
>
121a195
> #define SET_ASM_OP ".set"
122a197,207
> /* This is how we tell the assembler that a symbol is weak. */
>
> #if 0 /* not ready for this yet - work in progress.
> * We should probably update gas in the FreeBSD source to something
> * more recent, so that this is recognised. Our LD handles it already.
> */
> #define ASM_WEAKEN_LABEL(FILE,NAME) \
> do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
> fputc ('\n', FILE); } while (0)
> #endif
>
220,250d304
<
< #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 */
< /* This goes away when the math-emulator is fixed */
< #define TARGET_CPU_DEFAULT 0400 /* TARGET_NO_FANCY_MATH_387 */
<
35a33,38
>
> /* This was 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. */
36a40,83
> #ifdef FREEBSD_NATIVE
>
> /* Look for the include files in the system-defined places. */
>
> #define GPLUSPLUS_INCLUDE_DIR "/usr/include/g++"
>
> #define GCC_INCLUDE_DIR "/usr/include"
>
> /* FreeBSD has GCC_INCLUDE_DIR first. */
> #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. */
>
> #define STANDARD_EXEC_PREFIX "/usr/libexec/"
>
> /* Under FreeBSD, the normal location of the various *crt*.o files is the
> /usr/lib directory. */
>
> #define STANDARD_STARTFILE_PREFIX "/usr/lib/"
>
> /* On FreeBSD, gcc is called 'cc' */
> #define GCC_NAME "cc"
>
> /* FreeBSD is 4.4BSD derived */
> #define bsd4_4
>
> #endif /* FREEBSD_NATIVE */
>
> #define MASK_PROFILER_EPILOGUE 010000000000
>
> #define TARGET_PROFILER_EPILOGUE (target_flags & MASK_PROFILER_EPILOGUE)
>
> #undef SUBTARGET_SWITCHES
> #define SUBTARGET_SWITCHES \
> { "profiler-epilogue", MASK_PROFILER_EPILOGUE}, \
> { "no-profiler-epilogue", -MASK_PROFILER_EPILOGUE},
>
>
38c85
< #define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__ -D__386BSD__ -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
---
> #define CPP_PREDEFINES "-Dunix -Di386 -D__FreeBSD__=2 -Asystem(unix) -Asystem(FreeBSD) -Acpu(i386) -Amachine(i386)"
39a87,88
> #define ASM_SPEC " %| %{fpic:-k} %{fPIC:-k}"
>
42a92,104
> #define LINK_SPEC \
> "%{!nostdlib:%{!r:%{!e*:-e start}}} -dc -dp %{static:-Bstatic} %{assert*} \
> %{p:-Bstatic} %{pg:-Bstatic} %{Z}"
>
> #define LINK_LIBGCC_SPECIAL_1 1
>
> #define STARTFILE_SPEC \
> "%{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:%{static:scrt0.o%s}%{!static:crt0.o%s}}}"
>
> /* This goes away when the math emulator is fixed. */
> #undef TARGET_DEFAULT
> #define TARGET_DEFAULT (MASK_NO_FANCY_MATH_387 | 0301)
>
50c112
< #define WCHAR_TYPE "short unsigned int"
---
> #define WCHAR_TYPE "int"
52c114
< #define WCHAR_UNSIGNED 1
---
> #define WCHAR_UNSIGNED 0
55c117
< #define WCHAR_TYPE_SIZE 16
---
> #define WCHAR_TYPE_SIZE BITS_PER_WORD
59,62c121
< /* 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 "#"
---
> #define HAVE_PUTENV
63a123,127
> /* Override the default comment-starter of "/". */
>
> #undef ASM_COMMENT_START
> #define ASM_COMMENT_START "#"
>
89,90d152
<
< /* Profiling routines, partially copied from i386/osfrose.h. */
92c154,159
< /* Redefine this to use %eax instead of %edx. */
---
> /* 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. */
>
97,101c164
< { \
< fprintf (FILE, "\tleal %sP%d@GOTOFF(%%ebx),%%eax\n", \
< LPREFIX, (LABELNO)); \
< fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
< } \
---
> fprintf (FILE, "\tcall *mcount@GOT(%%ebx)\n"); \
102a166,171
> fprintf (FILE, "\tcall mcount\n"); \
> }
>
> #define FUNCTION_PROFILER_EPILOGUE(FILE) \
> { \
> if (TARGET_PROFILER_EPILOGUE) \
104,105c173,176
< fprintf (FILE, "\tmovl $%sP%d,%%eax\n", LPREFIX, (LABELNO)); \
< fprintf (FILE, "\tcall mcount\n"); \
---
> if (flag_pic) \
> fprintf (FILE, "\tcall *mexitcount@GOT(%%ebx)\n"); \
> else \
> fprintf (FILE, "\tcall mexitcount\n"); \
108c179
<
---
>
113a185,186
> #define HANDLE_SYSV_PRAGMA
>
121a195
> #define SET_ASM_OP ".set"
122a197,207
> /* This is how we tell the assembler that a symbol is weak. */
>
> #if 0 /* not ready for this yet - work in progress.
> * We should probably update gas in the FreeBSD source to something
> * more recent, so that this is recognised. Our LD handles it already.
> */
> #define ASM_WEAKEN_LABEL(FILE,NAME) \
> do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
> fputc ('\n', FILE); } while (0)
> #endif
>
220,250d304
<
< #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 */