aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa
diff options
context:
space:
mode:
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>2002-02-16 22:30:35 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2002-02-16 22:30:35 +0000
commit2e1ed1e3e5fd8dbb7b4e87a16d9be64573af56ef (patch)
tree7ae13465fa903658004327ca8700bf948b79d09e /gcc/config/pa
parent604c75b22cadf457a34b3aeed9e677398405ff0d (diff)
downloadgcc-2e1ed1e3e5fd8dbb7b4e87a16d9be64573af56ef.zip
gcc-2e1ed1e3e5fd8dbb7b4e87a16d9be64573af56ef.tar.gz
gcc-2e1ed1e3e5fd8dbb7b4e87a16d9be64573af56ef.tar.bz2
* pa/t-pa, pa/t-pro, pa/som.h: Revert last patch.
From-SVN: r49811
Diffstat (limited to 'gcc/config/pa')
-rw-r--r--gcc/config/pa/som.h16
-rw-r--r--gcc/config/pa/t-pa6
-rw-r--r--gcc/config/pa/t-pro6
3 files changed, 27 insertions, 1 deletions
diff --git a/gcc/config/pa/som.h b/gcc/config/pa/som.h
index 5b8b198..5604f54 100644
--- a/gcc/config/pa/som.h
+++ b/gcc/config/pa/som.h
@@ -351,6 +351,22 @@ readonly_data () \
#define ASM_FILE_END(FILE) output_deferred_plabels (FILE)
+/* We want __gcc_plt_call to appear in every program built by
+ gcc, so we make a reference to it out of __main.
+ We use the asm statement to fool the optimizer into not
+ removing the dead (but important) initialization of
+ REFERENCE. */
+
+#define DO_GLOBAL_DTORS_BODY \
+do { \
+ extern void __gcc_plt_call (); \
+ void (*reference)() = &__gcc_plt_call; \
+ func_ptr *p; \
+ __asm__ ("" : : "r" (reference)); \
+ for (p = __DTOR_LIST__ + 1; *p; ) \
+ (*p++) (); \
+} while (0)
+
/* The .align directive in the HP assembler allows up to a 32 alignment. */
#define MAX_OFILE_ALIGNMENT 32768
diff --git a/gcc/config/pa/t-pa b/gcc/config/pa/t-pa
index ddb44ab..863e8432 100644
--- a/gcc/config/pa/t-pa
+++ b/gcc/config/pa/t-pa
@@ -1,5 +1,9 @@
T_ADAFLAGS=-mdisable-indexing
-LIB2FUNCS_EXTRA=quadlib.c
+LIB2FUNCS_EXTRA=lib2funcs.asm quadlib.c
+
+lib2funcs.asm: $(srcdir)/config/pa/lib2funcs.asm
+ rm -f lib2funcs.asm
+ cp $(srcdir)/config/pa/lib2funcs.asm .
quadlib.c: $(srcdir)/config/pa/quadlib.c
rm -f quadlib.c
diff --git a/gcc/config/pa/t-pro b/gcc/config/pa/t-pro
index 0f52313..a47d72f 100644
--- a/gcc/config/pa/t-pro
+++ b/gcc/config/pa/t-pro
@@ -1,5 +1,7 @@
T_ADAFLAGS=-mdisable-indexing
+LIB2FUNCS_EXTRA=lib2funcs.asm
+
# We want fine grained libraries, so use the new code to build the
# floating point emulation libraries.
FPBIT = fp-bit.c
@@ -11,3 +13,7 @@ dp-bit.c: $(srcdir)/config/fp-bit.c
fp-bit.c: $(srcdir)/config/fp-bit.c
echo '#define FLOAT' > fp-bit.c
cat $(srcdir)/config/fp-bit.c >> fp-bit.c
+
+lib2funcs.asm: $(srcdir)/config/pa/lib2funcs.asm
+ rm -f lib2funcs.asm
+ cp $(srcdir)/config/pa/lib2funcs.asm .