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}}"