pa-hpux10.h (MD_EXEC_PREFIX): Define appropriately for hpux10.
authorJeff Law <law@gcc.gnu.org>
Thu, 20 Feb 1997 00:13:15 +0000 (17:13 -0700)
committerJeff Law <law@gcc.gnu.org>
Thu, 20 Feb 1997 00:13:15 +0000 (17:13 -0700)
        * pa/pa-hpux10.h (MD_EXEC_PREFIX): Define appropriately for hpux10.
        (MD_STARTFILE_PREFIX): Similarly.

        * pa/pa.c (return_addr_rtx): Add some comments about cases it
        doesn't handle correctly.

        * pa/pa.h (ASM_OUTPUT_SECTION_NAME): Surround the section name
        with '$' if not using GAS.

From-SVN: r13667

gcc/config/pa/pa-hpux10.h
gcc/config/pa/pa.c

index 730f65e7281e1f51cd8e16fa23d5593c6d1d9a74..1c57d5ee6ea70cc1a2b3386aae7917b02ff9feb3 100644 (file)
@@ -53,3 +53,19 @@ do {  \
        output_file_directive ((FILE), main_input_filename); \
    } while (0)
 
+/* Under hpux10, the normal location of the `ld' and `as' programs is the
+   /usr/ccs/bin directory.  */
+
+#ifndef CROSS_COMPILE
+#undef MD_EXEC_PREFIX
+#define MD_EXEC_PREFIX "/usr/ccs/bin/"
+#endif
+
+/* Under hpux10, the normal location of the various *crt*.o files is the
+   /usr/ccs/lib directory.  */
+
+#ifndef CROSS_COMPILE
+#undef MD_STARTFILE_PREFIX
+#define MD_STARTFILE_PREFIX "/usr/ccs/lib/"
+#endif
+
index 1d9100498cc207061b20edae9629a799f2272414..3ed113b9805fbc45fe0b2e353ea54f0553bef5f7 100644 (file)
@@ -3038,7 +3038,28 @@ hppa_expand_epilogue ()
    the current frame, after the prologue.  FRAMEADDR is the
    frame pointer of the COUNT frame.
 
-   We want to ignore any export stub remnants here.  */
+   We want to ignore any export stub remnants here.
+
+   The value returned is used in two different ways:
+
+       1. To find a function's caller.
+
+       2. To change the return address for a function.
+
+   This function handles most instances of case 1; however, it will
+   fail if there are two levels of stubs to execute on the return
+   path.  The only way I believe that can happen is if the return value
+   needs a parameter relocation, which never happens for C code.
+
+   This function handles most instances of case 2; however, it will
+   fail if we did not originally have stub code on the return path
+   but will need code on the new return path.  This can happen if
+   the caller & callee are both in the main program, but the new
+   return location is in a shared library.
+
+   To handle this correctly we need to set the return pointer at
+   frame-20 to point to a return stub frame-24 to point to the
+   location we wish to return to.  */
 
 rtx
 return_addr_rtx (count, frameaddr)