summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2001-02-03 20:59:20 +0000
committerMarc Espie <espie@cvs.openbsd.org>2001-02-03 20:59:20 +0000
commit37ba4fdf983f9ba3e80de8259dca740681d9dffd (patch)
tree30dfef265f15b12e11e1ee020d815771a3ab2f16
parentd54787f2c0f2fde0a4d0213d367c261b73a08da6 (diff)
update configuration for elf: remove ecoff markers, handle alpha assembler
peculiarities, set up correct init/fini code for elf.
-rw-r--r--gnu/egcs/gcc/config/alpha/openbsd.h84
1 files changed, 23 insertions, 61 deletions
diff --git a/gnu/egcs/gcc/config/alpha/openbsd.h b/gnu/egcs/gcc/config/alpha/openbsd.h
index 60591d554f5..40c06241c9a 100644
--- a/gnu/egcs/gcc/config/alpha/openbsd.h
+++ b/gnu/egcs/gcc/config/alpha/openbsd.h
@@ -22,15 +22,13 @@ Boston, MA 02111-1307, USA. */
#define TARGET_ENDIAN_DEFAULT 0
#include <alpha/alpha.h>
+#include <alpha/elf.h>
#define OBSD_NO_DYNAMIC_LIBRARIES
#define OBSD_HAS_DECLARE_FUNCTION_NAME
#define OBSD_HAS_DECLARE_FUNCTION_SIZE
#define OBSD_HAS_DECLARE_OBJECT
-/* alpha ecoff supports only weak aliases, see below. */
-#define ASM_WEAKEN_LABEL(FILE,NAME) ASM_OUTPUT_WEAK_ALIAS (FILE,NAME,0)
-
#include <openbsd.h>
/* Controlling the compilation driver. */
@@ -40,9 +38,17 @@ Boston, MA 02111-1307, USA. */
#define LINK_SPEC \
"%{!nostdlib:%{!r*:%{!e*:-e __start}}} -dc -dp %{assert*}"
+/* As an elf system, we need crtbegin/crtend stuff. */
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "\
+ %{!shared: %{pg:gcrt0%O%s} %{!pg:%{p:gcrt0%O%s} %{!p:crt0%O%s}} \
+ crtbegin%O%s} %{shared:crtbeginS%O%s}"
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC "%{!shared:crtend%O%s} %{shared:crtendS%O%s}"
+
/* run-time target specifications */
#define CPP_PREDEFINES "-D__unix__ -D__ANSI_COMPAT -Asystem(unix) \
--D__OpenBSD__ -D__alpha__ -D__alpha"
+-D__OpenBSD__ -D__alpha__ -D__alpha -D__ELF__"
/* Layout of source language data types. */
@@ -63,64 +69,20 @@ Boston, MA 02111-1307, USA. */
#undef PREFERRED_DEBUGGING_TYPE
#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
+/* Output and generation of labels. */
#define LOCAL_LABEL_PREFIX "."
-/* We don't have an init section yet. */
-#undef HAS_INIT_SECTION
-
-/* collect2 support (assembler format: macros for initialization). */
-
-/* Don't tell collect2 we use COFF as we don't have (yet ?) a dynamic ld
- library with the proper functions to handle this -> collect2 will
- default to using nm. */
-#undef OBJECT_FORMAT_COFF
-#undef EXTENDED_COFF
-
-/* Assembler format: exception region output. */
-
-/* All configurations that don't use elf must be explicit about not using
- dwarf unwind information. egcs doesn't try too hard to check internal
- configuration files... */
-#ifdef INCOMING_RETURN_ADDR_RTX
-#undef DWARF2_UNWIND_INFO
-#define DWARF2_UNWIND_INFO 0
-#endif
-
-/* Assembler format: file framework. */
-
-/* Taken from alpha/osf.h. This used to be common to all alpha
- configurations, but elf has departed from it.
- Check alpha/alpha.h, alpha/osf.h for it when egcs is upgraded. */
-#ifndef ASM_FILE_START
-#define ASM_FILE_START(FILE) \
-{ \
- alpha_write_verstamp (FILE); \
- fprintf (FILE, "\t.set noreorder\n"); \
- fprintf (FILE, "\t.set volatile\n"); \
- fprintf (FILE, "\t.set noat\n"); \
- if (TARGET_SUPPORT_ARCH) \
- fprintf (FILE, "\t.arch %s\n", \
- alpha_cpu == PROCESSOR_EV6 ? "ev6" \
- : (alpha_cpu == PROCESSOR_EV5 \
- ? (TARGET_MAX ? "pca56" : TARGET_BWX ? "ev56" : "ev5") \
- : "ev4")); \
- \
- ASM_OUTPUT_SOURCE_FILENAME (FILE, main_input_filename); \
-}
-#endif
-
-/* Assembler format: label output. */
-
-#define ASM_OUTPUT_WEAK_ALIAS(FILE,NAME,VALUE) \
- do { \
- fputs ("\t.weakext\t", FILE); \
- assemble_name (FILE, NAME); \
- if (VALUE) \
- { \
- fputs (" , ", FILE); \
- assemble_name (FILE, VALUE); \
- } \
- fputc ('\n', FILE); \
+/* .set on alpha is not used to output labels. */
+#undef SET_ASM_OP
+
+/* So, provide corresponding default, without the .set. */
+#undef ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL
+#define ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL(FILE, SY, HI, LO) \
+ do { \
+ assemble_name (FILE, SY); \
+ fputc ('=', FILE); \
+ assemble_name (FILE, HI); \
+ fputc ('-', FILE); \
+ assemble_name (FILE, LO); \
} while (0)
-