summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/config/netbsd-elf.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/config/netbsd-elf.h')
-rw-r--r--contrib/gcc/config/netbsd-elf.h59
1 files changed, 39 insertions, 20 deletions
diff --git a/contrib/gcc/config/netbsd-elf.h b/contrib/gcc/config/netbsd-elf.h
index 7dd9ff3..cb38b93 100644
--- a/contrib/gcc/config/netbsd-elf.h
+++ b/contrib/gcc/config/netbsd-elf.h
@@ -19,6 +19,14 @@ 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. */
+/* TARGET_OS_CPP_BUILTINS() common to all NetBSD ELF targets. */
+#define NETBSD_OS_CPP_BUILTINS_ELF() \
+ do \
+ { \
+ NETBSD_OS_CPP_BUILTINS_COMMON(); \
+ builtin_define ("__ELF__"); \
+ } \
+ while (0)
/* This defines which switch letters take arguments. On NetBSD, most
of the normal cases (defined by gcc.c) apply, and we also have -h*
@@ -38,39 +46,50 @@ Boston, MA 02111-1307, USA. */
of the support for getting C++ file-scope static objects
constructed before entering "main". */
-#undef STARTFILE_SPEC
-#define STARTFILE_SPEC \
+#define NETBSD_STARTFILE_SPEC \
"%{!shared: \
%{pg:gcrt0%O%s} \
%{!pg: \
%{p:gcrt0%O%s} \
%{!p:crt0%O%s}}} \
- %{!shared:crtbegin%O%s} %{shared:crtbeginS%O%s}"
+ %:if-exists(crti%O%s) \
+ %{static:%:if-exists-else(crtbeginT%O%s crtbegin%O%s)} \
+ %{!static: \
+ %{!shared:crtbegin%O%s} %{shared:crtbeginS%O%s}}"
+
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC NETBSD_STARTFILE_SPEC
/* Provide an ENDFILE_SPEC appropriate for NetBSD ELF. Here we
add crtend.o, which provides part of the support for getting
C++ file-scope static objects deconstructed after exiting "main". */
-#undef ENDFILE_SPEC
-#define ENDFILE_SPEC \
- "%{!shared:crtend%O%s} %{shared:crtendS%O%s}"
+#define NETBSD_ENDFILE_SPEC \
+ "%{!shared:crtend%O%s} %{shared:crtendS%O%s} \
+ %:if-exists(crtn%O%s)"
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC NETBSD_ENDFILE_SPEC
/* Provide a LINK_SPEC appropriate for NetBSD ELF. Here we provide
support for the special GCC options -assert, -R, -rpath, -shared,
- -nostdlib, -static, -rdynamic, and -dynamic-linker. */
-
-#undef LINK_SPEC
-#define LINK_SPEC \
- "%{assert*} %{R*} %{rpath*} \
- %{shared:-shared} \
- %{!shared: \
- -dc -dp \
- %{!nostdlib: \
- %{!r*: \
- %{!e*:-e __start}}} \
- %{!static: \
- %{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}} \
+ -nostdlib, -static, -rdynamic, and -dynamic-linker.
+
+ Target-specific code can use this in conjunction with any other
+ target-specific LINK_SPEC options.
+
+ Target-specific code must provide the %(netbsd_entry_point) spec. */
+
+#define NETBSD_LINK_SPEC_ELF \
+ "%{assert*} %{R*} %{rpath*} \
+ %{shared:-shared} \
+ %{!shared: \
+ -dc -dp \
+ %{!nostdlib: \
+ %{!r*: \
+ %{!e*:-e %(netbsd_entry_point)}}} \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}} \
%{static:-static}}"
OpenPOWER on IntegriCloud