$OpenBSD: patch-gcc_config_alpha_openbsd_h,v 1.6 2004/01/31 15:23:58 espie Exp $
--- gcc/config/alpha/openbsd.h.orig	2002-05-13 07:57:38.000000000 +0200
+++ gcc/config/alpha/openbsd.h	2003-11-10 20:24:08.000000000 +0100
@@ -21,22 +21,25 @@ Boston, MA 02111-1307, USA.  */
 /* We settle for little endian for now.  */
 #define TARGET_ENDIAN_DEFAULT 0
 
-#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.  */
 
 /* alpha needs __start.  */
 #undef LINK_SPEC
 #define LINK_SPEC \
-  "%{!nostdlib:%{!r*:%{!e*:-e __start}}} -dc -dp %{assert*}"
+  "%{!shared:%{!nostdlib:%{!r*:%{!e*:-e __start}}}} \
+   %{shared:-shared} %{R*} \
+   %{static:-Bstatic} \
+   %{!static:-Bdynamic} \
+   %{assert*} \
+   %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.so}"
+
+/* 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 TARGET_OS_CPP_BUILTINS()		\
@@ -44,6 +47,7 @@ Boston, MA 02111-1307, USA.  */
 	builtin_define ("__OpenBSD__");		\
 	builtin_define ("__ANSI_COMPAT");	\
 	builtin_define ("__unix__");		\
+	builtin_define ("__ELF__");		\
 	builtin_assert ("system=unix");		\
     } while (0)
 
@@ -63,67 +67,22 @@ Boston, MA 02111-1307, USA.  */
 #define WCHAR_TYPE_SIZE 32
 
 
-#undef PREFERRED_DEBUGGING_TYPE
-#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
+/* #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",				\
-             TARGET_CPU_EV6 ? "ev6"				\
-	     : (TARGET_CPU_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);				\
- } while (0)
-
+/* .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)
