X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fs390-linux-tdep.c;h=e27ce2781f5f94e4b825435626b56ac2982ba127;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=d9ac40b625f97c7a1f80a76b5fbc8f4a92cb96d3;hpb=00431a78b28f913a9d5c912c49680e39cfd20847;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c index d9ac40b625..e27ce2781f 100644 --- a/gdb/s390-linux-tdep.c +++ b/gdb/s390-linux-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for GNU/Linux on s390. - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2020 Free Software Foundation, Inc. Contributed by D.J. Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com) for IBM Deutschland Entwicklung GmbH, IBM Corporation. @@ -273,21 +273,22 @@ s390_iterate_over_regset_sections (struct gdbarch *gdbarch, const int gregset_size = (tdep->abi == ABI_LINUX_S390 ? s390_sizeof_gregset : s390x_sizeof_gregset); - cb (".reg", gregset_size, &s390_gregset, NULL, cb_data); - cb (".reg2", s390_sizeof_fpregset, &s390_fpregset, NULL, cb_data); + cb (".reg", gregset_size, gregset_size, &s390_gregset, NULL, cb_data); + cb (".reg2", s390_sizeof_fpregset, s390_sizeof_fpregset, &s390_fpregset, NULL, + cb_data); if (tdep->abi == ABI_LINUX_S390 && tdep->gpr_full_regnum != -1) - cb (".reg-s390-high-gprs", 16 * 4, &s390_upper_regset, + cb (".reg-s390-high-gprs", 16 * 4, 16 * 4, &s390_upper_regset, "s390 GPR upper halves", cb_data); if (tdep->have_linux_v1) - cb (".reg-s390-last-break", 8, + cb (".reg-s390-last-break", 8, 8, (gdbarch_ptr_bit (gdbarch) == 32 ? &s390_last_break_regset : &s390x_last_break_regset), "s390 last-break address", cb_data); if (tdep->have_linux_v2) - cb (".reg-s390-system-call", 4, &s390_system_call_regset, + cb (".reg-s390-system-call", 4, 4, &s390_system_call_regset, "s390 system-call", cb_data); /* If regcache is set, we are in "write" (gcore) mode. In this @@ -297,14 +298,14 @@ s390_iterate_over_regset_sections (struct gdbarch *gdbarch, && (regcache == NULL || (REG_VALID == regcache->get_register_status (S390_TDB_DWORD0_REGNUM)))) - cb (".reg-s390-tdb", s390_sizeof_tdbregset, &s390_tdb_regset, - "s390 TDB", cb_data); + cb (".reg-s390-tdb", s390_sizeof_tdbregset, s390_sizeof_tdbregset, + &s390_tdb_regset, "s390 TDB", cb_data); if (tdep->v0_full_regnum != -1) { - cb (".reg-s390-vxrs-low", 16 * 8, &s390_vxrs_low_regset, + cb (".reg-s390-vxrs-low", 16 * 8, 16 * 8, &s390_vxrs_low_regset, "s390 vector registers 0-15 lower half", cb_data); - cb (".reg-s390-vxrs-high", 16 * 16, &s390_vxrs_high_regset, + cb (".reg-s390-vxrs-high", 16 * 16, 16 * 16, &s390_vxrs_high_regset, "s390 vector registers 16-31", cb_data); } @@ -314,12 +315,12 @@ s390_iterate_over_regset_sections (struct gdbarch *gdbarch, { if (regcache == NULL || REG_VALID == regcache->get_register_status (S390_GSD_REGNUM)) - cb (".reg-s390-gs-cb", 4 * 8, &s390_gs_regset, + cb (".reg-s390-gs-cb", 4 * 8, 4 * 8, &s390_gs_regset, "s390 guarded-storage registers", cb_data); if (regcache == NULL || REG_VALID == regcache->get_register_status (S390_BC_GSD_REGNUM)) - cb (".reg-s390-gs-bc", 4 * 8, &s390_gsbc_regset, + cb (".reg-s390-gs-bc", 4 * 8, 4 * 8, &s390_gsbc_regset, "s390 guarded-storage broadcast control", cb_data); } } @@ -331,10 +332,9 @@ s390_core_read_description (struct gdbarch *gdbarch, struct target_ops *target, bfd *abfd) { asection *section = bfd_get_section_by_name (abfd, ".reg"); - CORE_ADDR hwcap = 0; + CORE_ADDR hwcap = linux_get_hwcap (target); bool high_gprs, v1, v2, te, vx, gs; - target_auxv_search (target, AT_HWCAP, &hwcap); if (!section) return NULL; @@ -346,7 +346,7 @@ s390_core_read_description (struct gdbarch *gdbarch, te = (hwcap & HWCAP_S390_TE); gs = (hwcap & HWCAP_S390_GS); - switch (bfd_section_size (abfd, section)) + switch (bfd_section_size (section)) { case s390_sizeof_gregset: if (high_gprs) @@ -1150,7 +1150,6 @@ s390_linux_init_abi_any (struct gdbarch_info info, struct gdbarch *gdbarch) static void s390_linux_init_abi_31 (struct gdbarch_info info, struct gdbarch *gdbarch) { - const struct target_desc *tdesc = info.target_desc; struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); tdep->abi = ABI_LINUX_S390; @@ -1167,7 +1166,6 @@ s390_linux_init_abi_31 (struct gdbarch_info info, struct gdbarch *gdbarch) static void s390_linux_init_abi_64 (struct gdbarch_info info, struct gdbarch *gdbarch) { - const struct target_desc *tdesc = info.target_desc; struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); tdep->abi = ABI_LINUX_ZSERIES; @@ -1179,8 +1177,9 @@ s390_linux_init_abi_64 (struct gdbarch_info info, struct gdbarch *gdbarch) set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_S390X); } +void _initialize_s390_linux_tdep (); void -_initialize_s390_linux_tdep (void) +_initialize_s390_linux_tdep () { /* Hook us into the OSABI mechanism. */ gdbarch_register_osabi (bfd_arch_s390, bfd_mach_s390_31, GDB_OSABI_LINUX,