aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>2002-10-03 04:05:54 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2002-10-03 04:05:54 +0000
commitf50df1d58f9ae1f46cf23bc5446eb91175f67851 (patch)
tree25956939697b748fd163107d355131067fe0994d
parent69788039ff6be5e14fd8011c0c63b3168adae7c9 (diff)
downloadgcc-f50df1d58f9ae1f46cf23bc5446eb91175f67851.zip
gcc-f50df1d58f9ae1f46cf23bc5446eb91175f67851.tar.gz
gcc-f50df1d58f9ae1f46cf23bc5446eb91175f67851.tar.bz2
pa-linux.h (FUNCTION_OK_FOR_SIBCALL): Delete macro.
* pa-linux.h (FUNCTION_OK_FOR_SIBCALL): Delete macro. * pa32-linux.h (FUNCTION_OK_FOR_SIBCALL): Define. From-SVN: r57758
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/pa/pa-linux.h4
-rw-r--r--gcc/config/pa/pa32-linux.h8
3 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3e2af93..1d6667b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-10-02 John David Anglin <dave@hiauly1.hia.nrc.ca>
+
+ * pa-linux.h (FUNCTION_OK_FOR_SIBCALL): Delete macro.
+ * pa32-linux.h (FUNCTION_OK_FOR_SIBCALL): Define.
+
2002-10-02 Richard Henderson <rth@redhat.com>
PR opt/7124
diff --git a/gcc/config/pa/pa-linux.h b/gcc/config/pa/pa-linux.h
index 86dfabc..cdc201d 100644
--- a/gcc/config/pa/pa-linux.h
+++ b/gcc/config/pa/pa-linux.h
@@ -95,10 +95,6 @@ Boston, MA 02111-1307, USA. */
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
%{static:-static}}"
-/* Sibcalls, stubs, and elf sections don't play well. */
-#undef FUNCTION_OK_FOR_SIBCALL
-#define FUNCTION_OK_FOR_SIBCALL(x) 0
-
/* glibc's profiling functions don't need gcc to allocate counters. */
#define NO_PROFILE_COUNTERS 1
diff --git a/gcc/config/pa/pa32-linux.h b/gcc/config/pa/pa32-linux.h
index a5c1da2..c8ea72d 100644
--- a/gcc/config/pa/pa32-linux.h
+++ b/gcc/config/pa/pa32-linux.h
@@ -21,3 +21,11 @@ Boston, MA 02111-1307, USA. */
/* Turn off various SOM crap we don't want. */
#undef TARGET_ELF32
#define TARGET_ELF32 1
+
+/* Sibcalls are ok when ld is used in single subspace mode. The
+ multiple subspace mode is not compatible with sibcalls to external
+ functions because the linker generated stubs store the return
+ pointer into the frame. This target does not need multiple
+ subspace stubs, so we allow sibcalls to all functions. */
+#undef FUNCTION_OK_FOR_SIBCALL
+#define FUNCTION_OK_FOR_SIBCALL(DECL) 1