1 /* Target-dependent code for the HP PA-RISC architecture.
3 Copyright 1986, 1987, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
4 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
5 Free Software Foundation, Inc.
7 Contributed by the Center for Software Science at the
10 This file is part of GDB.
12 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2 of the License, or
15 (at your option) any later version.
17 This program is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
22 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software
24 Foundation, Inc., 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. */
31 #include "completer.h"
33 #include "gdb_assert.h"
34 #include "arch-utils.h"
35 /* For argument passing to the inferior */
38 #include "trad-frame.h"
39 #include "frame-unwind.h"
40 #include "frame-base.h"
45 #include "hppa-tdep.h"
47 static int hppa_debug = 0;
49 /* Some local constants. */
50 static const int hppa32_num_regs = 128;
51 static const int hppa64_num_regs = 96;
53 /* hppa-specific object data -- unwind and solib info.
54 TODO/maybe: think about splitting this into two parts; the unwind data is
55 common to all hppa targets, but is only used in this file; we can register
56 that separately and make this static. The solib data is probably hpux-
57 specific, so we can create a separate extern objfile_data that is registered
58 by hppa-hpux-tdep.c and shared with pa64solib.c and somsolib.c. */
59 const struct objfile_data *hppa_objfile_priv_data = NULL;
61 /* Get at various relevent fields of an instruction word. */
64 #define MASK_14 0x3fff
65 #define MASK_21 0x1fffff
67 /* Sizes (in bytes) of the native unwind entries. */
68 #define UNWIND_ENTRY_SIZE 16
69 #define STUB_UNWIND_ENTRY_SIZE 8
71 /* FIXME: brobecker 2002-11-07: We will likely be able to make the
72 following functions static, once we hppa is partially multiarched. */
73 int hppa_pc_requires_run_before_use (CORE_ADDR pc);
75 /* Routines to extract various sized constants out of hppa
78 /* This assumes that no garbage lies outside of the lower bits of
82 hppa_sign_extend (unsigned val, unsigned bits)
84 return (int) (val >> (bits - 1) ? (-1 << bits) | val : val);
87 /* For many immediate values the sign bit is the low bit! */
90 hppa_low_hppa_sign_extend (unsigned val, unsigned bits)
92 return (int) ((val & 0x1 ? (-1 << (bits - 1)) : 0) | val >> 1);
95 /* Extract the bits at positions between FROM and TO, using HP's numbering
99 hppa_get_field (unsigned word, int from, int to)
101 return ((word) >> (31 - (to)) & ((1 << ((to) - (from) + 1)) - 1));
104 /* extract the immediate field from a ld{bhw}s instruction */
107 hppa_extract_5_load (unsigned word)
109 return hppa_low_hppa_sign_extend (word >> 16 & MASK_5, 5);
112 /* extract the immediate field from a break instruction */
115 hppa_extract_5r_store (unsigned word)
117 return (word & MASK_5);
120 /* extract the immediate field from a {sr}sm instruction */
123 hppa_extract_5R_store (unsigned word)
125 return (word >> 16 & MASK_5);
128 /* extract a 14 bit immediate field */
131 hppa_extract_14 (unsigned word)
133 return hppa_low_hppa_sign_extend (word & MASK_14, 14);
136 /* extract a 21 bit constant */
139 hppa_extract_21 (unsigned word)
145 val = hppa_get_field (word, 20, 20);
147 val |= hppa_get_field (word, 9, 19);
149 val |= hppa_get_field (word, 5, 6);
151 val |= hppa_get_field (word, 0, 4);
153 val |= hppa_get_field (word, 7, 8);
154 return hppa_sign_extend (val, 21) << 11;
157 /* extract a 17 bit constant from branch instructions, returning the
158 19 bit signed value. */
161 hppa_extract_17 (unsigned word)
163 return hppa_sign_extend (hppa_get_field (word, 19, 28) |
164 hppa_get_field (word, 29, 29) << 10 |
165 hppa_get_field (word, 11, 15) << 11 |
166 (word & 0x1) << 16, 17) << 2;
170 hppa_symbol_address(const char *sym)
172 struct minimal_symbol *minsym;
174 minsym = lookup_minimal_symbol (sym, NULL, NULL);
176 return SYMBOL_VALUE_ADDRESS (minsym);
178 return (CORE_ADDR)-1;
181 struct hppa_objfile_private *
182 hppa_init_objfile_priv_data (struct objfile *objfile)
184 struct hppa_objfile_private *priv;
186 priv = (struct hppa_objfile_private *)
187 obstack_alloc (&objfile->objfile_obstack,
188 sizeof (struct hppa_objfile_private));
189 set_objfile_data (objfile, hppa_objfile_priv_data, priv);
190 memset (priv, 0, sizeof (*priv));
196 /* Compare the start address for two unwind entries returning 1 if
197 the first address is larger than the second, -1 if the second is
198 larger than the first, and zero if they are equal. */
201 compare_unwind_entries (const void *arg1, const void *arg2)
203 const struct unwind_table_entry *a = arg1;
204 const struct unwind_table_entry *b = arg2;
206 if (a->region_start > b->region_start)
208 else if (a->region_start < b->region_start)
215 record_text_segment_lowaddr (bfd *abfd, asection *section, void *data)
217 if ((section->flags & (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
218 == (SEC_ALLOC | SEC_LOAD | SEC_READONLY))
220 bfd_vma value = section->vma - section->filepos;
221 CORE_ADDR *low_text_segment_address = (CORE_ADDR *)data;
223 if (value < *low_text_segment_address)
224 *low_text_segment_address = value;
229 internalize_unwinds (struct objfile *objfile, struct unwind_table_entry *table,
230 asection *section, unsigned int entries, unsigned int size,
231 CORE_ADDR text_offset)
233 /* We will read the unwind entries into temporary memory, then
234 fill in the actual unwind table. */
240 char *buf = alloca (size);
241 CORE_ADDR low_text_segment_address;
243 /* For ELF targets, then unwinds are supposed to
244 be segment relative offsets instead of absolute addresses.
246 Note that when loading a shared library (text_offset != 0) the
247 unwinds are already relative to the text_offset that will be
249 if (gdbarch_tdep (current_gdbarch)->is_elf && text_offset == 0)
251 low_text_segment_address = -1;
253 bfd_map_over_sections (objfile->obfd,
254 record_text_segment_lowaddr,
255 &low_text_segment_address);
257 text_offset = low_text_segment_address;
259 else if (gdbarch_tdep (current_gdbarch)->solib_get_text_base)
261 text_offset = gdbarch_tdep (current_gdbarch)->solib_get_text_base (objfile);
264 bfd_get_section_contents (objfile->obfd, section, buf, 0, size);
266 /* Now internalize the information being careful to handle host/target
268 for (i = 0; i < entries; i++)
270 table[i].region_start = bfd_get_32 (objfile->obfd,
272 table[i].region_start += text_offset;
274 table[i].region_end = bfd_get_32 (objfile->obfd, (bfd_byte *) buf);
275 table[i].region_end += text_offset;
277 tmp = bfd_get_32 (objfile->obfd, (bfd_byte *) buf);
279 table[i].Cannot_unwind = (tmp >> 31) & 0x1;
280 table[i].Millicode = (tmp >> 30) & 0x1;
281 table[i].Millicode_save_sr0 = (tmp >> 29) & 0x1;
282 table[i].Region_description = (tmp >> 27) & 0x3;
283 table[i].reserved1 = (tmp >> 26) & 0x1;
284 table[i].Entry_SR = (tmp >> 25) & 0x1;
285 table[i].Entry_FR = (tmp >> 21) & 0xf;
286 table[i].Entry_GR = (tmp >> 16) & 0x1f;
287 table[i].Args_stored = (tmp >> 15) & 0x1;
288 table[i].Variable_Frame = (tmp >> 14) & 0x1;
289 table[i].Separate_Package_Body = (tmp >> 13) & 0x1;
290 table[i].Frame_Extension_Millicode = (tmp >> 12) & 0x1;
291 table[i].Stack_Overflow_Check = (tmp >> 11) & 0x1;
292 table[i].Two_Instruction_SP_Increment = (tmp >> 10) & 0x1;
293 table[i].Ada_Region = (tmp >> 9) & 0x1;
294 table[i].cxx_info = (tmp >> 8) & 0x1;
295 table[i].cxx_try_catch = (tmp >> 7) & 0x1;
296 table[i].sched_entry_seq = (tmp >> 6) & 0x1;
297 table[i].reserved2 = (tmp >> 5) & 0x1;
298 table[i].Save_SP = (tmp >> 4) & 0x1;
299 table[i].Save_RP = (tmp >> 3) & 0x1;
300 table[i].Save_MRP_in_frame = (tmp >> 2) & 0x1;
301 table[i].extn_ptr_defined = (tmp >> 1) & 0x1;
302 table[i].Cleanup_defined = tmp & 0x1;
303 tmp = bfd_get_32 (objfile->obfd, (bfd_byte *) buf);
305 table[i].MPE_XL_interrupt_marker = (tmp >> 31) & 0x1;
306 table[i].HP_UX_interrupt_marker = (tmp >> 30) & 0x1;
307 table[i].Large_frame = (tmp >> 29) & 0x1;
308 table[i].Pseudo_SP_Set = (tmp >> 28) & 0x1;
309 table[i].reserved4 = (tmp >> 27) & 0x1;
310 table[i].Total_frame_size = tmp & 0x7ffffff;
312 /* Stub unwinds are handled elsewhere. */
313 table[i].stub_unwind.stub_type = 0;
314 table[i].stub_unwind.padding = 0;
319 /* Read in the backtrace information stored in the `$UNWIND_START$' section of
320 the object file. This info is used mainly by find_unwind_entry() to find
321 out the stack frame size and frame pointer used by procedures. We put
322 everything on the psymbol obstack in the objfile so that it automatically
323 gets freed when the objfile is destroyed. */
326 read_unwind_info (struct objfile *objfile)
328 asection *unwind_sec, *stub_unwind_sec;
329 unsigned unwind_size, stub_unwind_size, total_size;
330 unsigned index, unwind_entries;
331 unsigned stub_entries, total_entries;
332 CORE_ADDR text_offset;
333 struct hppa_unwind_info *ui;
334 struct hppa_objfile_private *obj_private;
336 text_offset = ANOFFSET (objfile->section_offsets, 0);
337 ui = (struct hppa_unwind_info *) obstack_alloc (&objfile->objfile_obstack,
338 sizeof (struct hppa_unwind_info));
344 /* For reasons unknown the HP PA64 tools generate multiple unwinder
345 sections in a single executable. So we just iterate over every
346 section in the BFD looking for unwinder sections intead of trying
347 to do a lookup with bfd_get_section_by_name.
349 First determine the total size of the unwind tables so that we
350 can allocate memory in a nice big hunk. */
352 for (unwind_sec = objfile->obfd->sections;
354 unwind_sec = unwind_sec->next)
356 if (strcmp (unwind_sec->name, "$UNWIND_START$") == 0
357 || strcmp (unwind_sec->name, ".PARISC.unwind") == 0)
359 unwind_size = bfd_section_size (objfile->obfd, unwind_sec);
360 unwind_entries = unwind_size / UNWIND_ENTRY_SIZE;
362 total_entries += unwind_entries;
366 /* Now compute the size of the stub unwinds. Note the ELF tools do not
367 use stub unwinds at the current time. */
368 stub_unwind_sec = bfd_get_section_by_name (objfile->obfd, "$UNWIND_END$");
372 stub_unwind_size = bfd_section_size (objfile->obfd, stub_unwind_sec);
373 stub_entries = stub_unwind_size / STUB_UNWIND_ENTRY_SIZE;
377 stub_unwind_size = 0;
381 /* Compute total number of unwind entries and their total size. */
382 total_entries += stub_entries;
383 total_size = total_entries * sizeof (struct unwind_table_entry);
385 /* Allocate memory for the unwind table. */
386 ui->table = (struct unwind_table_entry *)
387 obstack_alloc (&objfile->objfile_obstack, total_size);
388 ui->last = total_entries - 1;
390 /* Now read in each unwind section and internalize the standard unwind
393 for (unwind_sec = objfile->obfd->sections;
395 unwind_sec = unwind_sec->next)
397 if (strcmp (unwind_sec->name, "$UNWIND_START$") == 0
398 || strcmp (unwind_sec->name, ".PARISC.unwind") == 0)
400 unwind_size = bfd_section_size (objfile->obfd, unwind_sec);
401 unwind_entries = unwind_size / UNWIND_ENTRY_SIZE;
403 internalize_unwinds (objfile, &ui->table[index], unwind_sec,
404 unwind_entries, unwind_size, text_offset);
405 index += unwind_entries;
409 /* Now read in and internalize the stub unwind entries. */
410 if (stub_unwind_size > 0)
413 char *buf = alloca (stub_unwind_size);
415 /* Read in the stub unwind entries. */
416 bfd_get_section_contents (objfile->obfd, stub_unwind_sec, buf,
417 0, stub_unwind_size);
419 /* Now convert them into regular unwind entries. */
420 for (i = 0; i < stub_entries; i++, index++)
422 /* Clear out the next unwind entry. */
423 memset (&ui->table[index], 0, sizeof (struct unwind_table_entry));
425 /* Convert offset & size into region_start and region_end.
426 Stuff away the stub type into "reserved" fields. */
427 ui->table[index].region_start = bfd_get_32 (objfile->obfd,
429 ui->table[index].region_start += text_offset;
431 ui->table[index].stub_unwind.stub_type = bfd_get_8 (objfile->obfd,
434 ui->table[index].region_end
435 = ui->table[index].region_start + 4 *
436 (bfd_get_16 (objfile->obfd, (bfd_byte *) buf) - 1);
442 /* Unwind table needs to be kept sorted. */
443 qsort (ui->table, total_entries, sizeof (struct unwind_table_entry),
444 compare_unwind_entries);
446 /* Keep a pointer to the unwind information. */
447 obj_private = (struct hppa_objfile_private *)
448 objfile_data (objfile, hppa_objfile_priv_data);
449 if (obj_private == NULL)
450 obj_private = hppa_init_objfile_priv_data (objfile);
452 obj_private->unwind_info = ui;
455 /* Lookup the unwind (stack backtrace) info for the given PC. We search all
456 of the objfiles seeking the unwind table entry for this PC. Each objfile
457 contains a sorted list of struct unwind_table_entry. Since we do a binary
458 search of the unwind tables, we depend upon them to be sorted. */
460 struct unwind_table_entry *
461 find_unwind_entry (CORE_ADDR pc)
463 int first, middle, last;
464 struct objfile *objfile;
465 struct hppa_objfile_private *priv;
468 fprintf_unfiltered (gdb_stdlog, "{ find_unwind_entry 0x%s -> ",
471 /* A function at address 0? Not in HP-UX! */
472 if (pc == (CORE_ADDR) 0)
475 fprintf_unfiltered (gdb_stdlog, "NULL }\n");
479 ALL_OBJFILES (objfile)
481 struct hppa_unwind_info *ui;
483 priv = objfile_data (objfile, hppa_objfile_priv_data);
485 ui = ((struct hppa_objfile_private *) priv)->unwind_info;
489 read_unwind_info (objfile);
490 priv = objfile_data (objfile, hppa_objfile_priv_data);
492 error (_("Internal error reading unwind information."));
493 ui = ((struct hppa_objfile_private *) priv)->unwind_info;
496 /* First, check the cache */
499 && pc >= ui->cache->region_start
500 && pc <= ui->cache->region_end)
503 fprintf_unfiltered (gdb_stdlog, "0x%s (cached) }\n",
504 paddr_nz ((CORE_ADDR) ui->cache));
508 /* Not in the cache, do a binary search */
513 while (first <= last)
515 middle = (first + last) / 2;
516 if (pc >= ui->table[middle].region_start
517 && pc <= ui->table[middle].region_end)
519 ui->cache = &ui->table[middle];
521 fprintf_unfiltered (gdb_stdlog, "0x%s }\n",
522 paddr_nz ((CORE_ADDR) ui->cache));
523 return &ui->table[middle];
526 if (pc < ui->table[middle].region_start)
531 } /* ALL_OBJFILES() */
534 fprintf_unfiltered (gdb_stdlog, "NULL (not found) }\n");
539 /* The epilogue is defined here as the area either on the `bv' instruction
540 itself or an instruction which destroys the function's stack frame.
542 We do not assume that the epilogue is at the end of a function as we can
543 also have return sequences in the middle of a function. */
545 hppa_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR pc)
547 unsigned long status;
552 status = deprecated_read_memory_nobpt (pc, buf, 4);
556 inst = extract_unsigned_integer (buf, 4);
558 /* The most common way to perform a stack adjustment ldo X(sp),sp
559 We are destroying a stack frame if the offset is negative. */
560 if ((inst & 0xffffc000) == 0x37de0000
561 && hppa_extract_14 (inst) < 0)
564 /* ldw,mb D(sp),X or ldd,mb D(sp),X */
565 if (((inst & 0x0fc010e0) == 0x0fc010e0
566 || (inst & 0x0fc010e0) == 0x0fc010e0)
567 && hppa_extract_14 (inst) < 0)
570 /* bv %r0(%rp) or bv,n %r0(%rp) */
571 if (inst == 0xe840c000 || inst == 0xe840c002)
577 static const unsigned char *
578 hppa_breakpoint_from_pc (CORE_ADDR *pc, int *len)
580 static const unsigned char breakpoint[] = {0x00, 0x01, 0x00, 0x04};
581 (*len) = sizeof (breakpoint);
585 /* Return the name of a register. */
588 hppa32_register_name (int i)
590 static char *names[] = {
591 "flags", "r1", "rp", "r3",
592 "r4", "r5", "r6", "r7",
593 "r8", "r9", "r10", "r11",
594 "r12", "r13", "r14", "r15",
595 "r16", "r17", "r18", "r19",
596 "r20", "r21", "r22", "r23",
597 "r24", "r25", "r26", "dp",
598 "ret0", "ret1", "sp", "r31",
599 "sar", "pcoqh", "pcsqh", "pcoqt",
600 "pcsqt", "eiem", "iir", "isr",
601 "ior", "ipsw", "goto", "sr4",
602 "sr0", "sr1", "sr2", "sr3",
603 "sr5", "sr6", "sr7", "cr0",
604 "cr8", "cr9", "ccr", "cr12",
605 "cr13", "cr24", "cr25", "cr26",
606 "mpsfu_high","mpsfu_low","mpsfu_ovflo","pad",
607 "fpsr", "fpe1", "fpe2", "fpe3",
608 "fpe4", "fpe5", "fpe6", "fpe7",
609 "fr4", "fr4R", "fr5", "fr5R",
610 "fr6", "fr6R", "fr7", "fr7R",
611 "fr8", "fr8R", "fr9", "fr9R",
612 "fr10", "fr10R", "fr11", "fr11R",
613 "fr12", "fr12R", "fr13", "fr13R",
614 "fr14", "fr14R", "fr15", "fr15R",
615 "fr16", "fr16R", "fr17", "fr17R",
616 "fr18", "fr18R", "fr19", "fr19R",
617 "fr20", "fr20R", "fr21", "fr21R",
618 "fr22", "fr22R", "fr23", "fr23R",
619 "fr24", "fr24R", "fr25", "fr25R",
620 "fr26", "fr26R", "fr27", "fr27R",
621 "fr28", "fr28R", "fr29", "fr29R",
622 "fr30", "fr30R", "fr31", "fr31R"
624 if (i < 0 || i >= (sizeof (names) / sizeof (*names)))
631 hppa64_register_name (int i)
633 static char *names[] = {
634 "flags", "r1", "rp", "r3",
635 "r4", "r5", "r6", "r7",
636 "r8", "r9", "r10", "r11",
637 "r12", "r13", "r14", "r15",
638 "r16", "r17", "r18", "r19",
639 "r20", "r21", "r22", "r23",
640 "r24", "r25", "r26", "dp",
641 "ret0", "ret1", "sp", "r31",
642 "sar", "pcoqh", "pcsqh", "pcoqt",
643 "pcsqt", "eiem", "iir", "isr",
644 "ior", "ipsw", "goto", "sr4",
645 "sr0", "sr1", "sr2", "sr3",
646 "sr5", "sr6", "sr7", "cr0",
647 "cr8", "cr9", "ccr", "cr12",
648 "cr13", "cr24", "cr25", "cr26",
649 "mpsfu_high","mpsfu_low","mpsfu_ovflo","pad",
650 "fpsr", "fpe1", "fpe2", "fpe3",
651 "fr4", "fr5", "fr6", "fr7",
652 "fr8", "fr9", "fr10", "fr11",
653 "fr12", "fr13", "fr14", "fr15",
654 "fr16", "fr17", "fr18", "fr19",
655 "fr20", "fr21", "fr22", "fr23",
656 "fr24", "fr25", "fr26", "fr27",
657 "fr28", "fr29", "fr30", "fr31"
659 if (i < 0 || i >= (sizeof (names) / sizeof (*names)))
666 hppa64_dwarf_reg_to_regnum (int reg)
668 /* r0-r31 and sar map one-to-one. */
672 /* fr4-fr31 are mapped from 72 in steps of 2. */
673 if (reg >= 72 || reg < 72 + 28 * 2)
674 return HPPA64_FP4_REGNUM + (reg - 72) / 2;
676 error ("Invalid DWARF register num %d.", reg);
680 /* This function pushes a stack frame with arguments as part of the
681 inferior function calling mechanism.
683 This is the version of the function for the 32-bit PA machines, in
684 which later arguments appear at lower addresses. (The stack always
685 grows towards higher addresses.)
687 We simply allocate the appropriate amount of stack space and put
688 arguments into their proper slots. */
691 hppa32_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
692 struct regcache *regcache, CORE_ADDR bp_addr,
693 int nargs, struct value **args, CORE_ADDR sp,
694 int struct_return, CORE_ADDR struct_addr)
696 /* Stack base address at which any pass-by-reference parameters are
698 CORE_ADDR struct_end = 0;
699 /* Stack base address at which the first parameter is stored. */
700 CORE_ADDR param_end = 0;
702 /* The inner most end of the stack after all the parameters have
704 CORE_ADDR new_sp = 0;
706 /* Two passes. First pass computes the location of everything,
707 second pass writes the bytes out. */
710 /* Global pointer (r19) of the function we are trying to call. */
713 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
715 for (write_pass = 0; write_pass < 2; write_pass++)
717 CORE_ADDR struct_ptr = 0;
718 /* The first parameter goes into sp-36, each stack slot is 4-bytes.
719 struct_ptr is adjusted for each argument below, so the first
720 argument will end up at sp-36. */
721 CORE_ADDR param_ptr = 32;
723 int small_struct = 0;
725 for (i = 0; i < nargs; i++)
727 struct value *arg = args[i];
728 struct type *type = check_typedef (value_type (arg));
729 /* The corresponding parameter that is pushed onto the
730 stack, and [possibly] passed in a register. */
733 memset (param_val, 0, sizeof param_val);
734 if (TYPE_LENGTH (type) > 8)
736 /* Large parameter, pass by reference. Store the value
737 in "struct" area and then pass its address. */
739 struct_ptr += align_up (TYPE_LENGTH (type), 8);
741 write_memory (struct_end - struct_ptr, value_contents (arg),
743 store_unsigned_integer (param_val, 4, struct_end - struct_ptr);
745 else if (TYPE_CODE (type) == TYPE_CODE_INT
746 || TYPE_CODE (type) == TYPE_CODE_ENUM)
748 /* Integer value store, right aligned. "unpack_long"
749 takes care of any sign-extension problems. */
750 param_len = align_up (TYPE_LENGTH (type), 4);
751 store_unsigned_integer (param_val, param_len,
753 value_contents (arg)));
755 else if (TYPE_CODE (type) == TYPE_CODE_FLT)
757 /* Floating point value store, right aligned. */
758 param_len = align_up (TYPE_LENGTH (type), 4);
759 memcpy (param_val, value_contents (arg), param_len);
763 param_len = align_up (TYPE_LENGTH (type), 4);
765 /* Small struct value are stored right-aligned. */
766 memcpy (param_val + param_len - TYPE_LENGTH (type),
767 value_contents (arg), TYPE_LENGTH (type));
769 /* Structures of size 5, 6 and 7 bytes are special in that
770 the higher-ordered word is stored in the lower-ordered
771 argument, and even though it is a 8-byte quantity the
772 registers need not be 8-byte aligned. */
773 if (param_len > 4 && param_len < 8)
777 param_ptr += param_len;
778 if (param_len == 8 && !small_struct)
779 param_ptr = align_up (param_ptr, 8);
781 /* First 4 non-FP arguments are passed in gr26-gr23.
782 First 4 32-bit FP arguments are passed in fr4L-fr7L.
783 First 2 64-bit FP arguments are passed in fr5 and fr7.
785 The rest go on the stack, starting at sp-36, towards lower
786 addresses. 8-byte arguments must be aligned to a 8-byte
790 write_memory (param_end - param_ptr, param_val, param_len);
792 /* There are some cases when we don't know the type
793 expected by the callee (e.g. for variadic functions), so
794 pass the parameters in both general and fp regs. */
797 int grreg = 26 - (param_ptr - 36) / 4;
798 int fpLreg = 72 + (param_ptr - 36) / 4 * 2;
799 int fpreg = 74 + (param_ptr - 32) / 8 * 4;
801 regcache_cooked_write (regcache, grreg, param_val);
802 regcache_cooked_write (regcache, fpLreg, param_val);
806 regcache_cooked_write (regcache, grreg + 1,
809 regcache_cooked_write (regcache, fpreg, param_val);
810 regcache_cooked_write (regcache, fpreg + 1,
817 /* Update the various stack pointers. */
820 struct_end = sp + align_up (struct_ptr, 64);
821 /* PARAM_PTR already accounts for all the arguments passed
822 by the user. However, the ABI mandates minimum stack
823 space allocations for outgoing arguments. The ABI also
824 mandates minimum stack alignments which we must
826 param_end = struct_end + align_up (param_ptr, 64);
830 /* If a structure has to be returned, set up register 28 to hold its
833 write_register (28, struct_addr);
835 gp = tdep->find_global_pointer (function);
838 write_register (19, gp);
840 /* Set the return address. */
841 if (!gdbarch_push_dummy_code_p (gdbarch))
842 regcache_cooked_write_unsigned (regcache, HPPA_RP_REGNUM, bp_addr);
844 /* Update the Stack Pointer. */
845 regcache_cooked_write_unsigned (regcache, HPPA_SP_REGNUM, param_end);
850 /* The 64-bit PA-RISC calling conventions are documented in "64-Bit
851 Runtime Architecture for PA-RISC 2.0", which is distributed as part
852 as of the HP-UX Software Transition Kit (STK). This implementation
853 is based on version 3.3, dated October 6, 1997. */
855 /* Check whether TYPE is an "Integral or Pointer Scalar Type". */
858 hppa64_integral_or_pointer_p (const struct type *type)
860 switch (TYPE_CODE (type))
866 case TYPE_CODE_RANGE:
868 int len = TYPE_LENGTH (type);
869 return (len == 1 || len == 2 || len == 4 || len == 8);
873 return (TYPE_LENGTH (type) == 8);
881 /* Check whether TYPE is a "Floating Scalar Type". */
884 hppa64_floating_p (const struct type *type)
886 switch (TYPE_CODE (type))
890 int len = TYPE_LENGTH (type);
891 return (len == 4 || len == 8 || len == 16);
901 hppa64_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
902 struct regcache *regcache, CORE_ADDR bp_addr,
903 int nargs, struct value **args, CORE_ADDR sp,
904 int struct_return, CORE_ADDR struct_addr)
906 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
910 /* "The outgoing parameter area [...] must be aligned at a 16-byte
912 sp = align_up (sp, 16);
914 for (i = 0; i < nargs; i++)
916 struct value *arg = args[i];
917 struct type *type = value_type (arg);
918 int len = TYPE_LENGTH (type);
919 const bfd_byte *valbuf;
922 /* "Each parameter begins on a 64-bit (8-byte) boundary." */
923 offset = align_up (offset, 8);
925 if (hppa64_integral_or_pointer_p (type))
927 /* "Integral scalar parameters smaller than 64 bits are
928 padded on the left (i.e., the value is in the
929 least-significant bits of the 64-bit storage unit, and
930 the high-order bits are undefined)." Therefore we can
931 safely sign-extend them. */
934 arg = value_cast (builtin_type_int64, arg);
938 else if (hppa64_floating_p (type))
942 /* "Quad-precision (128-bit) floating-point scalar
943 parameters are aligned on a 16-byte boundary." */
944 offset = align_up (offset, 16);
946 /* "Double-extended- and quad-precision floating-point
947 parameters within the first 64 bytes of the parameter
948 list are always passed in general registers." */
954 /* "Single-precision (32-bit) floating-point scalar
955 parameters are padded on the left with 32 bits of
956 garbage (i.e., the floating-point value is in the
957 least-significant 32 bits of a 64-bit storage
962 /* "Single- and double-precision floating-point
963 parameters in this area are passed according to the
964 available formal parameter information in a function
965 prototype. [...] If no prototype is in scope,
966 floating-point parameters must be passed both in the
967 corresponding general registers and in the
968 corresponding floating-point registers." */
969 regnum = HPPA64_FP4_REGNUM + offset / 8;
971 if (regnum < HPPA64_FP4_REGNUM + 8)
973 /* "Single-precision floating-point parameters, when
974 passed in floating-point registers, are passed in
975 the right halves of the floating point registers;
976 the left halves are unused." */
977 regcache_cooked_write_part (regcache, regnum, offset % 8,
978 len, value_contents (arg));
986 /* "Aggregates larger than 8 bytes are aligned on a
987 16-byte boundary, possibly leaving an unused argument
988 slot, which is filled with garbage. If necessary,
989 they are padded on the right (with garbage), to a
990 multiple of 8 bytes." */
991 offset = align_up (offset, 16);
995 /* Always store the argument in memory. */
996 write_memory (sp + offset, value_contents (arg), len);
998 valbuf = value_contents (arg);
999 regnum = HPPA_ARG0_REGNUM - offset / 8;
1000 while (regnum > HPPA_ARG0_REGNUM - 8 && len > 0)
1002 regcache_cooked_write_part (regcache, regnum,
1003 offset % 8, min (len, 8), valbuf);
1004 offset += min (len, 8);
1005 valbuf += min (len, 8);
1006 len -= min (len, 8);
1013 /* Set up GR29 (%ret1) to hold the argument pointer (ap). */
1014 regcache_cooked_write_unsigned (regcache, HPPA_RET1_REGNUM, sp + 64);
1016 /* Allocate the outgoing parameter area. Make sure the outgoing
1017 parameter area is multiple of 16 bytes in length. */
1018 sp += max (align_up (offset, 16), 64);
1020 /* Allocate 32-bytes of scratch space. The documentation doesn't
1021 mention this, but it seems to be needed. */
1024 /* Allocate the frame marker area. */
1027 /* If a structure has to be returned, set up GR 28 (%ret0) to hold
1030 regcache_cooked_write_unsigned (regcache, HPPA_RET0_REGNUM, struct_addr);
1032 /* Set up GR27 (%dp) to hold the global pointer (gp). */
1033 gp = tdep->find_global_pointer (function);
1035 regcache_cooked_write_unsigned (regcache, HPPA_DP_REGNUM, gp);
1037 /* Set up GR2 (%rp) to hold the return pointer (rp). */
1038 if (!gdbarch_push_dummy_code_p (gdbarch))
1039 regcache_cooked_write_unsigned (regcache, HPPA_RP_REGNUM, bp_addr);
1041 /* Set up GR30 to hold the stack pointer (sp). */
1042 regcache_cooked_write_unsigned (regcache, HPPA_SP_REGNUM, sp);
1048 /* Handle 32/64-bit struct return conventions. */
1050 static enum return_value_convention
1051 hppa32_return_value (struct gdbarch *gdbarch,
1052 struct type *type, struct regcache *regcache,
1053 gdb_byte *readbuf, const gdb_byte *writebuf)
1055 if (TYPE_LENGTH (type) <= 2 * 4)
1057 /* The value always lives in the right hand end of the register
1058 (or register pair)? */
1060 int reg = TYPE_CODE (type) == TYPE_CODE_FLT ? HPPA_FP4_REGNUM : 28;
1061 int part = TYPE_LENGTH (type) % 4;
1062 /* The left hand register contains only part of the value,
1063 transfer that first so that the rest can be xfered as entire
1064 4-byte registers. */
1067 if (readbuf != NULL)
1068 regcache_cooked_read_part (regcache, reg, 4 - part,
1070 if (writebuf != NULL)
1071 regcache_cooked_write_part (regcache, reg, 4 - part,
1075 /* Now transfer the remaining register values. */
1076 for (b = part; b < TYPE_LENGTH (type); b += 4)
1078 if (readbuf != NULL)
1079 regcache_cooked_read (regcache, reg, readbuf + b);
1080 if (writebuf != NULL)
1081 regcache_cooked_write (regcache, reg, writebuf + b);
1084 return RETURN_VALUE_REGISTER_CONVENTION;
1087 return RETURN_VALUE_STRUCT_CONVENTION;
1090 static enum return_value_convention
1091 hppa64_return_value (struct gdbarch *gdbarch,
1092 struct type *type, struct regcache *regcache,
1093 gdb_byte *readbuf, const gdb_byte *writebuf)
1095 int len = TYPE_LENGTH (type);
1100 /* All return values larget than 128 bits must be aggregate
1102 gdb_assert (!hppa64_integral_or_pointer_p (type));
1103 gdb_assert (!hppa64_floating_p (type));
1105 /* "Aggregate return values larger than 128 bits are returned in
1106 a buffer allocated by the caller. The address of the buffer
1107 must be passed in GR 28." */
1108 return RETURN_VALUE_STRUCT_CONVENTION;
1111 if (hppa64_integral_or_pointer_p (type))
1113 /* "Integral return values are returned in GR 28. Values
1114 smaller than 64 bits are padded on the left (with garbage)." */
1115 regnum = HPPA_RET0_REGNUM;
1118 else if (hppa64_floating_p (type))
1122 /* "Double-extended- and quad-precision floating-point
1123 values are returned in GRs 28 and 29. The sign,
1124 exponent, and most-significant bits of the mantissa are
1125 returned in GR 28; the least-significant bits of the
1126 mantissa are passed in GR 29. For double-extended
1127 precision values, GR 29 is padded on the right with 48
1128 bits of garbage." */
1129 regnum = HPPA_RET0_REGNUM;
1134 /* "Single-precision and double-precision floating-point
1135 return values are returned in FR 4R (single precision) or
1136 FR 4 (double-precision)." */
1137 regnum = HPPA64_FP4_REGNUM;
1143 /* "Aggregate return values up to 64 bits in size are returned
1144 in GR 28. Aggregates smaller than 64 bits are left aligned
1145 in the register; the pad bits on the right are undefined."
1147 "Aggregate return values between 65 and 128 bits are returned
1148 in GRs 28 and 29. The first 64 bits are placed in GR 28, and
1149 the remaining bits are placed, left aligned, in GR 29. The
1150 pad bits on the right of GR 29 (if any) are undefined." */
1151 regnum = HPPA_RET0_REGNUM;
1159 regcache_cooked_read_part (regcache, regnum, offset,
1160 min (len, 8), readbuf);
1161 readbuf += min (len, 8);
1162 len -= min (len, 8);
1171 regcache_cooked_write_part (regcache, regnum, offset,
1172 min (len, 8), writebuf);
1173 writebuf += min (len, 8);
1174 len -= min (len, 8);
1179 return RETURN_VALUE_REGISTER_CONVENTION;
1184 hppa32_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr,
1185 struct target_ops *targ)
1189 CORE_ADDR plabel = addr & ~3;
1190 return read_memory_typed_address (plabel, builtin_type_void_func_ptr);
1197 hppa32_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
1199 /* HP frames are 64-byte (or cache line) aligned (yes that's _byte_
1201 return align_up (addr, 64);
1204 /* Force all frames to 16-byte alignment. Better safe than sorry. */
1207 hppa64_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
1209 /* Just always 16-byte align. */
1210 return align_up (addr, 16);
1214 hppa_read_pc (ptid_t ptid)
1219 ipsw = read_register_pid (HPPA_IPSW_REGNUM, ptid);
1220 pc = read_register_pid (HPPA_PCOQ_HEAD_REGNUM, ptid);
1222 /* If the current instruction is nullified, then we are effectively
1223 still executing the previous instruction. Pretend we are still
1224 there. This is needed when single stepping; if the nullified
1225 instruction is on a different line, we don't want GDB to think
1226 we've stepped onto that line. */
1227 if (ipsw & 0x00200000)
1234 hppa_write_pc (CORE_ADDR pc, ptid_t ptid)
1236 write_register_pid (HPPA_PCOQ_HEAD_REGNUM, pc, ptid);
1237 write_register_pid (HPPA_PCOQ_TAIL_REGNUM, pc + 4, ptid);
1240 /* return the alignment of a type in bytes. Structures have the maximum
1241 alignment required by their fields. */
1244 hppa_alignof (struct type *type)
1246 int max_align, align, i;
1247 CHECK_TYPEDEF (type);
1248 switch (TYPE_CODE (type))
1253 return TYPE_LENGTH (type);
1254 case TYPE_CODE_ARRAY:
1255 return hppa_alignof (TYPE_FIELD_TYPE (type, 0));
1256 case TYPE_CODE_STRUCT:
1257 case TYPE_CODE_UNION:
1259 for (i = 0; i < TYPE_NFIELDS (type); i++)
1261 /* Bit fields have no real alignment. */
1262 /* if (!TYPE_FIELD_BITPOS (type, i)) */
1263 if (!TYPE_FIELD_BITSIZE (type, i)) /* elz: this should be bitsize */
1265 align = hppa_alignof (TYPE_FIELD_TYPE (type, i));
1266 max_align = max (max_align, align);
1275 /* For the given instruction (INST), return any adjustment it makes
1276 to the stack pointer or zero for no adjustment.
1278 This only handles instructions commonly found in prologues. */
1281 prologue_inst_adjust_sp (unsigned long inst)
1283 /* This must persist across calls. */
1284 static int save_high21;
1286 /* The most common way to perform a stack adjustment ldo X(sp),sp */
1287 if ((inst & 0xffffc000) == 0x37de0000)
1288 return hppa_extract_14 (inst);
1291 if ((inst & 0xffe00000) == 0x6fc00000)
1292 return hppa_extract_14 (inst);
1294 /* std,ma X,D(sp) */
1295 if ((inst & 0xffe00008) == 0x73c00008)
1296 return (inst & 0x1 ? -1 << 13 : 0) | (((inst >> 4) & 0x3ff) << 3);
1298 /* addil high21,%r30; ldo low11,(%r1),%r30)
1299 save high bits in save_high21 for later use. */
1300 if ((inst & 0xffe00000) == 0x2bc00000)
1302 save_high21 = hppa_extract_21 (inst);
1306 if ((inst & 0xffff0000) == 0x343e0000)
1307 return save_high21 + hppa_extract_14 (inst);
1309 /* fstws as used by the HP compilers. */
1310 if ((inst & 0xffffffe0) == 0x2fd01220)
1311 return hppa_extract_5_load (inst);
1313 /* No adjustment. */
1317 /* Return nonzero if INST is a branch of some kind, else return zero. */
1320 is_branch (unsigned long inst)
1349 /* Return the register number for a GR which is saved by INST or
1350 zero it INST does not save a GR. */
1353 inst_saves_gr (unsigned long inst)
1355 /* Does it look like a stw? */
1356 if ((inst >> 26) == 0x1a || (inst >> 26) == 0x1b
1357 || (inst >> 26) == 0x1f
1358 || ((inst >> 26) == 0x1f
1359 && ((inst >> 6) == 0xa)))
1360 return hppa_extract_5R_store (inst);
1362 /* Does it look like a std? */
1363 if ((inst >> 26) == 0x1c
1364 || ((inst >> 26) == 0x03
1365 && ((inst >> 6) & 0xf) == 0xb))
1366 return hppa_extract_5R_store (inst);
1368 /* Does it look like a stwm? GCC & HPC may use this in prologues. */
1369 if ((inst >> 26) == 0x1b)
1370 return hppa_extract_5R_store (inst);
1372 /* Does it look like sth or stb? HPC versions 9.0 and later use these
1374 if ((inst >> 26) == 0x19 || (inst >> 26) == 0x18
1375 || ((inst >> 26) == 0x3
1376 && (((inst >> 6) & 0xf) == 0x8
1377 || (inst >> 6) & 0xf) == 0x9))
1378 return hppa_extract_5R_store (inst);
1383 /* Return the register number for a FR which is saved by INST or
1384 zero it INST does not save a FR.
1386 Note we only care about full 64bit register stores (that's the only
1387 kind of stores the prologue will use).
1389 FIXME: What about argument stores with the HP compiler in ANSI mode? */
1392 inst_saves_fr (unsigned long inst)
1394 /* is this an FSTD ? */
1395 if ((inst & 0xfc00dfc0) == 0x2c001200)
1396 return hppa_extract_5r_store (inst);
1397 if ((inst & 0xfc000002) == 0x70000002)
1398 return hppa_extract_5R_store (inst);
1399 /* is this an FSTW ? */
1400 if ((inst & 0xfc00df80) == 0x24001200)
1401 return hppa_extract_5r_store (inst);
1402 if ((inst & 0xfc000002) == 0x7c000000)
1403 return hppa_extract_5R_store (inst);
1407 /* Advance PC across any function entry prologue instructions
1408 to reach some "real" code.
1410 Use information in the unwind table to determine what exactly should
1411 be in the prologue. */
1415 skip_prologue_hard_way (CORE_ADDR pc, int stop_before_branch)
1418 CORE_ADDR orig_pc = pc;
1419 unsigned long inst, stack_remaining, save_gr, save_fr, save_rp, save_sp;
1420 unsigned long args_stored, status, i, restart_gr, restart_fr;
1421 struct unwind_table_entry *u;
1422 int final_iteration;
1428 u = find_unwind_entry (pc);
1432 /* If we are not at the beginning of a function, then return now. */
1433 if ((pc & ~0x3) != u->region_start)
1436 /* This is how much of a frame adjustment we need to account for. */
1437 stack_remaining = u->Total_frame_size << 3;
1439 /* Magic register saves we want to know about. */
1440 save_rp = u->Save_RP;
1441 save_sp = u->Save_SP;
1443 /* An indication that args may be stored into the stack. Unfortunately
1444 the HPUX compilers tend to set this in cases where no args were
1448 /* Turn the Entry_GR field into a bitmask. */
1450 for (i = 3; i < u->Entry_GR + 3; i++)
1452 /* Frame pointer gets saved into a special location. */
1453 if (u->Save_SP && i == HPPA_FP_REGNUM)
1456 save_gr |= (1 << i);
1458 save_gr &= ~restart_gr;
1460 /* Turn the Entry_FR field into a bitmask too. */
1462 for (i = 12; i < u->Entry_FR + 12; i++)
1463 save_fr |= (1 << i);
1464 save_fr &= ~restart_fr;
1466 final_iteration = 0;
1468 /* Loop until we find everything of interest or hit a branch.
1470 For unoptimized GCC code and for any HP CC code this will never ever
1471 examine any user instructions.
1473 For optimzied GCC code we're faced with problems. GCC will schedule
1474 its prologue and make prologue instructions available for delay slot
1475 filling. The end result is user code gets mixed in with the prologue
1476 and a prologue instruction may be in the delay slot of the first branch
1479 Some unexpected things are expected with debugging optimized code, so
1480 we allow this routine to walk past user instructions in optimized
1482 while (save_gr || save_fr || save_rp || save_sp || stack_remaining > 0
1485 unsigned int reg_num;
1486 unsigned long old_stack_remaining, old_save_gr, old_save_fr;
1487 unsigned long old_save_rp, old_save_sp, next_inst;
1489 /* Save copies of all the triggers so we can compare them later
1491 old_save_gr = save_gr;
1492 old_save_fr = save_fr;
1493 old_save_rp = save_rp;
1494 old_save_sp = save_sp;
1495 old_stack_remaining = stack_remaining;
1497 status = deprecated_read_memory_nobpt (pc, buf, 4);
1498 inst = extract_unsigned_integer (buf, 4);
1504 /* Note the interesting effects of this instruction. */
1505 stack_remaining -= prologue_inst_adjust_sp (inst);
1507 /* There are limited ways to store the return pointer into the
1509 if (inst == 0x6bc23fd9 || inst == 0x0fc212c1 || inst == 0x73c23fe1)
1512 /* These are the only ways we save SP into the stack. At this time
1513 the HP compilers never bother to save SP into the stack. */
1514 if ((inst & 0xffffc000) == 0x6fc10000
1515 || (inst & 0xffffc00c) == 0x73c10008)
1518 /* Are we loading some register with an offset from the argument
1520 if ((inst & 0xffe00000) == 0x37a00000
1521 || (inst & 0xffffffe0) == 0x081d0240)
1527 /* Account for general and floating-point register saves. */
1528 reg_num = inst_saves_gr (inst);
1529 save_gr &= ~(1 << reg_num);
1531 /* Ugh. Also account for argument stores into the stack.
1532 Unfortunately args_stored only tells us that some arguments
1533 where stored into the stack. Not how many or what kind!
1535 This is a kludge as on the HP compiler sets this bit and it
1536 never does prologue scheduling. So once we see one, skip past
1537 all of them. We have similar code for the fp arg stores below.
1539 FIXME. Can still die if we have a mix of GR and FR argument
1541 if (reg_num >= (TARGET_PTR_BIT == 64 ? 19 : 23) && reg_num <= 26)
1543 while (reg_num >= (TARGET_PTR_BIT == 64 ? 19 : 23) && reg_num <= 26)
1546 status = deprecated_read_memory_nobpt (pc, buf, 4);
1547 inst = extract_unsigned_integer (buf, 4);
1550 reg_num = inst_saves_gr (inst);
1556 reg_num = inst_saves_fr (inst);
1557 save_fr &= ~(1 << reg_num);
1559 status = deprecated_read_memory_nobpt (pc + 4, buf, 4);
1560 next_inst = extract_unsigned_integer (buf, 4);
1566 /* We've got to be read to handle the ldo before the fp register
1568 if ((inst & 0xfc000000) == 0x34000000
1569 && inst_saves_fr (next_inst) >= 4
1570 && inst_saves_fr (next_inst) <= (TARGET_PTR_BIT == 64 ? 11 : 7))
1572 /* So we drop into the code below in a reasonable state. */
1573 reg_num = inst_saves_fr (next_inst);
1577 /* Ugh. Also account for argument stores into the stack.
1578 This is a kludge as on the HP compiler sets this bit and it
1579 never does prologue scheduling. So once we see one, skip past
1581 if (reg_num >= 4 && reg_num <= (TARGET_PTR_BIT == 64 ? 11 : 7))
1583 while (reg_num >= 4 && reg_num <= (TARGET_PTR_BIT == 64 ? 11 : 7))
1586 status = deprecated_read_memory_nobpt (pc, buf, 4);
1587 inst = extract_unsigned_integer (buf, 4);
1590 if ((inst & 0xfc000000) != 0x34000000)
1592 status = deprecated_read_memory_nobpt (pc + 4, buf, 4);
1593 next_inst = extract_unsigned_integer (buf, 4);
1596 reg_num = inst_saves_fr (next_inst);
1602 /* Quit if we hit any kind of branch. This can happen if a prologue
1603 instruction is in the delay slot of the first call/branch. */
1604 if (is_branch (inst) && stop_before_branch)
1607 /* What a crock. The HP compilers set args_stored even if no
1608 arguments were stored into the stack (boo hiss). This could
1609 cause this code to then skip a bunch of user insns (up to the
1612 To combat this we try to identify when args_stored was bogusly
1613 set and clear it. We only do this when args_stored is nonzero,
1614 all other resources are accounted for, and nothing changed on
1617 && !(save_gr || save_fr || save_rp || save_sp || stack_remaining > 0)
1618 && old_save_gr == save_gr && old_save_fr == save_fr
1619 && old_save_rp == save_rp && old_save_sp == save_sp
1620 && old_stack_remaining == stack_remaining)
1626 /* !stop_before_branch, so also look at the insn in the delay slot
1628 if (final_iteration)
1630 if (is_branch (inst))
1631 final_iteration = 1;
1634 /* We've got a tenative location for the end of the prologue. However
1635 because of limitations in the unwind descriptor mechanism we may
1636 have went too far into user code looking for the save of a register
1637 that does not exist. So, if there registers we expected to be saved
1638 but never were, mask them out and restart.
1640 This should only happen in optimized code, and should be very rare. */
1641 if (save_gr || (save_fr && !(restart_fr || restart_gr)))
1644 restart_gr = save_gr;
1645 restart_fr = save_fr;
1653 /* Return the address of the PC after the last prologue instruction if
1654 we can determine it from the debug symbols. Else return zero. */
1657 after_prologue (CORE_ADDR pc)
1659 struct symtab_and_line sal;
1660 CORE_ADDR func_addr, func_end;
1663 /* If we can not find the symbol in the partial symbol table, then
1664 there is no hope we can determine the function's start address
1666 if (!find_pc_partial_function (pc, NULL, &func_addr, &func_end))
1669 /* Get the line associated with FUNC_ADDR. */
1670 sal = find_pc_line (func_addr, 0);
1672 /* There are only two cases to consider. First, the end of the source line
1673 is within the function bounds. In that case we return the end of the
1674 source line. Second is the end of the source line extends beyond the
1675 bounds of the current function. We need to use the slow code to
1676 examine instructions in that case.
1678 Anything else is simply a bug elsewhere. Fixing it here is absolutely
1679 the wrong thing to do. In fact, it should be entirely possible for this
1680 function to always return zero since the slow instruction scanning code
1681 is supposed to *always* work. If it does not, then it is a bug. */
1682 if (sal.end < func_end)
1688 /* To skip prologues, I use this predicate. Returns either PC itself
1689 if the code at PC does not look like a function prologue; otherwise
1690 returns an address that (if we're lucky) follows the prologue.
1692 hppa_skip_prologue is called by gdb to place a breakpoint in a function.
1693 It doesn't necessarily skips all the insns in the prologue. In fact
1694 we might not want to skip all the insns because a prologue insn may
1695 appear in the delay slot of the first branch, and we don't want to
1696 skip over the branch in that case. */
1699 hppa_skip_prologue (CORE_ADDR pc)
1703 CORE_ADDR post_prologue_pc;
1706 /* See if we can determine the end of the prologue via the symbol table.
1707 If so, then return either PC, or the PC after the prologue, whichever
1710 post_prologue_pc = after_prologue (pc);
1712 /* If after_prologue returned a useful address, then use it. Else
1713 fall back on the instruction skipping code.
1715 Some folks have claimed this causes problems because the breakpoint
1716 may be the first instruction of the prologue. If that happens, then
1717 the instruction skipping code has a bug that needs to be fixed. */
1718 if (post_prologue_pc != 0)
1719 return max (pc, post_prologue_pc);
1721 return (skip_prologue_hard_way (pc, 1));
1724 struct hppa_frame_cache
1727 struct trad_frame_saved_reg *saved_regs;
1730 static struct hppa_frame_cache *
1731 hppa_frame_cache (struct frame_info *next_frame, void **this_cache)
1733 struct hppa_frame_cache *cache;
1738 struct unwind_table_entry *u;
1739 CORE_ADDR prologue_end;
1744 fprintf_unfiltered (gdb_stdlog, "{ hppa_frame_cache (frame=%d) -> ",
1745 frame_relative_level(next_frame));
1747 if ((*this_cache) != NULL)
1750 fprintf_unfiltered (gdb_stdlog, "base=0x%s (cached) }",
1751 paddr_nz (((struct hppa_frame_cache *)*this_cache)->base));
1752 return (*this_cache);
1754 cache = FRAME_OBSTACK_ZALLOC (struct hppa_frame_cache);
1755 (*this_cache) = cache;
1756 cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
1759 u = find_unwind_entry (frame_pc_unwind (next_frame));
1763 fprintf_unfiltered (gdb_stdlog, "base=NULL (no unwind entry) }");
1764 return (*this_cache);
1767 /* Turn the Entry_GR field into a bitmask. */
1769 for (i = 3; i < u->Entry_GR + 3; i++)
1771 /* Frame pointer gets saved into a special location. */
1772 if (u->Save_SP && i == HPPA_FP_REGNUM)
1775 saved_gr_mask |= (1 << i);
1778 /* Turn the Entry_FR field into a bitmask too. */
1780 for (i = 12; i < u->Entry_FR + 12; i++)
1781 saved_fr_mask |= (1 << i);
1783 /* Loop until we find everything of interest or hit a branch.
1785 For unoptimized GCC code and for any HP CC code this will never ever
1786 examine any user instructions.
1788 For optimized GCC code we're faced with problems. GCC will schedule
1789 its prologue and make prologue instructions available for delay slot
1790 filling. The end result is user code gets mixed in with the prologue
1791 and a prologue instruction may be in the delay slot of the first branch
1794 Some unexpected things are expected with debugging optimized code, so
1795 we allow this routine to walk past user instructions in optimized
1798 int final_iteration = 0;
1799 CORE_ADDR pc, end_pc;
1800 int looking_for_sp = u->Save_SP;
1801 int looking_for_rp = u->Save_RP;
1804 /* We have to use skip_prologue_hard_way instead of just
1805 skip_prologue_using_sal, in case we stepped into a function without
1806 symbol information. hppa_skip_prologue also bounds the returned
1807 pc by the passed in pc, so it will not return a pc in the next
1810 We used to call hppa_skip_prologue to find the end of the prologue,
1811 but if some non-prologue instructions get scheduled into the prologue,
1812 and the program is compiled with debug information, the "easy" way
1813 in hppa_skip_prologue will return a prologue end that is too early
1814 for us to notice any potential frame adjustments. */
1816 /* We used to use frame_func_unwind () to locate the beginning of the
1817 function to pass to skip_prologue (). However, when objects are
1818 compiled without debug symbols, frame_func_unwind can return the wrong
1819 function (or 0). We can do better than that by using unwind records. */
1821 prologue_end = skip_prologue_hard_way (u->region_start, 0);
1822 end_pc = frame_pc_unwind (next_frame);
1824 if (prologue_end != 0 && end_pc > prologue_end)
1825 end_pc = prologue_end;
1829 for (pc = u->region_start;
1830 ((saved_gr_mask || saved_fr_mask
1831 || looking_for_sp || looking_for_rp
1832 || frame_size < (u->Total_frame_size << 3))
1840 if (!safe_frame_unwind_memory (next_frame, pc, buf4,
1843 error (_("Cannot read instruction at 0x%s."), paddr_nz (pc));
1844 return (*this_cache);
1847 inst = extract_unsigned_integer (buf4, sizeof buf4);
1849 /* Note the interesting effects of this instruction. */
1850 frame_size += prologue_inst_adjust_sp (inst);
1852 /* There are limited ways to store the return pointer into the
1854 if (inst == 0x6bc23fd9) /* stw rp,-0x14(sr0,sp) */
1857 cache->saved_regs[HPPA_RP_REGNUM].addr = -20;
1859 else if (inst == 0x6bc23fd1) /* stw rp,-0x18(sr0,sp) */
1862 cache->saved_regs[HPPA_RP_REGNUM].addr = -24;
1864 else if (inst == 0x0fc212c1
1865 || inst == 0x73c23fe1) /* std rp,-0x10(sr0,sp) */
1868 cache->saved_regs[HPPA_RP_REGNUM].addr = -16;
1871 /* Check to see if we saved SP into the stack. This also
1872 happens to indicate the location of the saved frame
1874 if ((inst & 0xffffc000) == 0x6fc10000 /* stw,ma r1,N(sr0,sp) */
1875 || (inst & 0xffffc00c) == 0x73c10008) /* std,ma r1,N(sr0,sp) */
1878 cache->saved_regs[HPPA_FP_REGNUM].addr = 0;
1880 else if (inst == 0x08030241) /* copy %r3, %r1 */
1885 /* Account for general and floating-point register saves. */
1886 reg = inst_saves_gr (inst);
1887 if (reg >= 3 && reg <= 18
1888 && (!u->Save_SP || reg != HPPA_FP_REGNUM))
1890 saved_gr_mask &= ~(1 << reg);
1891 if ((inst >> 26) == 0x1b && hppa_extract_14 (inst) >= 0)
1892 /* stwm with a positive displacement is a _post_
1894 cache->saved_regs[reg].addr = 0;
1895 else if ((inst & 0xfc00000c) == 0x70000008)
1896 /* A std has explicit post_modify forms. */
1897 cache->saved_regs[reg].addr = 0;
1902 if ((inst >> 26) == 0x1c)
1903 offset = (inst & 0x1 ? -1 << 13 : 0) | (((inst >> 4) & 0x3ff) << 3);
1904 else if ((inst >> 26) == 0x03)
1905 offset = hppa_low_hppa_sign_extend (inst & 0x1f, 5);
1907 offset = hppa_extract_14 (inst);
1909 /* Handle code with and without frame pointers. */
1911 cache->saved_regs[reg].addr = offset;
1913 cache->saved_regs[reg].addr = (u->Total_frame_size << 3) + offset;
1917 /* GCC handles callee saved FP regs a little differently.
1919 It emits an instruction to put the value of the start of
1920 the FP store area into %r1. It then uses fstds,ma with a
1921 basereg of %r1 for the stores.
1923 HP CC emits them at the current stack pointer modifying the
1924 stack pointer as it stores each register. */
1926 /* ldo X(%r3),%r1 or ldo X(%r30),%r1. */
1927 if ((inst & 0xffffc000) == 0x34610000
1928 || (inst & 0xffffc000) == 0x37c10000)
1929 fp_loc = hppa_extract_14 (inst);
1931 reg = inst_saves_fr (inst);
1932 if (reg >= 12 && reg <= 21)
1934 /* Note +4 braindamage below is necessary because the FP
1935 status registers are internally 8 registers rather than
1936 the expected 4 registers. */
1937 saved_fr_mask &= ~(1 << reg);
1940 /* 1st HP CC FP register store. After this
1941 instruction we've set enough state that the GCC and
1942 HPCC code are both handled in the same manner. */
1943 cache->saved_regs[reg + HPPA_FP4_REGNUM + 4].addr = 0;
1948 cache->saved_regs[reg + HPPA_FP0_REGNUM + 4].addr = fp_loc;
1953 /* Quit if we hit any kind of branch the previous iteration. */
1954 if (final_iteration)
1956 /* We want to look precisely one instruction beyond the branch
1957 if we have not found everything yet. */
1958 if (is_branch (inst))
1959 final_iteration = 1;
1964 /* The frame base always represents the value of %sp at entry to
1965 the current function (and is thus equivalent to the "saved"
1967 CORE_ADDR this_sp = frame_unwind_register_unsigned (next_frame, HPPA_SP_REGNUM);
1971 fprintf_unfiltered (gdb_stdlog, " (this_sp=0x%s, pc=0x%s, "
1972 "prologue_end=0x%s) ",
1974 paddr_nz (frame_pc_unwind (next_frame)),
1975 paddr_nz (prologue_end));
1977 /* Check to see if a frame pointer is available, and use it for
1978 frame unwinding if it is.
1980 There are some situations where we need to rely on the frame
1981 pointer to do stack unwinding. For example, if a function calls
1982 alloca (), the stack pointer can get adjusted inside the body of
1983 the function. In this case, the ABI requires that the compiler
1984 maintain a frame pointer for the function.
1986 The unwind record has a flag (alloca_frame) that indicates that
1987 a function has a variable frame; unfortunately, gcc/binutils
1988 does not set this flag. Instead, whenever a frame pointer is used
1989 and saved on the stack, the Save_SP flag is set. We use this to
1990 decide whether to use the frame pointer for unwinding.
1992 TODO: For the HP compiler, maybe we should use the alloca_frame flag
1993 instead of Save_SP. */
1995 fp = frame_unwind_register_unsigned (next_frame, HPPA_FP_REGNUM);
1997 if (frame_pc_unwind (next_frame) >= prologue_end
1998 && u->Save_SP && fp != 0)
2003 fprintf_unfiltered (gdb_stdlog, " (base=0x%s) [frame pointer]",
2004 paddr_nz (cache->base));
2007 && trad_frame_addr_p (cache->saved_regs, HPPA_SP_REGNUM))
2009 /* Both we're expecting the SP to be saved and the SP has been
2010 saved. The entry SP value is saved at this frame's SP
2012 cache->base = read_memory_integer (this_sp, TARGET_PTR_BIT / 8);
2015 fprintf_unfiltered (gdb_stdlog, " (base=0x%s) [saved]",
2016 paddr_nz (cache->base));
2020 /* The prologue has been slowly allocating stack space. Adjust
2022 cache->base = this_sp - frame_size;
2024 fprintf_unfiltered (gdb_stdlog, " (base=0x%s) [unwind adjust]",
2025 paddr_nz (cache->base));
2028 trad_frame_set_value (cache->saved_regs, HPPA_SP_REGNUM, cache->base);
2031 /* The PC is found in the "return register", "Millicode" uses "r31"
2032 as the return register while normal code uses "rp". */
2035 if (trad_frame_addr_p (cache->saved_regs, 31))
2037 cache->saved_regs[HPPA_PCOQ_HEAD_REGNUM] = cache->saved_regs[31];
2039 fprintf_unfiltered (gdb_stdlog, " (pc=r31) [stack] } ");
2043 ULONGEST r31 = frame_unwind_register_unsigned (next_frame, 31);
2044 trad_frame_set_value (cache->saved_regs, HPPA_PCOQ_HEAD_REGNUM, r31);
2046 fprintf_unfiltered (gdb_stdlog, " (pc=r31) [frame] } ");
2051 if (trad_frame_addr_p (cache->saved_regs, HPPA_RP_REGNUM))
2053 cache->saved_regs[HPPA_PCOQ_HEAD_REGNUM] =
2054 cache->saved_regs[HPPA_RP_REGNUM];
2056 fprintf_unfiltered (gdb_stdlog, " (pc=rp) [stack] } ");
2060 ULONGEST rp = frame_unwind_register_unsigned (next_frame, HPPA_RP_REGNUM);
2061 trad_frame_set_value (cache->saved_regs, HPPA_PCOQ_HEAD_REGNUM, rp);
2063 fprintf_unfiltered (gdb_stdlog, " (pc=rp) [frame] } ");
2067 /* If Save_SP is set, then we expect the frame pointer to be saved in the
2068 frame. However, there is a one-insn window where we haven't saved it
2069 yet, but we've already clobbered it. Detect this case and fix it up.
2071 The prologue sequence for frame-pointer functions is:
2072 0: stw %rp, -20(%sp)
2075 c: stw,ma %r1, XX(%sp)
2077 So if we are at offset c, the r3 value that we want is not yet saved
2078 on the stack, but it's been overwritten. The prologue analyzer will
2079 set fp_in_r1 when it sees the copy insn so we know to get the value
2081 if (u->Save_SP && !trad_frame_addr_p (cache->saved_regs, HPPA_FP_REGNUM)
2084 ULONGEST r1 = frame_unwind_register_unsigned (next_frame, 1);
2085 trad_frame_set_value (cache->saved_regs, HPPA_FP_REGNUM, r1);
2089 /* Convert all the offsets into addresses. */
2091 for (reg = 0; reg < NUM_REGS; reg++)
2093 if (trad_frame_addr_p (cache->saved_regs, reg))
2094 cache->saved_regs[reg].addr += cache->base;
2099 struct gdbarch *gdbarch;
2100 struct gdbarch_tdep *tdep;
2102 gdbarch = get_frame_arch (next_frame);
2103 tdep = gdbarch_tdep (gdbarch);
2105 if (tdep->unwind_adjust_stub)
2107 tdep->unwind_adjust_stub (next_frame, cache->base, cache->saved_regs);
2112 fprintf_unfiltered (gdb_stdlog, "base=0x%s }",
2113 paddr_nz (((struct hppa_frame_cache *)*this_cache)->base));
2114 return (*this_cache);
2118 hppa_frame_this_id (struct frame_info *next_frame, void **this_cache,
2119 struct frame_id *this_id)
2121 struct hppa_frame_cache *info;
2122 CORE_ADDR pc = frame_pc_unwind (next_frame);
2123 struct unwind_table_entry *u;
2125 info = hppa_frame_cache (next_frame, this_cache);
2126 u = find_unwind_entry (pc);
2128 (*this_id) = frame_id_build (info->base, u->region_start);
2132 hppa_frame_prev_register (struct frame_info *next_frame,
2134 int regnum, int *optimizedp,
2135 enum lval_type *lvalp, CORE_ADDR *addrp,
2136 int *realnump, gdb_byte *valuep)
2138 struct hppa_frame_cache *info = hppa_frame_cache (next_frame, this_cache);
2139 hppa_frame_prev_register_helper (next_frame, info->saved_regs, regnum,
2140 optimizedp, lvalp, addrp, realnump, valuep);
2143 static const struct frame_unwind hppa_frame_unwind =
2147 hppa_frame_prev_register
2150 static const struct frame_unwind *
2151 hppa_frame_unwind_sniffer (struct frame_info *next_frame)
2153 CORE_ADDR pc = frame_pc_unwind (next_frame);
2155 if (find_unwind_entry (pc))
2156 return &hppa_frame_unwind;
2161 /* This is a generic fallback frame unwinder that kicks in if we fail all
2162 the other ones. Normally we would expect the stub and regular unwinder
2163 to work, but in some cases we might hit a function that just doesn't
2164 have any unwind information available. In this case we try to do
2165 unwinding solely based on code reading. This is obviously going to be
2166 slow, so only use this as a last resort. Currently this will only
2167 identify the stack and pc for the frame. */
2169 static struct hppa_frame_cache *
2170 hppa_fallback_frame_cache (struct frame_info *next_frame, void **this_cache)
2172 struct hppa_frame_cache *cache;
2173 unsigned int frame_size = 0;
2178 fprintf_unfiltered (gdb_stdlog,
2179 "{ hppa_fallback_frame_cache (frame=%d) -> ",
2180 frame_relative_level (next_frame));
2182 cache = FRAME_OBSTACK_ZALLOC (struct hppa_frame_cache);
2183 (*this_cache) = cache;
2184 cache->saved_regs = trad_frame_alloc_saved_regs (next_frame);
2186 start_pc = frame_func_unwind (next_frame);
2189 CORE_ADDR cur_pc = frame_pc_unwind (next_frame);
2192 for (pc = start_pc; pc < cur_pc; pc += 4)
2196 insn = read_memory_unsigned_integer (pc, 4);
2197 frame_size += prologue_inst_adjust_sp (insn);
2199 /* There are limited ways to store the return pointer into the
2201 if (insn == 0x6bc23fd9) /* stw rp,-0x14(sr0,sp) */
2203 cache->saved_regs[HPPA_RP_REGNUM].addr = -20;
2206 else if (insn == 0x0fc212c1
2207 || insn == 0x73c23fe1) /* std rp,-0x10(sr0,sp) */
2209 cache->saved_regs[HPPA_RP_REGNUM].addr = -16;
2216 fprintf_unfiltered (gdb_stdlog, " frame_size=%d, found_rp=%d }\n",
2217 frame_size, found_rp);
2219 cache->base = frame_unwind_register_unsigned (next_frame, HPPA_SP_REGNUM);
2220 cache->base -= frame_size;
2221 trad_frame_set_value (cache->saved_regs, HPPA_SP_REGNUM, cache->base);
2223 if (trad_frame_addr_p (cache->saved_regs, HPPA_RP_REGNUM))
2225 cache->saved_regs[HPPA_RP_REGNUM].addr += cache->base;
2226 cache->saved_regs[HPPA_PCOQ_HEAD_REGNUM] =
2227 cache->saved_regs[HPPA_RP_REGNUM];
2232 rp = frame_unwind_register_unsigned (next_frame, HPPA_RP_REGNUM);
2233 trad_frame_set_value (cache->saved_regs, HPPA_PCOQ_HEAD_REGNUM, rp);
2240 hppa_fallback_frame_this_id (struct frame_info *next_frame, void **this_cache,
2241 struct frame_id *this_id)
2243 struct hppa_frame_cache *info =
2244 hppa_fallback_frame_cache (next_frame, this_cache);
2245 (*this_id) = frame_id_build (info->base, frame_func_unwind (next_frame));
2249 hppa_fallback_frame_prev_register (struct frame_info *next_frame,
2251 int regnum, int *optimizedp,
2252 enum lval_type *lvalp, CORE_ADDR *addrp,
2253 int *realnump, gdb_byte *valuep)
2255 struct hppa_frame_cache *info =
2256 hppa_fallback_frame_cache (next_frame, this_cache);
2257 hppa_frame_prev_register_helper (next_frame, info->saved_regs, regnum,
2258 optimizedp, lvalp, addrp, realnump, valuep);
2261 static const struct frame_unwind hppa_fallback_frame_unwind =
2264 hppa_fallback_frame_this_id,
2265 hppa_fallback_frame_prev_register
2268 static const struct frame_unwind *
2269 hppa_fallback_unwind_sniffer (struct frame_info *next_frame)
2271 return &hppa_fallback_frame_unwind;
2274 /* Stub frames, used for all kinds of call stubs. */
2275 struct hppa_stub_unwind_cache
2278 struct trad_frame_saved_reg *saved_regs;
2281 static struct hppa_stub_unwind_cache *
2282 hppa_stub_frame_unwind_cache (struct frame_info *next_frame,
2285 struct gdbarch *gdbarch = get_frame_arch (next_frame);
2286 struct hppa_stub_unwind_cache *info;
2287 struct unwind_table_entry *u;
2292 info = FRAME_OBSTACK_ZALLOC (struct hppa_stub_unwind_cache);
2294 info->saved_regs = trad_frame_alloc_saved_regs (next_frame);
2296 info->base = frame_unwind_register_unsigned (next_frame, HPPA_SP_REGNUM);
2298 if (gdbarch_osabi (gdbarch) == GDB_OSABI_HPUX_SOM)
2300 /* HPUX uses export stubs in function calls; the export stub clobbers
2301 the return value of the caller, and, later restores it from the
2303 u = find_unwind_entry (frame_pc_unwind (next_frame));
2305 if (u && u->stub_unwind.stub_type == EXPORT)
2307 info->saved_regs[HPPA_PCOQ_HEAD_REGNUM].addr = info->base - 24;
2313 /* By default we assume that stubs do not change the rp. */
2314 info->saved_regs[HPPA_PCOQ_HEAD_REGNUM].realreg = HPPA_RP_REGNUM;
2320 hppa_stub_frame_this_id (struct frame_info *next_frame,
2321 void **this_prologue_cache,
2322 struct frame_id *this_id)
2324 struct hppa_stub_unwind_cache *info
2325 = hppa_stub_frame_unwind_cache (next_frame, this_prologue_cache);
2328 *this_id = frame_id_build (info->base, frame_func_unwind (next_frame));
2330 *this_id = null_frame_id;
2334 hppa_stub_frame_prev_register (struct frame_info *next_frame,
2335 void **this_prologue_cache,
2336 int regnum, int *optimizedp,
2337 enum lval_type *lvalp, CORE_ADDR *addrp,
2338 int *realnump, gdb_byte *valuep)
2340 struct hppa_stub_unwind_cache *info
2341 = hppa_stub_frame_unwind_cache (next_frame, this_prologue_cache);
2344 hppa_frame_prev_register_helper (next_frame, info->saved_regs, regnum,
2345 optimizedp, lvalp, addrp, realnump,
2348 error (_("Requesting registers from null frame."));
2351 static const struct frame_unwind hppa_stub_frame_unwind = {
2353 hppa_stub_frame_this_id,
2354 hppa_stub_frame_prev_register
2357 static const struct frame_unwind *
2358 hppa_stub_unwind_sniffer (struct frame_info *next_frame)
2360 CORE_ADDR pc = frame_pc_unwind (next_frame);
2361 struct gdbarch *gdbarch = get_frame_arch (next_frame);
2362 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2365 || (tdep->in_solib_call_trampoline != NULL
2366 && tdep->in_solib_call_trampoline (pc, NULL))
2367 || IN_SOLIB_RETURN_TRAMPOLINE (pc, NULL))
2368 return &hppa_stub_frame_unwind;
2372 static struct frame_id
2373 hppa_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
2375 return frame_id_build (frame_unwind_register_unsigned (next_frame,
2377 frame_pc_unwind (next_frame));
2381 hppa_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
2386 ipsw = frame_unwind_register_unsigned (next_frame, HPPA_IPSW_REGNUM);
2387 pc = frame_unwind_register_unsigned (next_frame, HPPA_PCOQ_HEAD_REGNUM);
2389 /* If the current instruction is nullified, then we are effectively
2390 still executing the previous instruction. Pretend we are still
2391 there. This is needed when single stepping; if the nullified
2392 instruction is on a different line, we don't want GDB to think
2393 we've stepped onto that line. */
2394 if (ipsw & 0x00200000)
2400 /* Return the minimal symbol whose name is NAME and stub type is STUB_TYPE.
2401 Return NULL if no such symbol was found. */
2403 struct minimal_symbol *
2404 hppa_lookup_stub_minimal_symbol (const char *name,
2405 enum unwind_stub_types stub_type)
2407 struct objfile *objfile;
2408 struct minimal_symbol *msym;
2410 ALL_MSYMBOLS (objfile, msym)
2412 if (strcmp (SYMBOL_LINKAGE_NAME (msym), name) == 0)
2414 struct unwind_table_entry *u;
2416 u = find_unwind_entry (SYMBOL_VALUE (msym));
2417 if (u != NULL && u->stub_unwind.stub_type == stub_type)
2426 unwind_command (char *exp, int from_tty)
2429 struct unwind_table_entry *u;
2431 /* If we have an expression, evaluate it and use it as the address. */
2433 if (exp != 0 && *exp != 0)
2434 address = parse_and_eval_address (exp);
2438 u = find_unwind_entry (address);
2442 printf_unfiltered ("Can't find unwind table entry for %s\n", exp);
2446 printf_unfiltered ("unwind_table_entry (0x%lx):\n", (unsigned long)u);
2448 printf_unfiltered ("\tregion_start = ");
2449 print_address (u->region_start, gdb_stdout);
2450 gdb_flush (gdb_stdout);
2452 printf_unfiltered ("\n\tregion_end = ");
2453 print_address (u->region_end, gdb_stdout);
2454 gdb_flush (gdb_stdout);
2456 #define pif(FLD) if (u->FLD) printf_unfiltered (" "#FLD);
2458 printf_unfiltered ("\n\tflags =");
2459 pif (Cannot_unwind);
2461 pif (Millicode_save_sr0);
2464 pif (Variable_Frame);
2465 pif (Separate_Package_Body);
2466 pif (Frame_Extension_Millicode);
2467 pif (Stack_Overflow_Check);
2468 pif (Two_Instruction_SP_Increment);
2472 pif (Save_MRP_in_frame);
2473 pif (extn_ptr_defined);
2474 pif (Cleanup_defined);
2475 pif (MPE_XL_interrupt_marker);
2476 pif (HP_UX_interrupt_marker);
2479 putchar_unfiltered ('\n');
2481 #define pin(FLD) printf_unfiltered ("\t"#FLD" = 0x%x\n", u->FLD);
2483 pin (Region_description);
2486 pin (Total_frame_size);
2488 if (u->stub_unwind.stub_type)
2490 printf_unfiltered ("\tstub type = ");
2491 switch (u->stub_unwind.stub_type)
2494 printf_unfiltered ("long branch\n");
2496 case PARAMETER_RELOCATION:
2497 printf_unfiltered ("parameter relocation\n");
2500 printf_unfiltered ("export\n");
2503 printf_unfiltered ("import\n");
2506 printf_unfiltered ("import shlib\n");
2509 printf_unfiltered ("unknown (%d)\n", u->stub_unwind.stub_type);
2515 hppa_pc_requires_run_before_use (CORE_ADDR pc)
2517 /* Sometimes we may pluck out a minimal symbol that has a negative address.
2519 An example of this occurs when an a.out is linked against a foo.sl.
2520 The foo.sl defines a global bar(), and the a.out declares a signature
2521 for bar(). However, the a.out doesn't directly call bar(), but passes
2522 its address in another call.
2524 If you have this scenario and attempt to "break bar" before running,
2525 gdb will find a minimal symbol for bar() in the a.out. But that
2526 symbol's address will be negative. What this appears to denote is
2527 an index backwards from the base of the procedure linkage table (PLT)
2528 into the data linkage table (DLT), the end of which is contiguous
2529 with the start of the PLT. This is clearly not a valid address for
2530 us to set a breakpoint on.
2532 Note that one must be careful in how one checks for a negative address.
2533 0xc0000000 is a legitimate address of something in a shared text
2534 segment, for example. Since I don't know what the possible range
2535 is of these "really, truly negative" addresses that come from the
2536 minimal symbols, I'm resorting to the gross hack of checking the
2537 top byte of the address for all 1's. Sigh. */
2539 return (!target_has_stack && (pc & 0xFF000000) == 0xFF000000);
2542 /* Return the GDB type object for the "standard" data type of data in
2545 static struct type *
2546 hppa32_register_type (struct gdbarch *gdbarch, int regnum)
2548 if (regnum < HPPA_FP4_REGNUM)
2549 return builtin_type_uint32;
2551 return builtin_type_ieee_single_big;
2554 static struct type *
2555 hppa64_register_type (struct gdbarch *gdbarch, int regnum)
2557 if (regnum < HPPA64_FP4_REGNUM)
2558 return builtin_type_uint64;
2560 return builtin_type_ieee_double_big;
2563 /* Return non-zero if REGNUM is not a register available to the user
2564 through ptrace/ttrace. */
2567 hppa32_cannot_store_register (int regnum)
2570 || regnum == HPPA_PCSQ_HEAD_REGNUM
2571 || (regnum >= HPPA_PCSQ_TAIL_REGNUM && regnum < HPPA_IPSW_REGNUM)
2572 || (regnum > HPPA_IPSW_REGNUM && regnum < HPPA_FP4_REGNUM));
2576 hppa64_cannot_store_register (int regnum)
2579 || regnum == HPPA_PCSQ_HEAD_REGNUM
2580 || (regnum >= HPPA_PCSQ_TAIL_REGNUM && regnum < HPPA_IPSW_REGNUM)
2581 || (regnum > HPPA_IPSW_REGNUM && regnum < HPPA64_FP4_REGNUM));
2585 hppa_smash_text_address (CORE_ADDR addr)
2587 /* The low two bits of the PC on the PA contain the privilege level.
2588 Some genius implementing a (non-GCC) compiler apparently decided
2589 this means that "addresses" in a text section therefore include a
2590 privilege level, and thus symbol tables should contain these bits.
2591 This seems like a bonehead thing to do--anyway, it seems to work
2592 for our purposes to just ignore those bits. */
2594 return (addr &= ~0x3);
2597 /* Get the ARGIth function argument for the current function. */
2600 hppa_fetch_pointer_argument (struct frame_info *frame, int argi,
2603 return get_frame_register_unsigned (frame, HPPA_R0_REGNUM + 26 - argi);
2607 hppa_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
2608 int regnum, gdb_byte *buf)
2612 regcache_raw_read_unsigned (regcache, regnum, &tmp);
2613 if (regnum == HPPA_PCOQ_HEAD_REGNUM || regnum == HPPA_PCOQ_TAIL_REGNUM)
2615 store_unsigned_integer (buf, sizeof tmp, tmp);
2619 hppa_find_global_pointer (struct value *function)
2625 hppa_frame_prev_register_helper (struct frame_info *next_frame,
2626 struct trad_frame_saved_reg saved_regs[],
2627 int regnum, int *optimizedp,
2628 enum lval_type *lvalp, CORE_ADDR *addrp,
2629 int *realnump, gdb_byte *valuep)
2631 struct gdbarch *arch = get_frame_arch (next_frame);
2633 if (regnum == HPPA_PCOQ_TAIL_REGNUM)
2637 int size = register_size (arch, HPPA_PCOQ_HEAD_REGNUM);
2640 trad_frame_get_prev_register (next_frame, saved_regs,
2641 HPPA_PCOQ_HEAD_REGNUM, optimizedp,
2642 lvalp, addrp, realnump, valuep);
2644 pc = extract_unsigned_integer (valuep, size);
2645 store_unsigned_integer (valuep, size, pc + 4);
2648 /* It's a computed value. */
2656 /* Make sure the "flags" register is zero in all unwound frames.
2657 The "flags" registers is a HP-UX specific wart, and only the code
2658 in hppa-hpux-tdep.c depends on it. However, it is easier to deal
2659 with it here. This shouldn't affect other systems since those
2660 should provide zero for the "flags" register anyway. */
2661 if (regnum == HPPA_FLAGS_REGNUM)
2664 store_unsigned_integer (valuep, register_size (arch, regnum), 0);
2666 /* It's a computed value. */
2674 trad_frame_get_prev_register (next_frame, saved_regs, regnum,
2675 optimizedp, lvalp, addrp, realnump, valuep);
2679 /* Here is a table of C type sizes on hppa with various compiles
2680 and options. I measured this on PA 9000/800 with HP-UX 11.11
2681 and these compilers:
2683 /usr/ccs/bin/cc HP92453-01 A.11.01.21
2684 /opt/ansic/bin/cc HP92453-01 B.11.11.28706.GP
2685 /opt/aCC/bin/aCC B3910B A.03.45
2686 gcc gcc 3.3.2 native hppa2.0w-hp-hpux11.11
2688 cc : 1 2 4 4 8 : 4 8 -- : 4 4
2689 ansic +DA1.1 : 1 2 4 4 8 : 4 8 16 : 4 4
2690 ansic +DA2.0 : 1 2 4 4 8 : 4 8 16 : 4 4
2691 ansic +DA2.0W : 1 2 4 8 8 : 4 8 16 : 8 8
2692 acc +DA1.1 : 1 2 4 4 8 : 4 8 16 : 4 4
2693 acc +DA2.0 : 1 2 4 4 8 : 4 8 16 : 4 4
2694 acc +DA2.0W : 1 2 4 8 8 : 4 8 16 : 8 8
2695 gcc : 1 2 4 4 8 : 4 8 16 : 4 4
2699 compiler and options
2700 char, short, int, long, long long
2701 float, double, long double
2704 So all these compilers use either ILP32 or LP64 model.
2705 TODO: gcc has more options so it needs more investigation.
2707 For floating point types, see:
2709 http://docs.hp.com/hpux/pdf/B3906-90006.pdf
2710 HP-UX floating-point guide, hpux 11.00
2712 -- chastain 2003-12-18 */
2714 static struct gdbarch *
2715 hppa_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
2717 struct gdbarch_tdep *tdep;
2718 struct gdbarch *gdbarch;
2720 /* Try to determine the ABI of the object we are loading. */
2721 if (info.abfd != NULL && info.osabi == GDB_OSABI_UNKNOWN)
2723 /* If it's a SOM file, assume it's HP/UX SOM. */
2724 if (bfd_get_flavour (info.abfd) == bfd_target_som_flavour)
2725 info.osabi = GDB_OSABI_HPUX_SOM;
2728 /* find a candidate among the list of pre-declared architectures. */
2729 arches = gdbarch_list_lookup_by_info (arches, &info);
2731 return (arches->gdbarch);
2733 /* If none found, then allocate and initialize one. */
2734 tdep = XZALLOC (struct gdbarch_tdep);
2735 gdbarch = gdbarch_alloc (&info, tdep);
2737 /* Determine from the bfd_arch_info structure if we are dealing with
2738 a 32 or 64 bits architecture. If the bfd_arch_info is not available,
2739 then default to a 32bit machine. */
2740 if (info.bfd_arch_info != NULL)
2741 tdep->bytes_per_address =
2742 info.bfd_arch_info->bits_per_address / info.bfd_arch_info->bits_per_byte;
2744 tdep->bytes_per_address = 4;
2746 tdep->find_global_pointer = hppa_find_global_pointer;
2748 /* Some parts of the gdbarch vector depend on whether we are running
2749 on a 32 bits or 64 bits target. */
2750 switch (tdep->bytes_per_address)
2753 set_gdbarch_num_regs (gdbarch, hppa32_num_regs);
2754 set_gdbarch_register_name (gdbarch, hppa32_register_name);
2755 set_gdbarch_register_type (gdbarch, hppa32_register_type);
2756 set_gdbarch_cannot_store_register (gdbarch,
2757 hppa32_cannot_store_register);
2758 set_gdbarch_cannot_fetch_register (gdbarch,
2759 hppa32_cannot_store_register);
2762 set_gdbarch_num_regs (gdbarch, hppa64_num_regs);
2763 set_gdbarch_register_name (gdbarch, hppa64_register_name);
2764 set_gdbarch_register_type (gdbarch, hppa64_register_type);
2765 set_gdbarch_dwarf_reg_to_regnum (gdbarch, hppa64_dwarf_reg_to_regnum);
2766 set_gdbarch_dwarf2_reg_to_regnum (gdbarch, hppa64_dwarf_reg_to_regnum);
2767 set_gdbarch_cannot_store_register (gdbarch,
2768 hppa64_cannot_store_register);
2769 set_gdbarch_cannot_fetch_register (gdbarch,
2770 hppa64_cannot_store_register);
2773 internal_error (__FILE__, __LINE__, _("Unsupported address size: %d"),
2774 tdep->bytes_per_address);
2777 set_gdbarch_long_bit (gdbarch, tdep->bytes_per_address * TARGET_CHAR_BIT);
2778 set_gdbarch_ptr_bit (gdbarch, tdep->bytes_per_address * TARGET_CHAR_BIT);
2780 /* The following gdbarch vector elements are the same in both ILP32
2781 and LP64, but might show differences some day. */
2782 set_gdbarch_long_long_bit (gdbarch, 64);
2783 set_gdbarch_long_double_bit (gdbarch, 128);
2784 set_gdbarch_long_double_format (gdbarch, &floatformat_ia64_quad_big);
2786 /* The following gdbarch vector elements do not depend on the address
2787 size, or in any other gdbarch element previously set. */
2788 set_gdbarch_skip_prologue (gdbarch, hppa_skip_prologue);
2789 set_gdbarch_in_function_epilogue_p (gdbarch,
2790 hppa_in_function_epilogue_p);
2791 set_gdbarch_inner_than (gdbarch, core_addr_greaterthan);
2792 set_gdbarch_sp_regnum (gdbarch, HPPA_SP_REGNUM);
2793 set_gdbarch_fp0_regnum (gdbarch, HPPA_FP0_REGNUM);
2794 set_gdbarch_addr_bits_remove (gdbarch, hppa_smash_text_address);
2795 set_gdbarch_smash_text_address (gdbarch, hppa_smash_text_address);
2796 set_gdbarch_believe_pcc_promotion (gdbarch, 1);
2797 set_gdbarch_read_pc (gdbarch, hppa_read_pc);
2798 set_gdbarch_write_pc (gdbarch, hppa_write_pc);
2800 /* Helper for function argument information. */
2801 set_gdbarch_fetch_pointer_argument (gdbarch, hppa_fetch_pointer_argument);
2803 set_gdbarch_print_insn (gdbarch, print_insn_hppa);
2805 /* When a hardware watchpoint triggers, we'll move the inferior past
2806 it by removing all eventpoints; stepping past the instruction
2807 that caused the trigger; reinserting eventpoints; and checking
2808 whether any watched location changed. */
2809 set_gdbarch_have_nonsteppable_watchpoint (gdbarch, 1);
2811 /* Inferior function call methods. */
2812 switch (tdep->bytes_per_address)
2815 set_gdbarch_push_dummy_call (gdbarch, hppa32_push_dummy_call);
2816 set_gdbarch_frame_align (gdbarch, hppa32_frame_align);
2817 set_gdbarch_convert_from_func_ptr_addr
2818 (gdbarch, hppa32_convert_from_func_ptr_addr);
2821 set_gdbarch_push_dummy_call (gdbarch, hppa64_push_dummy_call);
2822 set_gdbarch_frame_align (gdbarch, hppa64_frame_align);
2825 internal_error (__FILE__, __LINE__, _("bad switch"));
2828 /* Struct return methods. */
2829 switch (tdep->bytes_per_address)
2832 set_gdbarch_return_value (gdbarch, hppa32_return_value);
2835 set_gdbarch_return_value (gdbarch, hppa64_return_value);
2838 internal_error (__FILE__, __LINE__, _("bad switch"));
2841 set_gdbarch_breakpoint_from_pc (gdbarch, hppa_breakpoint_from_pc);
2842 set_gdbarch_pseudo_register_read (gdbarch, hppa_pseudo_register_read);
2844 /* Frame unwind methods. */
2845 set_gdbarch_unwind_dummy_id (gdbarch, hppa_unwind_dummy_id);
2846 set_gdbarch_unwind_pc (gdbarch, hppa_unwind_pc);
2848 /* Hook in ABI-specific overrides, if they have been registered. */
2849 gdbarch_init_osabi (info, gdbarch);
2851 /* Hook in the default unwinders. */
2852 frame_unwind_append_sniffer (gdbarch, hppa_stub_unwind_sniffer);
2853 frame_unwind_append_sniffer (gdbarch, hppa_frame_unwind_sniffer);
2854 frame_unwind_append_sniffer (gdbarch, hppa_fallback_unwind_sniffer);
2860 hppa_dump_tdep (struct gdbarch *current_gdbarch, struct ui_file *file)
2862 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
2864 fprintf_unfiltered (file, "bytes_per_address = %d\n",
2865 tdep->bytes_per_address);
2866 fprintf_unfiltered (file, "elf = %s\n", tdep->is_elf ? "yes" : "no");
2870 _initialize_hppa_tdep (void)
2872 struct cmd_list_element *c;
2874 gdbarch_register (bfd_arch_hppa, hppa_gdbarch_init, hppa_dump_tdep);
2876 hppa_objfile_priv_data = register_objfile_data ();
2878 add_cmd ("unwind", class_maintenance, unwind_command,
2879 _("Print unwind table entry at given address."),
2880 &maintenanceprintlist);
2882 /* Debug this files internals. */
2883 add_setshow_boolean_cmd ("hppa", class_maintenance, &hppa_debug, _("\
2884 Set whether hppa target specific debugging information should be displayed."),
2886 Show whether hppa target specific debugging information is displayed."), _("\
2887 This flag controls whether hppa target specific debugging information is\n\
2888 displayed. This information is particularly useful for debugging frame\n\
2889 unwinding problems."),
2891 NULL, /* FIXME: i18n: hppa debug flag is %s. */
2892 &setdebuglist, &showdebuglist);