diff --git a/lang/egcs/stable/patches/patch-gcc_config_alpha_openbsd1_h b/lang/egcs/stable/patches/patch-gcc_config_alpha_openbsd1_h new file mode 100644 index 00000000000..52d0a18ab04 --- /dev/null +++ b/lang/egcs/stable/patches/patch-gcc_config_alpha_openbsd1_h @@ -0,0 +1,27 @@ +$OpenBSD: patch-gcc_config_alpha_openbsd1_h,v 1.1 2002/06/03 18:33:33 espie Exp $ +--- gcc/config/alpha/openbsd1.h.orig Mon Jun 3 17:18:18 2002 ++++ gcc/config/alpha/openbsd1.h Mon Jun 3 17:17:57 2002 +@@ -0,0 +1,23 @@ ++/* Configuration fragment for an alpha OpenBSD target. ++ Copyright (C) 1999 Free Software Foundation, Inc. ++ ++This file is part of GNU CC. ++ ++GNU CC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 2, or (at your option) ++any later version. ++ ++GNU CC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++You should have received a copy of the GNU General Public License ++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. */ ++ ++#define OBSD_HAS_DECLARE_FUNCTION_NAME ++#define OBSD_HAS_DECLARE_FUNCTION_SIZE ++#define OBSD_HAS_DECLARE_OBJECT diff --git a/lang/egcs/stable/patches/patch-gcc_config_alpha_openbsd_h b/lang/egcs/stable/patches/patch-gcc_config_alpha_openbsd_h index cd5f949fca8..3f6004b3ba1 100644 --- a/lang/egcs/stable/patches/patch-gcc_config_alpha_openbsd_h +++ b/lang/egcs/stable/patches/patch-gcc_config_alpha_openbsd_h @@ -1,24 +1,24 @@ -$OpenBSD: patch-gcc_config_alpha_openbsd_h,v 1.2 2002/05/29 13:22:11 espie Exp $ +$OpenBSD: patch-gcc_config_alpha_openbsd_h,v 1.3 2002/06/03 18:33:33 espie Exp $ --- gcc/config/alpha/openbsd.h.orig Fri Nov 3 00:29:08 2000 -+++ gcc/config/alpha/openbsd.h Wed May 29 15:04:18 2002 -@@ -22,15 +22,12 @@ Boston, MA 02111-1307, USA. */ ++++ gcc/config/alpha/openbsd.h Mon Jun 3 17:18:12 2002 +@@ -21,28 +21,28 @@ Boston, MA 02111-1307, USA. */ + /* We settle for little endian for now. */ #define TARGET_ENDIAN_DEFAULT 0 - #include -+#include - +-#include +- -#define OBSD_NO_DYNAMIC_LIBRARIES - #define OBSD_HAS_DECLARE_FUNCTION_NAME - #define OBSD_HAS_DECLARE_FUNCTION_SIZE - #define OBSD_HAS_DECLARE_OBJECT - +-#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 - +-#include +- /* Controlling the compilation driver. */ -@@ -38,11 +35,23 @@ Boston, MA 02111-1307, USA. */ + /* alpha needs __start. */ #undef LINK_SPEC #define LINK_SPEC \ @@ -45,7 +45,7 @@ $OpenBSD: patch-gcc_config_alpha_openbsd_h,v 1.2 2002/05/29 13:22:11 espie Exp $ /* Layout of source language data types. */ -@@ -63,64 +72,19 @@ Boston, MA 02111-1307, USA. */ +@@ -63,64 +63,19 @@ Boston, MA 02111-1307, USA. */ #undef PREFERRED_DEBUGGING_TYPE #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG diff --git a/lang/egcs/stable/patches/patch-gcc_config_gcc b/lang/egcs/stable/patches/patch-gcc_config_gcc index 2f69151202f..6010963e9e7 100644 --- a/lang/egcs/stable/patches/patch-gcc_config_gcc +++ b/lang/egcs/stable/patches/patch-gcc_config_gcc @@ -1,7 +1,11 @@ -$OpenBSD: patch-gcc_config_gcc,v 1.10 2002/05/30 21:15:28 espie Exp $ +$OpenBSD: patch-gcc_config_gcc,v 1.11 2002/06/03 18:33:33 espie Exp $ --- gcc/config.gcc.orig Thu May 2 23:28:49 2002 -+++ gcc/config.gcc Thu May 30 23:12:01 2002 -@@ -579,6 +579,7 @@ alpha*-*-openbsd*) ++++ gcc/config.gcc Mon Jun 3 17:17:34 2002 +@@ -576,9 +576,11 @@ alpha*-*-netbsd*) + ;; + + alpha*-*-openbsd*) ++ tm_file="alpha/alpha.h alpha/elf.h alpha/openbsd1.h openbsd.h ${tm_file}" # default x-alpha is only appropriate for dec-osf. target_cpu_default="MASK_GAS" tmake_file="alpha/t-alpha alpha/t-ieee" @@ -9,7 +13,7 @@ $OpenBSD: patch-gcc_config_gcc,v 1.10 2002/05/30 21:15:28 espie Exp $ ;; alpha*-dec-osf*) -@@ -2762,6 +2763,7 @@ romp-*-openbsd*) +@@ -2762,6 +2764,7 @@ romp-*-openbsd*) # Nothing special ;; powerpc-*-openbsd*) @@ -17,13 +21,13 @@ $OpenBSD: patch-gcc_config_gcc,v 1.10 2002/05/30 21:15:28 espie Exp $ tmake_file="${tmake_file} rs6000/t-rs6000 rs6000/t-openbsd" extra_headers= ;; -@@ -3086,6 +3088,13 @@ sparc-*-openbsd*) +@@ -3086,6 +3089,13 @@ sparc-*-openbsd*) tmake_file="t-libc-ok t-openbsd sparc/t-openbsd" # we need collect2 until our bug is fixed... use_collect2=yes + ;; +sparc64-*-openbsd*) -+ tm_file="sparc/openbsd1-64.h sparc/sparc.h elfos.h svr4.h sparc/sysv4.h sparc/sol2.h sparc/sp64-elf.h openbsd.h sparc/openbsd64.h" ++ tm_file="sparc/openbsd1-64.h sparc/sparc.h elfos.h svr4.h sparc/sysv4.h sparc/sp64-elf.h openbsd.h sparc/openbsd64.h" + xm_file=sparc/xm-sp64.h + gas=yes gnu_ld=yes + with_cpu=ultrasparc diff --git a/lang/egcs/stable/patches/patch-gcc_config_sparc_openbsd64_h b/lang/egcs/stable/patches/patch-gcc_config_sparc_openbsd64_h index 6f4e21924bb..280daae0a3d 100644 --- a/lang/egcs/stable/patches/patch-gcc_config_sparc_openbsd64_h +++ b/lang/egcs/stable/patches/patch-gcc_config_sparc_openbsd64_h @@ -1,7 +1,7 @@ -$OpenBSD: patch-gcc_config_sparc_openbsd64_h,v 1.7 2002/06/03 10:13:34 art Exp $ ---- gcc/config/sparc/openbsd64.h.orig Sat Jun 1 23:45:17 2002 -+++ gcc/config/sparc/openbsd64.h Sun Jun 2 06:25:40 2002 -@@ -0,0 +1,77 @@ +$OpenBSD: patch-gcc_config_sparc_openbsd64_h,v 1.8 2002/06/03 18:33:33 espie Exp $ +--- gcc/config/sparc/openbsd64.h.orig Thu May 30 12:57:52 2002 ++++ gcc/config/sparc/openbsd64.h Mon Jun 3 13:49:36 2002 +@@ -0,0 +1,226 @@ +/* Configuration file for sparc64 OpenBSD target. + Copyright (C) 1999 Free Software Foundation, Inc. + @@ -41,8 +41,6 @@ $OpenBSD: patch-gcc_config_sparc_openbsd64_h,v 1.7 2002/06/03 10:13:34 art Exp $ +#undef CPP_SUBTARGET_SPEC +#define CPP_SUBTARGET_SPEC "" + -+#undef CPLUSPLUS_CPP_SPEC -+ +#undef MD_EXEC_PREFIX +#undef MD_STARTFILE_PREFIX + @@ -63,6 +61,14 @@ $OpenBSD: patch-gcc_config_sparc_openbsd64_h,v 1.7 2002/06/03 10:13:34 art Exp $ +#undef LONG_DOUBLE_TYPE_SIZE +#define LONG_DOUBLE_TYPE_SIZE 128 + ++#undef WINT_TYPE ++#define WINT_TYPE "long int" ++ ++#undef WINT_TYPE_SIZE ++#define WINT_TYPE_SIZE 32 ++ ++#define HANDLE_PRAGMA_REDEFINE_EXTNAME 1 ++ +#undef LINK_SPEC +#define LINK_SPEC \ + "%{!shared:%{!nostdlib:%{!r*:%{!e*:-e __start}}}} \ @@ -79,3 +85,146 @@ $OpenBSD: patch-gcc_config_sparc_openbsd64_h,v 1.7 2002/06/03 10:13:34 art Exp $ + crtbegin%O%s} %{shared:crtbeginS%O%s}" +#undef ENDFILE_SPEC +#define ENDFILE_SPEC "%{!shared:crtend%O%s} %{shared:crtendS%O%s}" ++ ++#undef ASM_CPU_DEFAULT_SPEC ++#define ASM_CPU_DEFAULT_SPEC "-xarch=v8plusa" ++ ++#undef ASM_CPU_SPEC ++#define ASM_CPU_SPEC "\ ++%{mcpu=v8plus:-xarch=v8plus} \ ++%{mcpu=ultrasparc:-xarch=v8plusa} \ ++%{!mcpu*:%(asm_cpu_default)} \ ++" ++ ++/* Same as sparc.h */ ++#undef DBX_REGISTER_NUMBER ++#define DBX_REGISTER_NUMBER(REGNO) \ ++ (TARGET_FLAT && (REGNO) == HARD_FRAME_POINTER_REGNUM ? 31 : REGNO) ++ ++/* We use stabs-in-elf by default, because that is what the native ++ toolchain uses. */ ++#undef PREFERRED_DEBUGGING_TYPE ++#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG ++ ++/* The Solaris 2 assembler uses .skip, not .zero, so put this back. */ ++#undef ASM_OUTPUT_SKIP ++#define ASM_OUTPUT_SKIP(FILE,SIZE) \ ++ fprintf (FILE, "\t.skip %u\n", (SIZE)) ++ ++#undef LOCAL_LABEL_PREFIX ++#define LOCAL_LABEL_PREFIX "." ++ ++/* This is how to output a definition of an internal numbered label where ++ PREFIX is the class of label and NUM is the number within the class. */ ++ ++#undef ASM_OUTPUT_INTERNAL_LABEL ++#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \ ++ fprintf (FILE, ".L%s%d:\n", PREFIX, NUM) ++ ++/* This is how to output a reference to an internal numbered label where ++ PREFIX is the class of label and NUM is the number within the class. */ ++ ++#undef ASM_OUTPUT_INTERNAL_LABELREF ++#define ASM_OUTPUT_INTERNAL_LABELREF(FILE,PREFIX,NUM) \ ++ fprintf (FILE, ".L%s%d", PREFIX, NUM) ++ ++/* This is how to store into the string LABEL ++ the symbol_ref name of an internal numbered label where ++ PREFIX is the class of label and NUM is the number within the class. ++ This is suitable for output with `assemble_name'. */ ++ ++#undef ASM_GENERATE_INTERNAL_LABEL ++#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \ ++ sprintf ((LABEL), "*.L%s%ld", (PREFIX), (long)(NUM)) ++ ++/* Select a format to encode pointers in exception handling data. CODE ++ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is ++ true if the symbol may be affected by dynamic relocations. ++ ++ Some Solaris dynamic linkers don't handle unaligned section relative ++ relocs properly, so force them to be aligned. */ ++#ifndef HAVE_AS_SPARC_UA_PCREL ++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ ++ ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr) ++#endif ++ ++/* ??? This does not work in SunOS 4.x, so it is not enabled in sparc.h. ++ Instead, it is enabled here, because it does work under Solaris. */ ++/* Define for support of TFmode long double and REAL_ARITHMETIC. ++ Sparc ABI says that long double is 4 words. */ ++#define LONG_DOUBLE_TYPE_SIZE 128 ++ ++/* But indicate that it isn't supported by the hardware. */ ++#define WIDEST_HARDWARE_FP_SIZE 64 ++ ++#define STDC_0_IN_SYSTEM_HEADERS 1 ++ ++#define MULDI3_LIBCALL "__mul64" ++#define DIVDI3_LIBCALL "__div64" ++#define UDIVDI3_LIBCALL "__udiv64" ++#define MODDI3_LIBCALL "__rem64" ++#define UMODDI3_LIBCALL "__urem64" ++ ++#undef INIT_SUBTARGET_OPTABS ++#define INIT_SUBTARGET_OPTABS \ ++ fixsfdi_libfunc \ ++ = init_one_libfunc (TARGET_ARCH64 ? "__ftol" : "__ftoll"); \ ++ fixunssfdi_libfunc \ ++ = init_one_libfunc (TARGET_ARCH64 ? "__ftoul" : "__ftoull"); \ ++ fixdfdi_libfunc \ ++ = init_one_libfunc (TARGET_ARCH64 ? "__dtol" : "__dtoll"); \ ++ fixunsdfdi_libfunc \ ++ = init_one_libfunc (TARGET_ARCH64 ? "__dtoul" : "__dtoull") ++ ++ ++/* ++ * Attempt to turn on access permissions for the stack. ++ * ++ * This code must be defined when compiling gcc but not when compiling ++ * libgcc2.a, unless we're generating code for 64 bits SPARC ++ * ++ * _SC_STACK_PROT is only defined for post 2.6, but we want this code ++ * to run always. 2.6 can change the stack protection but has no way to ++ * query it. ++ * ++ */ ++ ++/* This declares mprotect (used in TRANSFER_FROM_TRAMPOLINE) for ++ libgcc2.c. */ ++/* We don't want to include this because sys/mman.h is not present on ++ some non-Solaris configurations that use sol2.h. */ ++#if 0 /* def L_trampoline */ ++#include ++#endif ++ ++#define TRANSFER_FROM_TRAMPOLINE \ ++static int need_enable_exec_stack; \ ++ \ ++static void check_enabling(void) __attribute__ ((constructor)); \ ++static void check_enabling(void) \ ++{ \ ++ extern long sysconf(int); \ ++ \ ++ int prot = (int) sysconf(515 /*_SC_STACK_PROT */); \ ++ if (prot != 7) \ ++ need_enable_exec_stack = 1; \ ++} \ ++ \ ++extern void __enable_execute_stack (void *); \ ++void \ ++__enable_execute_stack (addr) \ ++ void *addr; \ ++{ \ ++ if (!need_enable_exec_stack) \ ++ return; \ ++ else { \ ++ long size = getpagesize (); \ ++ long mask = ~(size-1); \ ++ char *page = (char *) (((long) addr) & mask); \ ++ char *end = (char *) ((((long) (addr + TRAMPOLINE_SIZE)) & mask) + size); \ ++ \ ++ /* 7 is PROT_READ | PROT_WRITE | PROT_EXEC */ \ ++ if (mprotect (page, end - page, 7) < 0) \ ++ perror ("mprotect of trampoline code"); \ ++ } \ ++}