config.gcc (*-*-openbsd*): Add fragment to compile libgcc correctly for shared config...
authorMarc Espie <espie@cvs.openbsd.org>
Fri, 13 Jul 2001 18:12:22 +0000 (18:12 +0000)
committerMarc Espie <espie@gcc.gnu.org>
Fri, 13 Jul 2001 18:12:22 +0000 (18:12 +0000)
2001-07-13  Marc Espie  <espie@cvs.openbsd.org>

* config.gcc (*-*-openbsd*):  Add fragment to compile libgcc
correctly for shared configurations.
* config/t-libgcc-pic:  New.
* config/{i386,m68k,sparc}/t-openbsd:  New.
* config/openbsd.h:  Include cpu_spec in cpp_spec where needed.
Support -shared.  Support debugging libraries with -g.
* config/i386/openbsd.h:  Correct ASM_COMMENT_START.  Ensure dwarf2
frame information does not emit pointer diffs.
* config/sparc/openbsd.h:  Ensure dwarf2 frame information does not
emit pointer diffs.

From-SVN: r43988

gcc/ChangeLog
gcc/config.gcc
gcc/config/i386/openbsd.h
gcc/config/i386/t-openbsd [new file with mode: 0644]
gcc/config/m68k/t-openbsd [new file with mode: 0644]
gcc/config/openbsd.h
gcc/config/sparc/openbsd.h
gcc/config/sparc/t-openbsd [new file with mode: 0644]
gcc/config/t-libgcc-pic [new file with mode: 0644]

index 5143add5c67f31e34bcf176a547b38713f40e90f..7c5ec9c4b2e61744ae91dcbe0f277d36a3e5ca54 100644 (file)
@@ -1,3 +1,16 @@
+2001-07-13  Marc Espie  <espie@cvs.openbsd.org>
+
+       * config.gcc (*-*-openbsd*):  Add fragment to compile libgcc
+       correctly for shared configurations.
+       * config/t-libgcc-pic:  New.
+       * config/{i386,m68k,sparc}/t-openbsd:  New.
+       * config/openbsd.h:  Include cpu_spec in cpp_spec where needed.
+       Support -shared.  Support debugging libraries with -g.
+       * config/i386/openbsd.h:  Correct ASM_COMMENT_START.  Ensure dwarf2
+       frame information does not emit pointer diffs.
+       * config/sparc/openbsd.h:  Ensure dwarf2 frame information does not
+       emit pointer diffs.
+
 2001-07-13  Geoffrey Keating  <geoffk@redhat.com>
 
        Revert Jan Hubicka's patch of Fri Jul 13 14:46:21 CEST 2001.
index b5d01dcb695156a133aae43643a8d45dae9c1c95..932b00dbb12b538cc81d28c87afd14aa52919573 100644 (file)
@@ -286,7 +286,7 @@ case $machine in
        ;;
 *-*-openbsd*)
        tm_file=${cpu_type}/openbsd.h
-       tmake_file="t-libc-ok t-openbsd"
+       tmake_file="t-libc-ok t-openbsd t-libgcc-pic"
        xm_defines=POSIX
        if test x$enable_threads = xyes; then
                thread_file='posix'
@@ -1058,6 +1058,8 @@ i[34567]86-*-netbsd*)
        use_collect2=yes
        ;;
 i[34567]86-*-openbsd*)
+       # needed to unconfuse gdb
+       tmake_file="t-libc-ok t-openbsd i386/t-openbsd"
        # we need collect2 until our bug is fixed...
        use_collect2=yes
        ;;
@@ -1859,6 +1861,8 @@ m68k*-*-netbsd*)
        use_collect2=yes
        ;;
 m68k*-*-openbsd*)
+       # needed to unconfuse gdb
+       tmake_file="t-libc-ok t-openbsd m68k/t-openbsd"
        float_format=m68k
        # we need collect2 until our bug is fixed...
        use_collect2=yes
@@ -2830,6 +2834,8 @@ sparc-*-netbsd*)
        use_collect2=yes
        ;;
 sparc-*-openbsd*)
+       # needed to unconfuse gdb
+       tmake_file="t-libc-ok t-openbsd sparc/t-openbsd"
        # we need collect2 until our bug is fixed...
        use_collect2=yes
        ;;
index 18b20e9915d3c34976a1c24e27d8eb2915b5660d..470577505373e9f0053ae183eaf57b9867e5970b 100644 (file)
@@ -111,6 +111,8 @@ Boston, MA 02111-1307, USA.  */
    configuration files...  */
 #define DWARF2_UNWIND_INFO 0
 
+#undef ASM_PREFERRED_EH_DATA_FORMAT
+
 /* Assembler format: alignment output.  */
 
 /* A C statement to output to the stdio stream FILE an assembler
@@ -130,3 +132,7 @@ Boston, MA 02111-1307, USA.  */
 #endif
 
 /* Note that we pick up ASM_OUTPUT_MI_THUNK from unix.h.  */
+
+#undef ASM_COMMENT_START
+#define ASM_COMMENT_START ";#"
+
diff --git a/gcc/config/i386/t-openbsd b/gcc/config/i386/t-openbsd
new file mode 100644 (file)
index 0000000..1830463
--- /dev/null
@@ -0,0 +1,6 @@
+# gdb gets confused if pic code is linked with non pic
+# We cope by building variants of libgcc.
+MULTILIB_OPTIONS = fpic
+MULTILIB_MATCHES=fpic=fPIC
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/m68k/t-openbsd b/gcc/config/m68k/t-openbsd
new file mode 100644 (file)
index 0000000..24f9a43
--- /dev/null
@@ -0,0 +1,5 @@
+# gdb gets confused if pic code is linked with non pic
+# We cope by building all variants of libgcc.
+MULTILIB_OPTIONS = fpic/fPIC
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
index 87b3a60567f4a9d48940dca2e5feebf12b18dcd9..ff1c1ad540b79842d0122cc6a9bcfd9d2700dd9a 100644 (file)
@@ -78,12 +78,16 @@ Boston, MA 02111-1307, USA.  */
    since all code must be compiled with -pthread to work. 
    This two-stage defines makes it easy to pick that for targets that
    have subspecs.  */
+#ifdef CPP_CPU_SPEC
+#define OBSD_CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}"
+#else
 #define OBSD_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}"
+#endif
 
 /* LIB_SPEC appropriate for OpenBSD.  Select the appropriate libc, 
    depending on profiling and threads.  Basically, 
    -lc(_r)?(_p)?, select _r for threads, and _p for p or pg.  */
-#define OBSD_LIB_SPEC "-lc%{pthread:_r}%{p:_p}%{!p:%{pg:_p}}"
+#define OBSD_LIB_SPEC "%{!shared:-lc%{pthread:_r}%{p:_p}%{!p:%{pg:_p}}}"
 
 #ifndef OBSD_HAS_CORRECT_SPECS
 
@@ -103,6 +107,7 @@ Boston, MA 02111-1307, USA.  */
    pic code.  */
 #undef ASM_SPEC
 #define ASM_SPEC "%{fpic:-k} %{fPIC:-k -K} %|"
+
 #else
 /* Since we use gas, stdin -> - is a good idea, but we don't want to
    override native specs just for that.  */
@@ -116,10 +121,10 @@ Boston, MA 02111-1307, USA.  */
 #undef LINK_SPEC
 #ifdef OBSD_NO_DYNAMIC_LIBRARIES
 #define LINK_SPEC \
-  "%{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{assert*}"
+  "%{g:%{!nostdlib:-L/usr/lib/debug}} %{!nostdlib:%{!r*:%{!e*:-e start}}} -dc -dp %{assert*}"
 #else
 #define LINK_SPEC \
-  "%{!shared:%{!nostdlib:%{!r*:%{!e*:-e start}}}} %{shared:-Bshareable -x} -dc -dp %{R*} %{static:-Bstatic} %{assert*}"
+  "%{g:%{!nostdlib:-L/usr/lib/debug}} %{!shared:%{!nostdlib:%{!r*:%{!e*:-e start}}}} %{shared:-Bshareable -x} -dc -dp %{R*} %{static:-Bstatic} %{assert*}"
 #endif
 
 #undef LIB_SPEC
index c5dc44317263017560068d02f6c48b3462e0fc1a..ba97ac7b9de4722c09ae6601ca4c652976f11007 100644 (file)
@@ -64,5 +64,6 @@ Boston, MA 02111-1307, USA.  */
    configuration files...  */
 #define DWARF2_UNWIND_INFO 0
 
-/* Default sparc.h does already define ASM_OUTPUT_MI_THUNK */
+#undef ASM_PREFERRED_EH_DATA_FORMAT
 
+/* Default sparc.h does already define ASM_OUTPUT_MI_THUNK */
diff --git a/gcc/config/sparc/t-openbsd b/gcc/config/sparc/t-openbsd
new file mode 100644 (file)
index 0000000..898a24e
--- /dev/null
@@ -0,0 +1,5 @@
+# The native linker doesn't handle linking -fpic code with -fPIC code.  Ugh.
+# We cope by building both variants of libgcc.
+MULTILIB_OPTIONS = fpic/fPIC
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/t-libgcc-pic b/gcc/config/t-libgcc-pic
new file mode 100644 (file)
index 0000000..ff935fe
--- /dev/null
@@ -0,0 +1,2 @@
+# Compile libgcc2.a with pic.
+TARGET_LIBGCC2_CFLAGS = -fPIC