diff options
Diffstat (limited to 'gdb/config/pa')
-rw-r--r-- | gdb/config/pa/hppa64.mt | 4 | ||||
-rw-r--r-- | gdb/config/pa/hpux11.mh | 11 | ||||
-rw-r--r-- | gdb/config/pa/hpux11.mt | 3 | ||||
-rw-r--r-- | gdb/config/pa/hpux11w.mh | 11 | ||||
-rw-r--r-- | gdb/config/pa/hpux11w.mt | 3 | ||||
-rw-r--r-- | gdb/config/pa/tm-hppa.h | 10 | ||||
-rw-r--r-- | gdb/config/pa/tm-hppa64.h | 39 |
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 |