summaryrefslogtreecommitdiff
path: root/gdb/config/pa
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/config/pa')
-rw-r--r--gdb/config/pa/hppa64.mt4
-rw-r--r--gdb/config/pa/hpux11.mh11
-rw-r--r--gdb/config/pa/hpux11.mt3
-rw-r--r--gdb/config/pa/hpux11w.mh11
-rw-r--r--gdb/config/pa/hpux11w.mt3
-rw-r--r--gdb/config/pa/tm-hppa.h10
-rw-r--r--gdb/config/pa/tm-hppa64.h39
7 files changed, 51 insertions, 30 deletions
diff --git a/gdb/config/pa/hppa64.mt b/gdb/config/pa/hppa64.mt
index ea7559fd56f..d55da773422 100644
--- a/gdb/config/pa/hppa64.mt
+++ b/gdb/config/pa/hppa64.mt
@@ -1,4 +1,4 @@
# Target: HP PA-RISC 2.0 running HPUX 11.00 in wide mode
-TDEPFILES= hppa-tdep.o # pa64-solib.o
+TDEPFILES= hppa-tdep.o
TM_FILE= tm-hppa64.h
-TM_CLIBS= # $(srcdir)/libxpdl.a
+TM_CLIBS=
diff --git a/gdb/config/pa/hpux11.mh b/gdb/config/pa/hpux11.mh
new file mode 100644
index 00000000000..10fbd7eb3bd
--- /dev/null
+++ b/gdb/config/pa/hpux11.mh
@@ -0,0 +1,11 @@
+# Host: Hewlett-Packard PA-RISC machine, running HPUX 11.00
+
+MH_CFLAGS = -D__HP_CURSES
+
+XM_FILE= xm-hppah.h
+XDEPFILES= ser-tcp.o
+
+NAT_FILE= nm-hppah11.h
+NATDEPFILES= hppah-nat.o corelow.o core-aout.o inftarg.o fork-child.o infttrace.o somread.o hp-psymtab-read.o hp-symtab-read.o somsolib.o
+
+HOST_IPC=-DBSD_IPC -DPOSIX_WAIT
diff --git a/gdb/config/pa/hpux11.mt b/gdb/config/pa/hpux11.mt
new file mode 100644
index 00000000000..405f73a791a
--- /dev/null
+++ b/gdb/config/pa/hpux11.mt
@@ -0,0 +1,3 @@
+# Target: HP PA-RISC running HPUX 11.00
+TDEPFILES= hppa-tdep.o remote-pa.o somsolib.o
+TM_FILE= tm-hppah.h
diff --git a/gdb/config/pa/hpux11w.mh b/gdb/config/pa/hpux11w.mh
new file mode 100644
index 00000000000..248bb6eb291
--- /dev/null
+++ b/gdb/config/pa/hpux11w.mh
@@ -0,0 +1,11 @@
+# Host: Hewlett-Packard PA-RISC machine, running HPUX 11.00
+
+MH_CFLAGS = -D__HP_CURSES
+
+XM_FILE= xm-hppah.h
+XDEPFILES= ser-tcp.o
+
+NAT_FILE= nm-hppah11.h
+NATDEPFILES= hppah-nat.o corelow.o core-aout.o inftarg.o fork-child.o infttrace.o hp-psymtab-read.o hp-symtab-read.o pa64solib.o
+
+HOST_IPC=-DBSD_IPC -DPOSIX_WAIT
diff --git a/gdb/config/pa/hpux11w.mt b/gdb/config/pa/hpux11w.mt
new file mode 100644
index 00000000000..4064d20fa75
--- /dev/null
+++ b/gdb/config/pa/hpux11w.mt
@@ -0,0 +1,3 @@
+# Target: HP PA-RISC running HPUX 11.00
+TDEPFILES= hppa-tdep.o remote-pa.o
+TM_FILE= tm-hppah.h
diff --git a/gdb/config/pa/tm-hppa.h b/gdb/config/pa/tm-hppa.h
index a35a098b389..907978f3f61 100644
--- a/gdb/config/pa/tm-hppa.h
+++ b/gdb/config/pa/tm-hppa.h
@@ -565,6 +565,7 @@ extern void hppa_pop_frame PARAMS ((void));
#define CALL_DUMMY_LENGTH (INSTRUCTION_SIZE * 28)
#define REG_PARM_STACK_SPACE 16
+#define ARGS_GROW_DOWNWARD
#else /* defined PA_LEVEL_0 */
@@ -754,18 +755,11 @@ struct obj_unwind_info
int last; /* Index of last entry */
};
-typedef struct data {
- CORE_ADDR dummy[2];
- CORE_ADDR func_addr;
- CORE_ADDR dp;
-} opd_data;
-
typedef struct obj_private_struct
{
struct obj_unwind_info *unwind_info; /* a pointer */
struct so_list *so_info; /* a pointer */
- opd_data *opd;
- int n_opd_entries;
+ CORE_ADDR dp;
}
obj_private_data_t;
diff --git a/gdb/config/pa/tm-hppa64.h b/gdb/config/pa/tm-hppa64.h
index ea9090feabb..11cfd3bd22e 100644
--- a/gdb/config/pa/tm-hppa64.h
+++ b/gdb/config/pa/tm-hppa64.h
@@ -152,6 +152,7 @@ extern int hpread_adjust_stack_address PARAMS ((CORE_ADDR));
; the right place, we load the first 8 word of arguments into both the general
; and fp registers.
call_dummy
+ nop
copy %r4,%r29
copy %r5,%r22
copy %r6,%r27
@@ -179,17 +180,23 @@ call_dummy
nop
*/
+/* Call dummys are sized and written out in word sized hunks. So we have
+ to pack the instructions into words. Ugh. */
#undef CALL_DUMMY
-#define CALL_DUMMY {0x349d0000, 0x34b60000, 0x34db0000, \
- 0x53a43f83, 0x53a53f93, 0x53a63fa3, 0x53a73fb3,\
- 0x53a83fc3, 0x53a93fd3, 0x2fa1100a, 0x2fb1100b,\
- 0x36c10000, 0x53ba3f81, 0x53b93f91, 0x53b83fa1,\
- 0x53b73fb1, 0x53b63fc1, 0x53b53fd1, 0x0fa110d4,\
- 0xe820f000, 0x0fb110d3, 0x00010004, 0x00151820,\
- 0xe6c00000, 0x08000240}
-
+#define CALL_DUMMY {0x08000240349d0000LL, 0x34b6000034db0000LL, \
+ 0x53a43f8353a53f93LL, 0x53a63fa353a73fb3LL,\
+ 0x53a83fc353a93fd3LL, 0x2fa1100a2fb1100bLL,\
+ 0x36c1000053ba3f81LL, 0x53b93f9153b83fa1LL,\
+ 0x53b73fb153b63fc1LL, 0x53b53fd10fa110d4LL,\
+ 0xe820f0000fb110d3LL, 0x0001000400151820LL,\
+ 0xe6c0000008000240LL}
+
+/* CALL_DUMMY_LENGTH is computed based on the size of a word on the target
+ machine, not the size of an instruction. Since a word on this target
+ holds two instructions we have to divide the instruction size by two to
+ get the word size of the dummy. */
#undef CALL_DUMMY_LENGTH
-#define CALL_DUMMY_LENGTH (INSTRUCTION_SIZE * 25)
+#define CALL_DUMMY_LENGTH (INSTRUCTION_SIZE * 26 / 2)
/* The PA64 ABI mandates a 16 byte stack alignment. */
#undef STACK_ALIGN
@@ -200,23 +207,15 @@ call_dummy
#undef REG_PARM_STACK_SPACE
#define REG_PARM_STACK_SPACE 64
+/* Arguments grow in the normal direction for the PA64 port. */
+#undef ARGS_GROW_DOWNWARD
+
#undef FUNC_LDIL_OFFSET
#undef FUNC_LDO_OFFSET
#undef SR4EXPORT_LDIL_OFFSET
#undef SR4EXPORT_LDO_OFFSET
#undef CALL_DUMMY_LOCATION
-#define PC_IN_CALL_DUMMY(pc, sp, frame_address) hppa64_pc_in_call_dummy (pc)
-/* jimb: need to find out what AT_WDB_CALL_DUMMY is about */
-#if 0
-#define CALL_DUMMY_LOCATION AFTER_TEXT_END
-extern CORE_ADDR wdb_call_dummy_addr;
-#undef PC_IN_CALL_DUMMY
-#define PC_IN_CALL_DUMMY(pc, sp, frame_address) \
- ((pc) >= wdb_call_dummy_addr && \
- (pc) <= wdb_call_dummy_addr + CALL_DUMMY_LENGTH)
-#endif
-
#undef REG_STRUCT_HAS_ADDR
#undef EXTRACT_RETURN_VALUE