142 lines
4.2 KiB
C
142 lines
4.2 KiB
C
/* XXX */
|
|
/*
|
|
* This file was derived from source obtained from NetBSD/Alpha which
|
|
* is publicly available for ftp. The patch was developed by cgd@netbsd.org
|
|
* during the time he worked at CMU. He claims that CMU own this patch
|
|
* to gcc and that they have not (and will not) release the patch for
|
|
* incorporation in FSF sources. We are supposedly able to use the patch,
|
|
* but we are not allowed to forward it back to FSF for inclusion in
|
|
* their source releases.
|
|
*
|
|
* This all has me (jb@freebsd.org) confused because (a) I see no copyright
|
|
* messages that tell me that use is restricted; and (b) I expected that
|
|
* the patch was originally developed from other files which are subject
|
|
* to GPL.
|
|
*
|
|
* Use of this file is restricted until its CMU ownership is tested.
|
|
*/
|
|
|
|
#include "alpha/alpha.h"
|
|
#include "alpha/elf.h"
|
|
|
|
#undef WCHAR_TYPE
|
|
#define WCHAR_TYPE "int"
|
|
|
|
#undef WCHAR_TYPE_SIZE
|
|
#define WCHAR_TYPE_SIZE 32
|
|
|
|
/* 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"
|
|
|
|
#undef INCLUDE_DEFAULTS
|
|
#define INCLUDE_DEFAULTS \
|
|
{ \
|
|
{ GPLUSPLUS_INCLUDE_DIR, 1, 1 }, \
|
|
{ GCC_INCLUDE_DIR, 0, 0 }, \
|
|
{ 0, 0, 0 } \
|
|
}
|
|
|
|
|
|
/* Under FreeBSD, the normal location of the `ld' and `as' programs is the
|
|
/usr/bin directory. */
|
|
|
|
#undef MD_EXEC_PREFIX
|
|
#define MD_EXEC_PREFIX "/usr/bin/"
|
|
|
|
/* Under FreeBSD, the normal location of the various *crt*.o files is the
|
|
/usr/lib directory. */
|
|
|
|
#undef MD_STARTFILE_PREFIX
|
|
#define MD_STARTFILE_PREFIX "/usr/lib/"
|
|
|
|
|
|
/* Provide a CPP_SPEC appropriate for FreeBSD. Current we just deal with
|
|
the GCC option `-posix'. */
|
|
|
|
#undef CPP_SPEC
|
|
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE}"
|
|
|
|
/* Provide an ASM_SPEC appropriate for FreeBSD. */
|
|
|
|
#undef ASM_SPEC
|
|
#define ASM_SPEC " %|"
|
|
|
|
#undef ASM_FINAL_SPEC
|
|
|
|
/* Like the default, except no -lg, and no -p. */
|
|
#undef LIB_SPEC
|
|
#define LIB_SPEC "%{!shared:%{!pg:%{!pthread:%{!kthread:-lc}%{kthread:-lpthread -lc}}%{pthread:-lc_r}}%{pg:%{!pthread:%{!kthread:-lc_p}%{kthread:-lpthread_p -lc_p}}%{pthread:-lc_r_p}}}"
|
|
|
|
/* 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) \
|
|
fputs ("\tjsr $28,_mcount\n", (FILE)); /* at */
|
|
|
|
/* Show that we need a GP when profiling. */
|
|
#define TARGET_PROFILING_NEEDS_GP
|
|
|
|
#define bsd4_4
|
|
#undef HAS_INIT_SECTION
|
|
|
|
#undef PREFERRED_DEBUGGING_TYPE
|
|
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
|
|
|
|
#undef TARGET_VERSION
|
|
#define TARGET_VERSION fprintf (stderr, " (FreeBSD/alpha ELF)");
|
|
|
|
#undef SDB_DEBUGGING_INFO
|
|
#define SDB_DEBUGGING_INFO
|
|
#undef DBS_DEBUGGING_INFO
|
|
#define DBX_DEBUGGING_INFO
|
|
|
|
#undef PREFERRED_DEBUGGING_TYPE
|
|
#define PREFERRED_DEBUGGING_TYPE \
|
|
((len > 1 && !strncmp (str, "gsdb", len)) ? SDB_DEBUG : DBX_DEBUG)
|
|
|
|
#undef CPP_PREDEFINES
|
|
#define CPP_PREDEFINES "-Dunix -D__alpha -D__alpha__ -D__ELF__ -D__FreeBSD__=3 -Asystem(unix) -Asystem(FreeBSD) -Acpu(alpha) -Amachine(alpha)"
|
|
|
|
#undef LINK_SPEC
|
|
#define LINK_SPEC "-m elf64alpha \
|
|
%{O*:-O3} %{!O*:-O1} \
|
|
%{assert*} \
|
|
%{shared:-shared} \
|
|
%{!shared: \
|
|
-dc -dp \
|
|
%{!nostdlib:%{!r*:%{!e*:-e _start}}} \
|
|
%{!static: \
|
|
%{rdynamic:-export-dynamic} \
|
|
%{!dynamic-linker:-dynamic-linker /usr/libexec/ld-elf.so.1}} \
|
|
%{static:-static}}"
|
|
|
|
/* Provide a STARTFILE_SPEC for FreeBSD that is compatible with the
|
|
non-aout version used on i386. */
|
|
|
|
#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 FreeBSD. Here we tack on
|
|
the file which provides part of the support for getting C++
|
|
file-scope static object deconstructed after exiting `main' */
|
|
|
|
#undef ENDFILE_SPEC
|
|
#define ENDFILE_SPEC \
|
|
"%{!shared:crtend.o%s} %{shared:crtendS.o%s}"
|
|
|
|
/* Handle #pragma weak and #pragma pack. */
|
|
|
|
#define HANDLE_SYSV_PRAGMA
|
|
|
|
#undef SET_ASM_OP
|
|
#define SET_ASM_OP ".set"
|