57 #include "elf/common.h" 80 #define XML_SYSCALL_FILENAME_S390 "syscalls/s390-linux.xml" 81 #define XML_SYSCALL_FILENAME_S390X "syscalls/s390x-linux.xml" 194 pswa = addr | 0x80000000UL;
200 pswm = 0x0705000180000000ULL;
228 -1, -1, -1, -1, -1, -1, -1, -1,
229 -1, -1, -1, -1, -1, -1, -1, -1,
350 static const char *full_name[] = {
351 "r0",
"r1",
"r2",
"r3",
"r4",
"r5",
"r6",
"r7",
352 "r8",
"r9",
"r10",
"r11",
"r12",
"r13",
"r14",
"r15" 359 static const char *full_name[] = {
360 "v0",
"v1",
"v2",
"v3",
"v4",
"v5",
"v6",
"v7",
361 "v8",
"v9",
"v10",
"v11",
"v12",
"v13",
"v14",
"v15" 420 val = (val >> 12) & 3;
422 val = (val >> 44) & 3;
441 val |= val_upper << 32;
478 val = (psw & 0x80000000) | (val & 0x7fffffff);
489 val = (psw & ~((
ULONGEST)3 << 12)) | ((val & 3) << 12);
491 val = (psw & ~((
ULONGEST)3 << 44)) | ((val & 3) << 44);
522 static struct value *
685 if ((insn & 0xff) == 0x8e)
730 static std::vector<CORE_ADDR>
755 if (insn != (uint16_t) -(len / 2))
863 int regnum,
const void *regs,
size_t len)
870 if (ret !=
REG_VALID || (tdw >> 56) != 1)
952 cb (
".reg", gregset_size, &
s390_gregset, NULL, cb_data);
957 "s390 GPR upper halves", cb_data);
960 cb (
".reg-s390-last-break", 8,
963 "s390 last-break address", cb_data);
967 "s390 system-call", cb_data);
977 "s390 TDB", cb_data);
982 "s390 vector registers 0-15 lower half", cb_data);
984 "s390 vector registers 16-31", cb_data);
995 "s390 guarded-storage registers", cb_data);
1001 "s390 guarded-storage broadcast control", cb_data);
1009 asection *section = bfd_get_section_by_name (abfd,
".reg");
1011 bool high_gprs, v1, v2, te, vx, gs;
1017 high_gprs = (bfd_get_section_by_name (abfd,
".reg-s390-high-gprs")
1019 v1 = (bfd_get_section_by_name (abfd,
".reg-s390-last-break") != NULL);
1020 v2 = (bfd_get_section_by_name (abfd,
".reg-s390-system-call") != NULL);
1025 switch (bfd_section_size (abfd, section))
1129 #define S390_MAX_INSTR_SIZE 6 1133 static int s390_instrlen[] = { 2, 4, 4, 6 };
1138 instrlen = s390_instrlen[instr[0] >> 6];
1162 is_ri (bfd_byte *insn,
int op1,
int op2,
unsigned int *r1,
int *i2)
1164 if (insn[0] == op1 && (insn[1] & 0xf) == op2)
1166 *r1 = (insn[1] >> 4) & 0xf;
1168 *i2 = (((insn[2] << 8) | insn[3]) ^ 0x8000) - 0x8000;
1178 unsigned int *r1,
int *i2)
1180 if (insn[0] == op1 && (insn[1] & 0xf) == op2)
1182 *r1 = (insn[1] >> 4) & 0xf;
1186 *i2 = (((insn[2] << 24)
1189 | (insn[5])) ^ 0x80000000) - 0x80000000;
1198 is_rr (bfd_byte *insn,
int op,
unsigned int *r1,
unsigned int *r2)
1202 *r1 = (insn[1] >> 4) & 0xf;
1203 *r2 = insn[1] & 0xf;
1212 is_rre (bfd_byte *insn,
int op,
unsigned int *r1,
unsigned int *r2)
1214 if (((insn[0] << 8) | insn[1]) == op)
1217 *r1 = (insn[3] >> 4) & 0xf;
1218 *r2 = insn[3] & 0xf;
1228 unsigned int *r1,
unsigned int *r3,
int *d2,
unsigned int *b2)
1232 *r1 = (insn[1] >> 4) & 0xf;
1233 *r3 = insn[1] & 0xf;
1234 *b2 = (insn[2] >> 4) & 0xf;
1235 *d2 = ((insn[2] & 0xf) << 8) | insn[3];
1245 unsigned int *r1,
unsigned int *r3,
int *d2,
unsigned int *b2)
1250 *r1 = (insn[1] >> 4) & 0xf;
1251 *r3 = insn[1] & 0xf;
1252 *b2 = (insn[2] >> 4) & 0xf;
1254 *d2 = ((((insn[2] & 0xf) << 8) | insn[3] | (insn[4] << 12))
1255 ^ 0x80000) - 0x80000;
1265 unsigned int *r1,
int *d2,
unsigned int *x2,
unsigned int *b2)
1269 *r1 = (insn[1] >> 4) & 0xf;
1270 *x2 = insn[1] & 0xf;
1271 *b2 = (insn[2] >> 4) & 0xf;
1272 *d2 = ((insn[2] & 0xf) << 8) | insn[3];
1282 unsigned int *r1,
int *d2,
unsigned int *x2,
unsigned int *b2)
1287 *r1 = (insn[1] >> 4) & 0xf;
1288 *x2 = insn[1] & 0xf;
1289 *b2 = (insn[2] >> 4) & 0xf;
1291 *d2 = ((((insn[2] & 0xf) << 8) | insn[3] | (insn[4] << 12))
1292 ^ 0x80000) - 0x80000;
1302 #define S390_NUM_GPRS 16 1303 #define S390_NUM_FPRS 16 1343 int d2,
unsigned int x2,
unsigned int b2)
1349 result =
pv_add (result, data->
gpr[x2]);
1351 result =
pv_add (result, data->
gpr[b2]);
1520 for (pc = start_pc; pc > 0 && pc < current_pc; pc = next_pc)
1526 bfd_byte *insn32 = word_size == 4 ? insn :
dummy;
1527 bfd_byte *insn64 = word_size == 8 ? insn :
dummy;
1530 unsigned int b2, r1, r2, x2, r3;
1535 pv_t pre_insn_sp, pre_insn_fp;
1537 int pre_insn_back_chain_saved_p;
1546 next_pc = pc + insn_len;
1565 data->
gpr[r1] = data->
gpr[r2];
1570 else if (
is_rx (insn32,
op_l, &r1, &d2, &x2, &b2)
1578 else if (
is_rx (insn32,
op_st, &r1, &d2, &x2, &b2)
1584 else if (
is_rx (insn,
op_std, &r1, &d2, &x2, &b2))
1591 else if (
is_rs (insn32,
op_stm, &r1, &r3, &d2, &b2)
1595 for (; r1 <= r3; r1++, d2 += data->
gpr_size)
1625 else if (
is_rx (insn32,
op_a, &r1, &d2, &x2, &b2)
1647 else if (
is_rx (insn32,
op_s, &r1, &d2, &x2, &b2)
1655 else if (
is_rx (insn,
op_la, &r1, &d2, &x2, &b2)
1673 next_pc = pc + i2 * 2;
1686 if (r1 != 0 && i2 != 1 && i2 != 2)
1691 if (r1 != 0 && i2 != 3)
1751 if (post_prologue_pc != 0)
1752 return std::max (pc, post_prologue_pc);
1756 return skip_pc ? skip_pc : pc;
1785 unsigned int r1, r3, b2;
1839 else if (op1 == 0xc6)
1874 std::unique_ptr<s390_displaced_step_closure> closure
1876 gdb_byte *buf = closure->buf.data ();
1893 if (offset < INT32_MIN || offset >
INT32_MAX)
1900 "displaced: can't displaced step " 1901 "RIL instruction: offset %s out of range\n",
1920 return closure.release ();
1935 static int s390_instrlen[] = { 2, 4, 4, 6 };
1936 int insnlen = s390_instrlen[insn[0] >> 6];
1939 unsigned int b2, r1, r2, x2, r3;
1949 amode &= 0x80000000;
1954 "displaced: (s390) fixup (%s, %s) pc %s len %d amode 0x%x\n",
1964 amode | (from + insnlen));
1980 if (pc == to + insnlen)
1992 amode | (from + insnlen));
2002 amode | (from + i2 * 2));
2006 else if (insn[0] == 0x0 && insn[1] == 0x1)
2017 "displaced: (s390) pc is now %s\n",
2024 static struct value *
2080 static struct value *
2210 && (next_frame == NULL
2217 memset (&data, 0,
sizeof (data));
2228 cfa = prev_sp + 16*word_size + 32;
2243 for (i = 0; i < 16; i++)
2248 for (i = 0; i < 16; i++)
2281 info->
frame_base = prev_sp + 16*word_size + 32;
2335 info->
frame_base = backchain + 16*word_size + 32;
2344 void **this_prologue_cache)
2348 if (*this_prologue_cache)
2352 *this_prologue_cache = info;
2377 void **this_prologue_cache,
2385 if (info->
func != -1)
2393 static struct value *
2395 void **this_prologue_cache,
int regnum)
2425 void **this_prologue_cache)
2432 if (*this_prologue_cache)
2436 *this_prologue_cache = info;
2451 void **this_prologue_cache,
2459 static struct value *
2461 void **this_prologue_cache,
int regnum)
2471 void **this_prologue_cache)
2505 void **this_prologue_cache)
2513 CORE_ADDR next_ra, next_cfa, sigreg_ptr, sigreg_high_off;
2516 if (*this_prologue_cache)
2520 *this_prologue_cache = info;
2525 next_cfa = this_sp + 16*word_size + 32;
2531 if (next_ra == next_cfa)
2533 sigreg_ptr = next_cfa + 8 + 128 +
align_up (5*word_size, 8);
2536 sigreg_high_off = 8;
2545 word_size, byte_order);
2548 sigreg_high_off = 4;
2562 sigreg_ptr += word_size;
2564 sigreg_ptr += word_size;
2567 for (i = 0; i < 16; i++)
2570 sigreg_ptr += word_size;
2574 for (i = 0; i < 16; i++)
2585 for (i = 0; i < 16; i++)
2592 sigreg_ptr += sigreg_high_off;
2594 for (i = 0; i < 16; i++)
2603 word_size, byte_order);
2606 info->
frame_base = prev_sp + 16*word_size + 32;
2613 void **this_prologue_cache,
2621 static struct value *
2623 void **this_prologue_cache,
int regnum)
2633 void **this_prologue_cache)
2636 bfd_byte sigreturn[2];
2641 if (sigreturn[0] !=
op_svc)
2644 if (sigreturn[1] != 119
2645 && sigreturn[1] != 173 )
2684 if (svc_number == 0)
2704 for (i = 0; i < 16; i++)
2909 if (syscall_native == 0)
2914 if (syscall_gdb < 0)
2917 "support syscall number %s\n"),
2949 enum gdb_signal signal)
2955 160 + 8 + 128 + 1024 : 96 + 8 + 128 + 1000);
2959 for (i = 0; i < 16; i++)
2975 sp -= sizeof_rt_sigframe;
3031 static struct value *
3083 static struct type *
3137 return n && ((n & (n - 1)) == 0);
3189 enum bfd_endian byte_order,
int is_unnamed)
3193 int write_mode = as->
regcache != NULL;
3224 static const char use_vr[] = {24, 26, 28, 30, 25, 27, 29, 31};
3226 if (!is_unnamed && as->
vr < ARRAY_SIZE (use_vr))
3273 as->
argp += word_size;
3323 byte_order, as->
copy);
3324 as->
argp += word_size;
3369 arg_state = arg_prep;
3373 for (i = 0; i < nargs; i++)
3381 new_sp = param_area_start - (16 * word_size + 32);
3388 error (
_(
"Stack overflow"));
3395 arg_state = arg_prep;
3396 arg_state.
argp = param_area_start;
3400 for (i = 0; i < nargs; i++)
3409 bp_addr = (bp_addr & 0x7fffffff) | (pswa & 0x80000000);
3418 return param_area_start;
3478 else if (length <= word_size)
3483 word_size - length, length, out);
3493 else if (length == 2 * word_size)
3544 if (in != NULL || out != NULL)
3548 else if (in != NULL)
3549 error (
_(
"Cannot set function return value."));
3551 error (
_(
"Function return value unknown."));
3568 return addr & 0x7fffffff;
3592 int *type_flags_ptr)
3594 if (strcmp (
name,
"mode32") == 0)
3629 return ((isdigit (*s) && s[1] ==
'(' && s[2] ==
'%')
3649 am = pswa >> 31 & 1;
3654 am = pswm >> 31 & 3;
3659 return val & 0xffffff;
3661 return val & 0x7fffffff;
3676 ULONGEST x, uint16_t bd, int8_t dh)
3678 uint8_t rb = bd >> 12 & 0xf;
3679 int32_t d = (bd & 0xfff) | ((int32_t)dh << 12);
3695 uint8_t rx, uint16_t bd, int8_t dh)
3707 uint8_t vx, uint8_t el, uint8_t es, uint16_t bd,
3729 CORE_ADDR addr, uint16_t i1, uint16_t i2)
3731 int32_t ri = i1 << 16 | i2;
3805 uint16_t insn[3] = {0};
3826 insn[0] |= ex & 0xff;
3828 if (insn[0] >= 0x4000)
3833 if (insn[0] >= 0xc000)
3838 for (i = 0; i < 3; i++)
3840 ibyte[i*2] = insn[i] >> 8 & 0xff;
3841 ibyte[i*2+1] = insn[i] & 0xff;
3843 for (i = 0; i < 6; i++)
3845 inib[i*2] = ibyte[i] >> 4 & 0xf;
3846 inib[i*2+1] = ibyte[i] & 0xf;
3849 ivec[0] = (inib[9] >> 3 & 1) << 4 | inib[2];
3850 ivec[1] = (inib[9] >> 2 & 1) << 4 | inib[3];
3851 ivec[2] = (inib[9] >> 1 & 1) << 4 | inib[4];
3852 ivec[3] = (inib[9] >> 0 & 1) << 4 | inib[8];
3873 if (!(tmp & 0x80000000u))
3875 uint8_t ofc = tmp >> 16 & 0xff;
4246 if (inib[2] <= inib[3])
4247 n = inib[3] - inib[2] + 1;
4249 n = inib[3] + 0x10 - inib[2] + 1;
4272 for (i = inib[2]; i != inib[3]; i++, i &= 0xf)
4282 for (i = inib[2]; i != inib[3]; i++, i &= 0xf)
4295 switch (ibyte[0] << 4 | inib[3])
4529 }
while (cur != end);
5204 if (insn[0] == 0xb92f)
5230 if (tmp != 0 && insn[0] == 0xb929)
5506 if (insn[0] == 0xb93e)
5569 if (insn[0] == 0xb991)
5571 if (insn[0] == 0xb992)
5692 switch (ibyte[0] << 4 | inib[3])
5861 switch (ibyte[0] << 4 | inib[3])
5879 sc = tmp >> 8 & 0xff;
6037 switch (ibyte[0] << 8 | ibyte[5])
6559 for (i = ivec[0]; i != ivec[1]; i++, i &= 0x1f)
6573 if (ivec[0] <= ivec[1])
6574 n = ivec[1] - ivec[0] + 1;
6576 n = ivec[1] + 0x20 - ivec[0] + 1;
6707 for (i = inib[2]; i != inib[3]; i++, i &= 0xf)
6747 if (inib[2] <= inib[3])
6748 n = inib[3] - inib[2] + 1;
6750 n = inib[3] + 0x10 - inib[2] + 1;
6761 if (inib[2] <= inib[3])
6762 n = inib[3] - inib[2] + 1;
6764 n = inib[3] + 0x10 - inib[2] + 1;
6913 for (i = inib[2]; i != inib[3]; i++, i &= 0xf)
6923 for (i = inib[2]; i != inib[3]; i++, i &= 0xf)
6933 for (i = inib[2]; i != inib[3]; i++, i &= 0xf)
7163 for (i = 0; i < 16; i++)
7181 switch (ibyte[0] << 8 | ibyte[5])
7290 uint8_t fc = tmp & 0xff;
7519 for (i = inib[2]; i != inib[3]; i++, i &= 0xf)
7825 int first_pseudo_reg, last_pseudo_reg;
7826 static const char *
const stap_register_prefixes[] = {
"%", NULL };
7827 static const char *
const stap_register_indirection_prefixes[] = {
"(",
7829 static const char *
const stap_register_indirection_suffixes[] = {
")",
7835 case bfd_mach_s390_31:
7839 case bfd_mach_s390_64:
7859 static const char *
const gprs[] = {
7860 "r0",
"r1",
"r2",
"r3",
"r4",
"r5",
"r6",
"r7",
7861 "r8",
"r9",
"r10",
"r11",
"r12",
"r13",
"r14",
"r15" 7863 static const char *
const fprs[] = {
7864 "f0",
"f1",
"f2",
"f3",
"f4",
"f5",
"f6",
"f7",
7865 "f8",
"f9",
"f10",
"f11",
"f12",
"f13",
"f14",
"f15" 7867 static const char *
const acrs[] = {
7868 "acr0",
"acr1",
"acr2",
"acr3",
"acr4",
"acr5",
"acr6",
"acr7",
7869 "acr8",
"acr9",
"acr10",
"acr11",
"acr12",
"acr13",
"acr14",
"acr15" 7871 static const char *
const gprs_lower[] = {
7872 "r0l",
"r1l",
"r2l",
"r3l",
"r4l",
"r5l",
"r6l",
"r7l",
7873 "r8l",
"r9l",
"r10l",
"r11l",
"r12l",
"r13l",
"r14l",
"r15l" 7875 static const char *
const gprs_upper[] = {
7876 "r0h",
"r1h",
"r2h",
"r3h",
"r4h",
"r5h",
"r6h",
"r7h",
7877 "r8h",
"r9h",
"r10h",
"r11h",
"r12h",
"r13h",
"r14h",
"r15h" 7879 static const char *
const tdb_regs[] = {
7880 "tdb0",
"tac",
"tct",
"atia",
7881 "tr0",
"tr1",
"tr2",
"tr3",
"tr4",
"tr5",
"tr6",
"tr7",
7882 "tr8",
"tr9",
"tr10",
"tr11",
"tr12",
"tr13",
"tr14",
"tr15" 7884 static const char *
const vxrs_low[] = {
7885 "v0l",
"v1l",
"v2l",
"v3l",
"v4l",
"v5l",
"v6l",
"v7l",
"v8l",
7886 "v9l",
"v10l",
"v11l",
"v12l",
"v13l",
"v14l",
"v15l",
7888 static const char *
const vxrs_high[] = {
7889 "v16",
"v17",
"v18",
"v19",
"v20",
"v21",
"v22",
"v23",
"v24",
7890 "v25",
"v26",
"v27",
"v28",
"v29",
"v30",
"v31",
7892 static const char *
const gs_cb[] = {
7893 "gsd",
"gssm",
"gsepla",
7895 static const char *
const gs_bc[] = {
7896 "bc_gsd",
"bc_gssm",
"bc_gsepla",
7902 if (feature == NULL)
7914 for (i = 0; i < 16; i++)
7922 for (i = 0; i < 16; i++)
7926 for (i = 0; i < 16; i++)
7933 if (feature == NULL)
7941 for (i = 0; i < 16; i++)
7946 if (feature == NULL)
7952 for (i = 0; i < 16; i++)
7971 if (have_linux_v2 > have_linux_v1)
7979 for (i = 0; i < ARRAY_SIZE (tdb_regs); i++)
7990 for (i = 0; i < 16; i++)
7994 for (i = 0; i < 16; i++)
8005 for (i = 0; i < 3; i++)
8018 for (i = 0; i < 3; i++)
8035 && info.
abfd != NULL
8036 && info.
abfd->format == bfd_object
8037 && bfd_get_flavour (info.
abfd) == bfd_target_elf_flavour
8038 && bfd_elf_get_obj_attr_int (info.
abfd, OBJ_ATTR_GNU,
8039 Tag_GNU_S390_ABI_Vector) == 2)
8051 if (tdep->
abi != tdep_abi)
8066 tdep->
abi = tdep_abi;
8124 last_pseudo_reg = first_pseudo_reg;
8129 last_pseudo_reg += 16;
8135 last_pseudo_reg += 16;
8209 stap_register_indirection_prefixes);
8211 stap_register_indirection_suffixes);
8226 disassembler_options_s390 ());
void set_gdbarch_num_regs(struct gdbarch *gdbarch, int num_regs)
#define S390_V15_LOWER_REGNUM
static int s390_process_record(struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr)
void set_gdbarch_frame_align(struct gdbarch *gdbarch, gdbarch_frame_align_ftype frame_align)
bool store_would_trash(pv_t addr)
static void s390_dwarf2_frame_init_reg(struct gdbarch *gdbarch, int regnum, struct dwarf2_frame_state_reg *reg, struct frame_info *this_frame)
static void s390_supply_tdb_regset(const struct regset *regset, struct regcache *regcache, int regnum, const void *regs, size_t len)
void set_gdbarch_address_class_type_flags_to_name(struct gdbarch *gdbarch, gdbarch_address_class_type_flags_to_name_ftype address_class_type_flags_to_name)
static int is_power_of_two(unsigned int n)
static const struct regcache_map_entry s390_regmap_vxrs_high[]
void set_gdbarch_gcc_target_options(struct gdbarch *gdbarch, gdbarch_gcc_target_options_ftype gcc_target_options)
static int s390_record_gpr_g(struct gdbarch *gdbarch, struct regcache *regcache, int i)
int size_serial_icounter_struct
static CORE_ADDR s390_record_calc_rl(struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr, uint16_t i1, uint16_t i2)
struct target_desc * tdesc_s390_vx_linux64
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
CORE_ADDR get_frame_address_in_block(struct frame_info *this_frame)
struct type * builtin_func_ptr
void set_tdesc_pseudo_register_name(struct gdbarch *gdbarch, gdbarch_register_name_ftype *pseudo_name)
static int s390_function_arg_float(struct type *type)
void set_gdbarch_displaced_step_fixup(struct gdbarch *gdbarch, gdbarch_displaced_step_fixup_ftype displaced_step_fixup)
struct target_desc * tdesc_s390x_gs_linux64
#define S390_SYSTEM_CALL_REGNUM
CORE_ADDR get_frame_pc(struct frame_info *frame)
struct target_desc * tdesc_s390_te_linux64
void set_gdbarch_fp0_regnum(struct gdbarch *gdbarch, int fp0_regnum)
struct target_desc * tdesc_s390_linux32v1
void set_gdbarch_fetch_tls_load_module_address(struct gdbarch *gdbarch, gdbarch_fetch_tls_load_module_address_ftype fetch_tls_load_module_address)
void displaced_step_dump_bytes(struct ui_file *file, const gdb_byte *buf, size_t len)
struct link_map_offsets * svr4_lp64_fetch_link_map_offsets(void)
static void initialize_tdesc_s390_linux64v2(void)
pv_t pv_add_constant(pv_t v, CORE_ADDR k)
struct regcache * get_thread_regcache(ptid_t ptid)
void ax_reg_mask(struct agent_expr *ax, int reg)
struct value * trad_frame_get_prev_register(struct frame_info *this_frame, struct trad_frame_saved_reg this_saved_regs[], int regnum)
static int s390_address_class_type_flags(int byte_size, int dwarf2_addr_class)
int trad_frame_addr_p(struct trad_frame_saved_reg this_saved_regs[], int regnum)
static int s390_stub_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
static const struct regcache_map_entry s390_regmap_upper[]
int record_full_arch_list_add_reg(struct regcache *regcache, int regnum)
LONGEST value_as_long(struct value *val)
void dwarf2_frame_set_adjust_regnum(struct gdbarch *gdbarch, int(*adjust_regnum)(struct gdbarch *, int, int))
void write_memory_unsigned_integer(CORE_ADDR addr, int len, enum bfd_endian byte_order, ULONGEST value)
static int is_rsy(bfd_byte *insn, int op1, int op2, unsigned int *r1, unsigned int *r3, int *d2, unsigned int *b2)
void set_tdesc_pseudo_register_type(struct gdbarch *gdbarch, gdbarch_register_type_ftype *pseudo_type)
void() iterate_over_regset_sections_cb(const char *sect_name, int size, const struct regset *regset, const char *human_name, void *cb_data)
void set_gdbarch_skip_trampoline_code(struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype skip_trampoline_code)
struct target_desc * tdesc_s390x_tevx_linux64
void set_gdbarch_gen_return_address(struct gdbarch *gdbarch, gdbarch_gen_return_address_ftype gen_return_address)
void set_gdbarch_stab_reg_to_regnum(struct gdbarch *gdbarch, gdbarch_stab_reg_to_regnum_ftype stab_reg_to_regnum)
void set_gdbarch_write_pc(struct gdbarch *gdbarch, gdbarch_write_pc_ftype write_pc)
static int s390_pseudo_register_reggroup_p(struct gdbarch *gdbarch, int regnum, struct reggroup *group)
void set_gdbarch_addr_bits_remove(struct gdbarch *gdbarch, gdbarch_addr_bits_remove_ftype addr_bits_remove)
void set_gdbarch_displaced_step_location(struct gdbarch *gdbarch, gdbarch_displaced_step_location_ftype displaced_step_location)
static void initialize_tdesc_s390x_linux64(void)
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
static void s390_store(struct s390_prologue_data *data, int d2, unsigned int x2, unsigned int b2, CORE_ADDR size, pv_t value)
constexpr gdb_byte s390_break_insn[]
char * plongest(LONGEST l)
ULONGEST align_down(ULONGEST v, int n)
void set_gdbarch_stap_register_prefixes(struct gdbarch *gdbarch, const char *const *stap_register_prefixes)
int ioctl_TIOCSERGETMULTI
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
void regcache_cooked_write_signed(struct regcache *regcache, int regnum, LONGEST val)
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
static CORE_ADDR s390_analyze_prologue(struct gdbarch *gdbarch, CORE_ADDR start_pc, CORE_ADDR current_pc, struct s390_prologue_data *data)
void set_gdbarch_process_record_signal(struct gdbarch *gdbarch, gdbarch_process_record_signal_ftype process_record_signal)
struct frame_id frame_id_build_unavailable_stack(CORE_ADDR code_addr)
static int s390_register_call_saved(struct gdbarch *gdbarch, int regnum)
int pv_is_register(pv_t a, int r)
void * memset(T *s, int c, size_t n)=delete
void internal_error(const char *file, int line, const char *fmt,...)
void set_gdbarch_ax_pseudo_register_collect(struct gdbarch *gdbarch, gdbarch_ax_pseudo_register_collect_ftype ax_pseudo_register_collect)
static const struct regcache_map_entry s390x_regmap_last_break[]
const char * tdesc_register_name(struct gdbarch *gdbarch, int regno)
static int s390_function_arg_vector(struct type *type)
static enum gdb_syscall s390_canonicalize_syscall(int syscall, enum s390_abi_kind abi)
void regcache_supply_regset(const struct regset *regset, struct regcache *regcache, int regnum, const void *buf, size_t size)
static struct displaced_step_closure * s390_displaced_step_copy_insn(struct gdbarch *gdbarch, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
static void s390_write_pc(struct regcache *regcache, CORE_ADDR pc)
static char * s390_disassembler_options
static void initialize_tdesc_s390_linux32v2(void)
void linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
static int s390_dwarf_reg_to_regnum(struct gdbarch *gdbarch, int reg)
typedef BP_MANIPULATION(s390_break_insn)
int safe_read_memory_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order, LONGEST *return_value)
#define S390_BC_GSSM_REGNUM
static CORE_ADDR s390_frame_base_address(struct frame_info *this_frame, void **this_cache)
static const char * s390_register_name(struct gdbarch *gdbarch, int regnum)
enum prologue_value_kind kind
void regcache_cooked_write_part(struct regcache *regcache, int regnum, int offset, int len, const gdb_byte *buf)
static void initialize_tdesc_s390x_tevx_linux64(void)
struct link_map_offsets * svr4_ilp32_fetch_link_map_offsets(void)
const struct regset s390_gregset
const struct floatformat * floatformats_ia64_quad[BFD_ENDIAN_UNKNOWN]
struct gdbarch_list * gdbarch_list_lookup_by_info(struct gdbarch_list *arches, const struct gdbarch_info *info)
CORE_ADDR skip_prologue_using_sal(struct gdbarch *gdbarch, CORE_ADDR func_addr)
struct target_desc * tdesc_s390_linux64v2
struct target_desc * tdesc_s390_linux32v2
struct gdbarch_list * next
struct reggroup *const restore_reggroup
static const struct regcache_map_entry s390_regmap_system_call[]
static LONGEST s390_linux_get_syscall_number(struct gdbarch *gdbarch, ptid_t ptid)
void ax_reg(struct agent_expr *x, int reg)
#define S390_FRAME_REGNUM
static void s390_guess_tracepoint_registers(struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr)
int gdbarch_num_regs(struct gdbarch *gdbarch)
static const short s390_dwarf_regmap[]
static void s390_stub_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
const struct regset s390_fpregset
#define S390_TDB_ATIA_REGNUM
static const struct regcache_map_entry s390_regmap_last_break[]
const struct bfd_arch_info * bfd_arch_info
static void s390_check_for_saved(void *data_untyped, pv_t addr, CORE_ADDR size, pv_t value)
static void initialize_tdesc_s390_gs_linux64(void)
#define XML_SYSCALL_FILENAME_S390X
static int s390_ax_pseudo_register_push_stack(struct gdbarch *gdbarch, struct agent_expr *ax, int regnum)
void set_gdbarch_dwarf2_reg_to_regnum(struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype dwarf2_reg_to_regnum)
struct target_desc * tdesc_s390_tevx_linux64
static int s390_function_arg_integer(struct type *type)
static struct linux_record_tdep s390_linux_record_tdep
struct gdbarch_tdep * gdbarch_tdep(struct gdbarch *gdbarch)
void regcache_write_pc(struct regcache *regcache, CORE_ADDR pc)
void set_gdbarch_gnu_triplet_regexp(struct gdbarch *gdbarch, gdbarch_gnu_triplet_regexp_ftype gnu_triplet_regexp)
int record_full_is_used(void)
void tdesc_data_cleanup(void *data_untyped)
void _initialize_s390_tdep(void)
#define TYPE_FIELD_TYPE(thistype, n)
void set_gdbarch_displaced_step_hw_singlestep(struct gdbarch *gdbarch, gdbarch_displaced_step_hw_singlestep_ftype displaced_step_hw_singlestep)
void frame_unwind_append_unwinder(struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
void set_gdbarch_process_record(struct gdbarch *gdbarch, gdbarch_process_record_ftype process_record)
pv_t pv_constant(CORE_ADDR k)
static void initialize_tdesc_s390x_gs_linux64(void)
static CORE_ADDR s390_skip_prologue(struct gdbarch *gdbarch, CORE_ADDR pc)
#define FRAME_OBSTACK_ZALLOC(TYPE)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
static void initialize_tdesc_s390_linux32v1(void)
void set_gdbarch_stap_register_indirection_suffixes(struct gdbarch *gdbarch, const char *const *stap_register_indirection_suffixes)
#define S390_TDB_DWORD0_REGNUM
enum powerpc_vector_abi vector_abi
static const char * s390_address_class_type_flags_to_name(struct gdbarch *gdbarch, int type_flags)
#define TYPE_IS_REFERENCE(t)
int fpr_slot[S390_NUM_FPRS]
struct regcache * regcache
static CORE_ADDR s390_local_base_address(struct frame_info *this_frame, void **this_cache)
#define S390_RETADDR_REGNUM
static CORE_ADDR s390_push_dummy_call(struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr)
CORE_ADDR svr4_fetch_objfile_link_map(struct objfile *objfile)
static void s390_backchain_frame_unwind_cache(struct frame_info *this_frame, struct s390_unwind_cache *info)
int pv_is_identical(pv_t a, pv_t b)
scoped_restore_tmpl< T > make_scoped_restore(T *var)
static struct type * s390_effective_inner_type(struct type *type, unsigned int min_size)
static struct s390_sigtramp_unwind_cache * s390_sigtramp_frame_unwind_cache(struct frame_info *this_frame, void **this_prologue_cache)
static int s390_ax_pseudo_register_collect(struct gdbarch *gdbarch, struct agent_expr *ax, int regnum)
int ioctl_TIOCSERSETMULTI
int tdesc_numbered_register(const struct tdesc_feature *feature, struct tdesc_arch_data *data, int regno, const char *name)
void frame_base_set_default(struct gdbarch *gdbarch, const struct frame_base *default_base)
static CORE_ADDR s390_unwind_pc(struct gdbarch *gdbarch, struct frame_info *next_frame)
#define S390_TDB_R0_REGNUM
static const struct frame_unwind s390_sigtramp_frame_unwind
enum frame_type get_frame_type(struct frame_info *frame)
void set_gdbarch_pseudo_register_write(struct gdbarch *gdbarch, gdbarch_pseudo_register_write_ftype pseudo_register_write)
static struct value * s390_dwarf2_prev_register(struct frame_info *this_frame, void **this_cache, int regnum)
#define s390x_sizeof_gregset
static int is_rre(bfd_byte *insn, int op, unsigned int *r1, unsigned int *r2)
#define s390_sizeof_gregset
const struct regset s390_vxrs_low_regset
struct type * check_typedef(struct type *type)
const struct frame_base * dwarf2_frame_base_sniffer(struct frame_info *this_frame)
LONGEST read_memory_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
static int s390_stack_frame_destroyed_p(struct gdbarch *gdbarch, CORE_ADDR pc)
static struct value * s390_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
ULONGEST gdbarch_max_insn_length(struct gdbarch *gdbarch)
const gdb_byte * value_contents(struct value *value)
#define CATCH(EXCEPTION, MASK)
struct reggroup *const general_reggroup
static int s390_is_partial_instruction(struct gdbarch *gdbarch, CORE_ADDR loc, int *len)
#define XML_SYSCALL_FILENAME_S390
static struct linux_record_tdep s390x_linux_record_tdep
static pv_t s390_addr(struct s390_prologue_data *data, int d2, unsigned int x2, unsigned int b2)
static int s390_popcnt(unsigned int x)
struct target_ops current_target
CORE_ADDR gdbarch_addr_bits_remove(struct gdbarch *gdbarch, CORE_ADDR addr)
static const struct regcache_map_entry s390_regmap_gs[]
static const struct frame_unwind s390_stub_frame_unwind
struct value::@186::@187 reg
int record_linux_system_call(enum gdb_syscall syscall, struct regcache *regcache, struct linux_record_tdep *tdep)
CORE_ADDR find_solib_trampoline_target(struct frame_info *frame, CORE_ADDR pc)
void set_gdbarch_stack_frame_destroyed_p(struct gdbarch *gdbarch, gdbarch_stack_frame_destroyed_p_ftype stack_frame_destroyed_p)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
enum register_status regcache_cooked_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
static const char * s390_pseudo_register_name(struct gdbarch *gdbarch, int regnum)
void set_gdbarch_sp_regnum(struct gdbarch *gdbarch, int sp_regnum)
void set_gdbarch_decr_pc_after_break(struct gdbarch *gdbarch, CORE_ADDR decr_pc_after_break)
const struct regset s390_last_break_regset
struct type * register_type(struct gdbarch *gdbarch, int regnum)
void set_gdbarch_dummy_id(struct gdbarch *gdbarch, gdbarch_dummy_id_ftype dummy_id)
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
static int s390_record_calc_disp_vsce(struct gdbarch *gdbarch, struct regcache *regcache, uint8_t vx, uint8_t el, uint8_t es, uint16_t bd, int8_t dh, CORE_ADDR *res)
int target_auxv_search(struct target_ops *ops, CORE_ADDR match, CORE_ADDR *valp)
void set_gdbarch_believe_pcc_promotion(struct gdbarch *gdbarch, int believe_pcc_promotion)
#define S390_TDB_ABORT_CODE_REGNUM
static char * s390_gcc_target_options(struct gdbarch *gdbarch)
static struct type * s390_pseudo_register_type(struct gdbarch *gdbarch, int regnum)
int gpr_slot[S390_NUM_GPRS]
struct trad_frame_saved_reg * saved_regs
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
int pv_is_register_k(pv_t a, int r, CORE_ADDR k)
static CORE_ADDR s390_record_calc_disp_common(struct gdbarch *gdbarch, struct regcache *regcache, ULONGEST x, uint16_t bd, int8_t dh)
#define S390_R0_UPPER_REGNUM
void set_gdbarch_cannot_store_register(struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype cannot_store_register)
void set_solib_svr4_fetch_link_map_offsets(struct gdbarch *gdbarch, struct link_map_offsets *(*flmo)(void))
void set_gdbarch_stap_register_indirection_prefixes(struct gdbarch *gdbarch, const char *const *stap_register_indirection_prefixes)
#define S390_LAST_BREAK_REGNUM
int find_pc_partial_function(CORE_ADDR pc, const char **name, CORE_ADDR *address, CORE_ADDR *endaddr)
void regcache_collect_regset(const struct regset *regset, const struct regcache *regcache, int regnum, void *buf, size_t size)
static void initialize_tdesc_s390_linux32(void)
static const struct target_desc * s390_core_read_description(struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd)
struct trad_frame_saved_reg * saved_regs
void set_gdbarch_value_from_register(struct gdbarch *gdbarch, gdbarch_value_from_register_ftype value_from_register)
static int s390_linux_record_signal(struct gdbarch *gdbarch, struct regcache *regcache, enum gdb_signal signal)
void set_gdbarch_unwind_pc(struct gdbarch *gdbarch, gdbarch_unwind_pc_ftype unwind_pc)
static void initialize_tdesc_s390_linux64v1(void)
int default_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
struct type * tdesc_find_type(struct gdbarch *gdbarch, const char *id)
static CORE_ADDR s390_frame_align(struct gdbarch *gdbarch, CORE_ADDR addr)
static int s390_stap_is_single_operand(struct gdbarch *gdbarch, const char *s)
void store(pv_t addr, CORE_ADDR size, pv_t value)
struct target_desc * tdesc_s390_linux64v1
struct value * value_from_longest(struct type *type, LONGEST num)
static int s390_cannot_store_register(struct gdbarch *gdbarch, int regnum)
static struct s390_stub_unwind_cache * s390_stub_frame_unwind_cache(struct frame_info *this_frame, void **this_prologue_cache)
#define S390_TDB_CONFLICT_TOKEN_REGNUM
void scan(void(*func)(void *closure, pv_t addr, CORE_ADDR size, pv_t value), void *closure)
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
void ax_simple(struct agent_expr *x, enum agent_op op)
static CORE_ADDR s390_unwind_sp(struct gdbarch *gdbarch, struct frame_info *next_frame)
static const struct frame_unwind s390_frame_unwind
struct value * value_cast(struct type *type, struct value *arg2)
static void s390_init_linux_record_tdep(struct linux_record_tdep *record_tdep, enum s390_abi_kind abi)
static int is_rr(bfd_byte *insn, int op, unsigned int *r1, unsigned int *r2)
int gdbarch_addr_bit(struct gdbarch *gdbarch)
void set_gdbarch_unwind_sp(struct gdbarch *gdbarch, gdbarch_unwind_sp_ftype unwind_sp)
struct target_desc * tdesc_s390x_vx_linux64
static void initialize_tdesc_s390x_linux64v2(void)
void set_value_offset(struct value *value, LONGEST offset)
const struct regset s390x_last_break_regset
static struct frame_id s390_dummy_id(struct gdbarch *gdbarch, struct frame_info *this_frame)
void set_gdbarch_ax_pseudo_register_push_stack(struct gdbarch *gdbarch, gdbarch_ax_pseudo_register_push_stack_ftype ax_pseudo_register_push_stack)
void set_xml_syscall_file_name(struct gdbarch *gdbarch, const char *name)
void printf_unfiltered(const char *format,...)
static void s390_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
const struct regset s390_system_call_regset
void read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
static void s390_register_return_value(struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, gdb_byte *out, const gdb_byte *in)
struct value * frame_unwind_register_value(struct frame_info *frame, int regnum)
static const struct regcache_map_entry s390_gregmap[]
struct bfd_section * the_bfd_section
struct reggroup *const vector_reggroup
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
CORE_ADDR linux_displaced_step_location(struct gdbarch *gdbarch)
struct target_desc * tdesc_s390_gs_linux64
static int is_rxy(bfd_byte *insn, int op1, int op2, unsigned int *r1, int *d2, unsigned int *x2, unsigned int *b2)
static struct gdbarch * s390_gdbarch_init(struct gdbarch_info info, struct gdbarch_list *arches)
void set_gdbarch_breakpoint_kind_from_pc(struct gdbarch *gdbarch, gdbarch_breakpoint_kind_from_pc_ftype breakpoint_kind_from_pc)
struct trad_frame_saved_reg * trad_frame_alloc_saved_regs(struct gdbarch *gdbarch)
void set_gdbarch_long_long_bit(struct gdbarch *gdbarch, int long_long_bit)
static const struct regcache_map_entry s390_regmap_gsbc[]
static void s390_handle_arg(struct s390_arg_state *as, struct value *arg, struct gdbarch_tdep *tdep, int word_size, enum bfd_endian byte_order, int is_unnamed)
const struct regset s390_vxrs_high_regset
static void initialize_tdesc_s390_linux64(void)
static int s390_sigtramp_frame_sniffer(const struct frame_unwind *self, struct frame_info *this_frame, void **this_prologue_cache)
int record_full_arch_list_add_mem(CORE_ADDR addr, int len)
static std::vector< CORE_ADDR > s390_software_single_step(struct regcache *regcache)
const struct target_desc * target_desc
static int s390_displaced_step_hw_singlestep(struct gdbarch *gdbarch, struct displaced_step_closure *closure)
static int s390_record_gpr_h(struct gdbarch *gdbarch, struct regcache *regcache, int i)
static struct value * s390_sigtramp_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
struct trad_frame_saved_reg * saved_regs
void set_gdbarch_software_single_step(struct gdbarch *gdbarch, gdbarch_software_single_step_ftype software_single_step)
#define S390_ORIG_R2_REGNUM
#define s390_sizeof_fpregset
static int s390_linux_syscall_record(struct regcache *regcache, LONGEST syscall_native)
void set_gdbarch_disassembler_options(struct gdbarch *gdbarch, char **disassembler_options)
static CORE_ADDR s390_record_calc_disp(struct gdbarch *gdbarch, struct regcache *regcache, uint8_t rx, uint16_t bd, int8_t dh)
static struct s390_unwind_cache * s390_frame_unwind_cache(struct frame_info *this_frame, void **this_prologue_cache)
static const char * s390_gnu_triplet_regexp(struct gdbarch *gdbarch)
void throw_exception(struct gdb_exception exception)
static void initialize_tdesc_s390_tevx_linux64(void)
static CORE_ADDR s390_record_address_mask(struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR val)
void tdesc_use_registers(struct gdbarch *gdbarch, const struct target_desc *target_desc, struct tdesc_arch_data *early_data)
int core_addr_lessthan(CORE_ADDR lhs, CORE_ADDR rhs)
struct frame_info * get_next_frame(struct frame_info *this_frame)
int get_frame_func_if_available(struct frame_info *this_frame, CORE_ADDR *pc)
static void initialize_tdesc_s390_vx_linux64(void)
struct value * value_from_pointer(struct type *type, CORE_ADDR addr)
static struct value * s390_unwind_pseudo_register(struct frame_info *this_frame, int regnum)
void set_gdbarch_displaced_step_copy_insn(struct gdbarch *gdbarch, gdbarch_displaced_step_copy_insn_ftype displaced_step_copy_insn)
void set_gdbarch_pseudo_register_read(struct gdbarch *gdbarch, gdbarch_pseudo_register_read_ftype pseudo_register_read)
ULONGEST align_up(ULONGEST v, int n)
void set_gdbarch_char_signed(struct gdbarch *gdbarch, int char_signed)
int value_optimized_out(struct value *value)
#define TYPE_TARGET_TYPE(thistype)
static int is_ril(bfd_byte *insn, int op1, int op2, unsigned int *r1, int *i2)
static void initialize_tdesc_s390_te_linux64(void)
void set_gdbarch_address_class_type_flags(struct gdbarch *gdbarch, gdbarch_address_class_type_flags_ftype address_class_type_flags)
struct target_desc * tdesc_s390x_linux64v2
enum register_status regcache_register_status(const struct regcache *regcache, int regnum)
static int is_non_branch_ril(gdb_byte *insn)
void set_gdbarch_address_class_name_to_type_flags(struct gdbarch *gdbarch, gdbarch_address_class_name_to_type_flags_ftype address_class_name_to_type_flags)
#define S390_GSEPLA_REGNUM
static int regnum_is_gpr_full(struct gdbarch_tdep *tdep, int regnum)
static int s390_address_class_name_to_type_flags(struct gdbarch *gdbarch, const char *name, int *type_flags_ptr)
#define TYPE_CODE(thistype)
enum register_status regcache_raw_read(struct regcache *regcache, int regnum, gdb_byte *buf)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
static int s390_readinstruction(bfd_byte instr[], CORE_ADDR at)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
static void initialize_tdesc_s390x_vx_linux64(void)
static int regnum_is_vxr_full(struct gdbarch_tdep *tdep, int regnum)
struct target_desc * tdesc_s390x_linux64v1
CORE_ADDR regcache_read_pc(struct regcache *regcache)
static int in_plt_section(CORE_ADDR pc)
const struct regset s390_tdb_regset
void set_gdbarch_stap_is_single_operand(struct gdbarch *gdbarch, gdbarch_stap_is_single_operand_ftype stap_is_single_operand)
#define S390_BC_GSD_REGNUM
static void initialize_tdesc_s390x_linux64v1(void)
static const struct regcache_map_entry s390_fpregmap[]
void set_gdbarch_get_syscall_number(struct gdbarch *gdbarch, gdbarch_get_syscall_number_ftype get_syscall_number)
static void s390_iterate_over_regset_sections(struct gdbarch *gdbarch, iterate_over_regset_sections_cb *cb, void *cb_data, const struct regcache *regcache)
void regcache_raw_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
#define TYPE_NFIELDS(thistype)
struct target_section * target_section_by_addr(struct target_ops *target, CORE_ADDR addr)
struct value * default_value_from_register(struct gdbarch *gdbarch, struct type *type, int regnum, struct frame_id frame_id)
void set_gdbarch_num_pseudo_regs(struct gdbarch *gdbarch, int num_pseudo_regs)
struct target_desc * tdesc_s390_linux32
void dwarf2_append_unwinders(struct gdbarch *gdbarch)
enum register_status regcache_cooked_read(struct regcache *regcache, int regnum, gdb_byte *buf)
static pv_t s390_load(struct s390_prologue_data *data, int d2, unsigned int x2, unsigned int b2, CORE_ADDR size)
static struct value * s390_value_from_register(struct gdbarch *gdbarch, struct type *type, int regnum, struct frame_id frame_id)
static LONGEST extract_signed_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
struct m32c_reg regs[M32C_MAX_NUM_REGS]
static void s390_displaced_step_fixup(struct gdbarch *gdbarch, struct displaced_step_closure *closure_, CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
static int is_rs(bfd_byte *insn, int op, unsigned int *r1, unsigned int *r3, int *d2, unsigned int *b2)
enum bfd_endian byte_order
static int is_ri(bfd_byte *insn, int op1, int op2, unsigned int *r1, int *i2)
const struct target_desc * tdesc
static void s390_gen_return_address(struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value, CORE_ADDR scope)
static int is_rx(bfd_byte *insn, int op, unsigned int *r1, int *d2, unsigned int *x2, unsigned int *b2)
struct target_desc * tdesc_s390x_linux64
void set_gdbarch_valid_disassembler_options(struct gdbarch *gdbarch, const disasm_options_t *valid_disassembler_options)
void ax_const_l(struct agent_expr *x, LONGEST l)
struct tdesc_arch_data * tdesc_data_alloc(void)
static int s390_record_vr(struct gdbarch *gdbarch, struct regcache *regcache, int i)
void regcache_raw_supply(struct regcache *regcache, int regnum, const void *buf)
void frame_base_append_sniffer(struct gdbarch *gdbarch, frame_base_sniffer_ftype *sniffer)
unsigned long long ULONGEST
enum unwind_stop_reason default_frame_unwind_stop_reason(struct frame_info *this_frame, void **this_cache)
void trad_frame_set_unknown(struct trad_frame_saved_reg this_saved_regs[], int regnum)
const struct tdesc_feature * tdesc_find_feature(const struct target_desc *target_desc, const char *name)
int register_size(struct gdbarch *gdbarch, int regnum)
void set_gdbarch_long_double_bit(struct gdbarch *gdbarch, int long_double_bit)
static int s390_all_but_pc_registers_record(struct regcache *regcache)
struct type * value_type(const struct value *value)
static const struct regset s390_upper_regset
void set_gdbarch_long_bit(struct gdbarch *gdbarch, int long_bit)
static struct value * s390_trad_frame_prev_register(struct frame_info *this_frame, struct trad_frame_saved_reg saved_regs[], int regnum)
enum register_status regcache_cooked_read_part(struct regcache *regcache, int regnum, int offset, int len, gdb_byte *buf)
void set_gdbarch_return_value(struct gdbarch *gdbarch, gdbarch_return_value_ftype return_value)
#define S390_V0_LOWER_REGNUM
void dwarf2_frame_set_init_reg(struct gdbarch *gdbarch, void(*init_reg)(struct gdbarch *, int, struct dwarf2_frame_state_reg *, struct frame_info *))
void set_tdesc_pseudo_register_reggroup_p(struct gdbarch *gdbarch, gdbarch_register_reggroup_p_ftype *pseudo_reggroup_p)
void set_gdbarch_long_double_format(struct gdbarch *gdbarch, const struct floatformat **long_double_format)
void ax_zero_ext(struct agent_expr *x, int n)
#define S390_MAX_INSTR_SIZE
int default_register_reggroup_p(struct gdbarch *gdbarch, int regnum, struct reggroup *group)
struct reggroup *const save_reggroup
#define TYPE_LENGTH(thistype)
void set_gdbarch_ptr_bit(struct gdbarch *gdbarch, int ptr_bit)
pv_t pv_subtract(pv_t a, pv_t b)
enum register_status regcache_raw_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
void set_gdbarch_push_dummy_call(struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype push_dummy_call)
const struct regset s390_gsbc_regset
CORE_ADDR get_pc_function_start(CORE_ADDR pc)
ULONGEST read_memory_unsigned_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
struct type * builtin_uint64
void set_gdbarch_sw_breakpoint_from_kind(struct gdbarch *gdbarch, gdbarch_sw_breakpoint_from_kind_ftype sw_breakpoint_from_kind)
struct value * allocate_optimized_out_value(struct type *type)
void set_gdbarch_iterate_over_regset_sections(struct gdbarch *gdbarch, gdbarch_iterate_over_regset_sections_ftype iterate_over_regset_sections)
pv_t fetch(pv_t addr, CORE_ADDR size)
struct target_desc * tdesc_s390x_te_linux64
void register_gdbarch_init(enum bfd_architecture bfd_architecture, gdbarch_init_ftype *init)
static int s390_adjust_frame_regnum(struct gdbarch *gdbarch, int num, int eh_frame_p)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
void set_gdbarch_skip_prologue(struct gdbarch *gdbarch, gdbarch_skip_prologue_ftype skip_prologue)
int size__old_kernel_stat
static struct gdbarch_data * tdesc_data
buf_displaced_step_closure s390_displaced_step_closure
static const struct regcache_map_entry s390_regmap_tdb[]
struct target_desc * tdesc_s390_linux64
static const struct frame_base s390_frame_base
#define s390_sizeof_tdbregset
static void s390_pseudo_register_write(struct gdbarch *gdbarch, struct regcache *regcache, int regnum, const gdb_byte *buf)
enum bfd_endian byte_order
void set_gdbarch_pc_regnum(struct gdbarch *gdbarch, int pc_regnum)
void set_gdbarch_max_insn_length(struct gdbarch *gdbarch, ULONGEST max_insn_length)
int record_full_arch_list_add_end(void)
void set_gdbarch_core_read_description(struct gdbarch *gdbarch, gdbarch_core_read_description_ftype core_read_description)
pv_t pv_add(pv_t a, pv_t b)
int tdesc_has_registers(const struct target_desc *target_desc)
void set_gdbarch_register_name(struct gdbarch *gdbarch, gdbarch_register_name_ftype register_name)
int pv_is_constant(pv_t a)
static void store_signed_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, LONGEST val)
void error(const char *fmt,...)
pv_t pv_register(int reg, CORE_ADDR k)
struct gdbarch * gdbarch_alloc(const struct gdbarch_info *info, struct gdbarch_tdep *tdep)
void set_gdbarch_inner_than(struct gdbarch *gdbarch, gdbarch_inner_than_ftype inner_than)
static void initialize_tdesc_s390x_te_linux64(void)
static int s390_prologue_frame_unwind_cache(struct frame_info *this_frame, struct s390_unwind_cache *info)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
const struct regset s390_gs_regset
static void s390_sigtramp_frame_this_id(struct frame_info *this_frame, void **this_prologue_cache, struct frame_id *this_id)
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
static enum register_status s390_pseudo_register_read(struct gdbarch *gdbarch, struct regcache *regcache, int regnum, gdb_byte *buf)
int tdesc_unnumbered_register(const struct tdesc_feature *feature, const char *name)
static const struct regcache_map_entry s390_regmap_vxrs_low[]
static enum return_value_convention s390_return_value(struct gdbarch *gdbarch, struct value *function, struct type *type, struct regcache *regcache, gdb_byte *out, const gdb_byte *in)
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)
static struct value * s390_stub_frame_prev_register(struct frame_info *this_frame, void **this_prologue_cache, int regnum)
struct type * builtin_int
void regcache_raw_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
enum register_status regcache_raw_read_signed(struct regcache *regcache, int regnum, LONGEST *val)
void set_gdbarch_guess_tracepoint_registers(struct gdbarch *gdbarch, gdbarch_guess_tracepoint_registers_ftype guess_tracepoint_registers)
#define S390_BC_GSEPLA_REGNUM