summaryrefslogtreecommitdiff
path: root/gnu/usr.bin
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2004-05-26 21:10:56 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2004-05-26 21:10:56 +0000
commitb62805d01db690f08f55d66a384c3a0e22c8c5db (patch)
treee747d36e56050b111d010724b3006d4f5527dd65 /gnu/usr.bin
parent479d0413d08a3846d94ba821f18b252e9264e5f8 (diff)
neede for dhared libs
Diffstat (limited to 'gnu/usr.bin')
-rw-r--r--gnu/usr.bin/gcc/gcc/config/pa/openbsd.h46
-rw-r--r--gnu/usr.bin/gcc/gcc/config/pa/t-openbsd15
2 files changed, 40 insertions, 21 deletions
diff --git a/gnu/usr.bin/gcc/gcc/config/pa/openbsd.h b/gnu/usr.bin/gcc/gcc/config/pa/openbsd.h
index df983fd1394..2aec2702808 100644
--- a/gnu/usr.bin/gcc/gcc/config/pa/openbsd.h
+++ b/gnu/usr.bin/gcc/gcc/config/pa/openbsd.h
@@ -31,6 +31,9 @@ Boston, MA 02111-1307, USA. */
#undef MAX_OFILE_ALIGNMENT
#define MAX_OFILE_ALIGNMENT 0x8000
+/* libc's profiling functions don't need gcc to allocate counters. */
+#define NO_PROFILE_COUNTERS 1
+
/* Run-time target specifications. */
#undef TARGET_OS_CPP_BUILTINS
#define TARGET_OS_CPP_BUILTINS() \
@@ -41,14 +44,6 @@ Boston, MA 02111-1307, USA. */
while (0)
-#undef OVERRIDE_OPTIONS
-#define OVERRIDE_OPTIONS \
-{ \
- override_options (); \
- if (! flag_pic) \
- target_flags |= MASK_PORTABLE_RUNTIME | MASK_FAST_INDIRECT_CALLS;\
-}
-
/* XXX Why doesn't PA support -R like everyone ??? */
#undef LINK_SPEC
#define LINK_SPEC \
@@ -105,11 +100,35 @@ do { \
/* Use the default. */
#undef ASM_OUTPUT_LABEL
-/* Define these to generate the Linux/ELF/SysV style of internal
- labels all the time - i.e. to be compatible with
- ASM_GENERATE_INTERNAL_LABEL in <elfos.h>. Compare these with the
- ones in pa.h and note the lack of dollar signs in these. FIXME:
- shouldn't we fix pa.h to use ASM_GENERATE_INTERNAL_LABEL instead? */
+/* This is how to output an internal numbered label where
+ PREFIX is the class of label and NUM is the number within the class.
+
+ For most svr4 systems, the convention is that any symbol which begins
+ with a period is not put into the linker symbol table by the assembler. */
+
+#undef ASM_OUTPUT_INTERNAL_LABEL
+#define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM) \
+ do \
+ { \
+ fprintf (FILE, ".%s%u:\n", PREFIX, (unsigned) (NUM)); \
+ } \
+ while (0)
+
+/* 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'.
+
+ For most svr4 systems, the convention is that any symbol which begins
+ with a period is not put into the linker symbol table by the assembler. */
+
+#undef ASM_GENERATE_INTERNAL_LABEL
+#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM) \
+ do \
+ { \
+ sprintf (LABEL, "*.%s%u", PREFIX, (unsigned) (NUM)); \
+ } \
+ while (0)
#undef ASM_OUTPUT_ADDR_VEC_ELT
#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
@@ -187,6 +206,7 @@ do { \
#define BSS_SECTION_ASM_OP "\t.section\t.bss"
#define CTORS_SECTION_ASM_OP "\t.section\t.ctors,\"aw\""
#define DTORS_SECTION_ASM_OP "\t.section\t.dtors,\"aw\""
+#define TARGET_ASM_NAMED_SECTION default_elf_asm_named_section
/* Remove hpux specific pa defines. */
#undef LDD_SUFFIX
diff --git a/gnu/usr.bin/gcc/gcc/config/pa/t-openbsd b/gnu/usr.bin/gcc/gcc/config/pa/t-openbsd
index 16bd8bbad4e..d512cd2b100 100644
--- a/gnu/usr.bin/gcc/gcc/config/pa/t-openbsd
+++ b/gnu/usr.bin/gcc/gcc/config/pa/t-openbsd
@@ -6,12 +6,11 @@ LIB1ASMFUNCS = _divI _divU _remI _remU _div_const _mulI _dyncall
LIB1ASMSRC = pa/milli64.S
# Compile libgcc2.a as PIC.
-TARGET_LIBGCC2_CFLAGS = -DELF=1 -DLINUX
+TARGET_LIBGCC2_CFLAGS = -fPIC -DELF=1 -DLINUX
+
+LIB2FUNCS_EXTRA=fptr.c
+
+fptr.c: $(srcdir)/config/pa/fptr.c
+ rm -f fptr.c
+ cp $(srcdir)/config/pa/fptr.c .
-# Don't build a shared libgcc_s.so. Our libgcc contains millicode, and
-# the ABI (linker and dynamic linker really) does not allow millicode
-# to be exported from shared libraries. Consequently, to successfully
-# link against libgcc_s.so it is necessary to link against _both_
-# libgcc_s.so and libgcc.a. This is a pain. It's easier just to disable
-# the shared libgcc.
-SHLIB_LINK =