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)
 
        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.
 
    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)
 
 rtx
 return_addr_rtx (count, frameaddr)