aboutsummaryrefslogtreecommitdiff
path: root/gdb/sparc64-sol2-tdep.c
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2020-06-25 13:43:46 +0200
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2020-06-25 13:43:46 +0200
commitd412e69677c6ca145ea8f5ff8c61a22952cb0855 (patch)
tree85fb98a2122dfff9a1ff8602d140735e32fe1c5c /gdb/sparc64-sol2-tdep.c
parent42cc83080dee2c23635130c11b3f71f1ca1f5871 (diff)
downloadgdb-d412e69677c6ca145ea8f5ff8c61a22952cb0855.zip
gdb-d412e69677c6ca145ea8f5ff8c61a22952cb0855.tar.gz
gdb-d412e69677c6ca145ea8f5ff8c61a22952cb0855.tar.bz2
Move common handlers to sol2_init_abi
There's some overlap and duplication between 32 and 64-bit Solaris/SPARC and x86 tdep files, in particular sol2_core_pid_to_str *_sol2_sigtramp_p sol2_skip_solib_resolver *_sol2_static_transform_name (forgotten on amd64) set_gdbarch_sofun_address_maybe_missing (likewise) This patch avoids this by centralizing common code in sol2-tdep.c. While sparc_sol2_pc_in_sigtramp and sparc_sol2_static_transform_name were declared in the shared sparc-tdep.h, they were only used in Solaris files. Tested on amd64-pc-solaris2.11, i386-pc-solaris2.11, sparcv9-sun-solaris2.11, and sparc-sun-solaris2.11, and sparc64-unknown-linux-gnu. * amd64-sol2-tdep.c (amd64_sol2_sigtramp_p): Remove. (amd64_sol2_init_abi): Use sol2_sigtramp_p. Call sol2_init_abi. Remove calls to set_gdbarch_skip_solib_resolver, set_gdbarch_core_pid_to_str. * i386-sol2-tdep.c (i386_sol2_sigtramp_p): Remove. (i386_sol2_static_transform_name): Remove. (i386_sol2_init_abi): Call sol2_init_abi. Remove calls to set_gdbarch_sofun_address_maybe_missing, set_gdbarch_static_transform_name, set_gdbarch_skip_solib_resolver, set_gdbarch_core_pid_to_str. Use sol2_sigtramp_p. * sol2-tdep.c (sol2_pc_in_sigtramp): New function. (sol2_sigtramp_p): New function. (sol2_static_transform_name): New function. (sol2_skip_solib_resolver, sol2_core_pid_to_str): Make static. (sol2_init_abi): New function. * sol2-tdep.h (sol2_sigtramp_p, sol2_init_abi): Declare. (sol2_skip_solib_resolver, sol2_core_pid_to_str): Remove. * sparc-sol2-tdep.c (sparc_sol2_pc_in_sigtramp): Remove. (sparc32_sol2_sigtramp_frame_sniffer): Just call sol2_sigtramp_p. (sparc_sol2_static_transform_name): Remove. (sparc32_sol2_init_abi): Call sol2_init_abi. Remove calls to set_gdbarch_sofun_address_maybe_missing, set_gdbarch_static_transform_name, set_gdbarch_skip_solib_resolver, set_gdbarch_core_pid_to_str. * sparc-tdep.h (sparc_sol2_pc_in_sigtramp) (sparc_sol2_static_transform_name): Remove * sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_sniffer): Just call sol2_sigtramp_p. (sparc64_sol2_init_abi): Call sol2_init_abi. Remove calls to set_gdbarch_sofun_address_maybe_missing, set_gdbarch_static_transform_name, set_gdbarch_skip_solib_resolver, set_gdbarch_core_pid_to_str.
Diffstat (limited to 'gdb/sparc64-sol2-tdep.c')
-rw-r--r--gdb/sparc64-sol2-tdep.c24
1 files changed, 3 insertions, 21 deletions
diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c
index 550fed7..31ee873 100644
--- a/gdb/sparc64-sol2-tdep.c
+++ b/gdb/sparc64-sol2-tdep.c
@@ -180,15 +180,9 @@ sparc64_sol2_sigtramp_frame_sniffer (const struct frame_unwind *self,
struct frame_info *this_frame,
void **this_cache)
{
- CORE_ADDR pc = get_frame_pc (this_frame);
- const char *name;
-
- find_pc_partial_function (pc, &name, NULL, NULL);
- if (sparc_sol2_pc_in_sigtramp (pc, name))
- return 1;
-
- return 0;
+ return sol2_sigtramp_p (this_frame);
}
+
static const struct frame_unwind sparc64_sol2_sigtramp_frame_unwind =
{
SIGTRAMP_FRAME,
@@ -216,19 +210,10 @@ sparc64_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
sparc64_init_abi (info, gdbarch);
- /* The Sun compilers (Sun ONE Studio, Forte Developer, Sun WorkShop, SunPRO)
- compiler puts out 0 instead of the address in N_SO stabs. Starting with
- SunPRO 3.0, the compiler does this for N_FUN stabs too. */
- set_gdbarch_sofun_address_maybe_missing (gdbarch, 1);
-
- /* The Sun compilers also do "globalization"; see the comment in
- sparc_sol2_static_transform_name for more information. */
- set_gdbarch_static_transform_name
- (gdbarch, sparc_sol2_static_transform_name);
+ sol2_init_abi (info, gdbarch);
/* Solaris has SVR4-style shared libraries... */
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
- set_gdbarch_skip_solib_resolver (gdbarch, sol2_skip_solib_resolver);
set_solib_svr4_fetch_link_map_offsets
(gdbarch, svr4_lp64_fetch_link_map_offsets);
@@ -238,9 +223,6 @@ sparc64_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
/* Solaris has kernel-assisted single-stepping support. */
set_gdbarch_software_single_step (gdbarch, NULL);
-
- /* How to print LWP PTIDs from core files. */
- set_gdbarch_core_pid_to_str (gdbarch, sol2_core_pid_to_str);
}
void _initialize_sparc64_sol2_tdep ();