From patchwork Wed Jun 24 13:30:50 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 7321 Received: (qmail 12072 invoked by alias); 24 Jun 2015 13:31:05 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 12050 invoked by uid 89); 24 Jun 2015 13:31:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pd0-f171.google.com Received: from mail-pd0-f171.google.com (HELO mail-pd0-f171.google.com) (209.85.192.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 24 Jun 2015 13:30:57 +0000 Received: by pdjn11 with SMTP id n11so30804756pdj.0 for ; Wed, 24 Jun 2015 06:30:55 -0700 (PDT) X-Received: by 10.70.1.102 with SMTP id 6mr1742722pdl.32.1435152655644; Wed, 24 Jun 2015 06:30:55 -0700 (PDT) Received: from E107787-LIN (gcc1-power7.osuosl.org. [140.211.15.137]) by mx.google.com with ESMTPSA id js8sm26804232pbb.9.2015.06.24.06.30.52 (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 24 Jun 2015 06:30:54 -0700 (PDT) From: Yao Qi To: Pedro Alves Cc: Yao Qi , gdb-patches@sourceware.org Subject: Re: [PATCH 2/2] Add aarch64-linux in supports_get_siginfo_type References: <1434971017-22494-1-git-send-email-yao.qi@linaro.org> <1434971017-22494-2-git-send-email-yao.qi@linaro.org> <558A8A4B.5090103@redhat.com> Date: Wed, 24 Jun 2015 14:30:50 +0100 In-Reply-To: <558A8A4B.5090103@redhat.com> (Pedro Alves's message of "Wed, 24 Jun 2015 11:45:31 +0100") Message-ID: <86ioadqlmd.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 X-IsSubscribed: yes Pedro Alves writes: > I note that a few other archs are also missing here: > > aarch64-linux-tdep.c: set_gdbarch_get_siginfo_type (gdbarch, > linux_get_siginfo_type); > amd64-linux-tdep.c: set_gdbarch_get_siginfo_type (gdbarch, > linux_get_siginfo_type); > arm-linux-tdep.c: set_gdbarch_get_siginfo_type (gdbarch, > linux_get_siginfo_type); > i386-linux-tdep.c: set_gdbarch_get_siginfo_type (gdbarch, > linux_get_siginfo_type); > m68klinux-tdep.c: set_gdbarch_get_siginfo_type (gdbarch, > linux_get_siginfo_type); > ppc-linux-tdep.c: set_gdbarch_get_siginfo_type (gdbarch, > linux_get_siginfo_type); > s390-linux-tdep.c: set_gdbarch_get_siginfo_type (gdbarch, > linux_get_siginfo_type); > tilegx-linux-tdep.c: set_gdbarch_get_siginfo_type (gdbarch, > linux_get_siginfo_type); Hmm, looks something wrong in my emacs+cscope that only the top four are shown up. > > though at the pace this is taking, it'd probably be better to register > linux_get_siginfo_type as default for all Linux archs (in > linux-tdep.c:linux_init_abi), > and have archs whoch kernel/ABI uses the non-generic siginfo layout install a > custom get_siginfo_type version. The supports_get_siginfo_type > testsuite function > would then return true for [istarget "*-*-linux*"]. The testsuite > would then help > show which archs would those be. Change like this may cause some fails for some linux targets which need their custom get_siginfo_type implementations. Here is a patch below, I rerun siginfo-obj.exp and siginfo-thread.exp on aarch64/arm/x86_64 linux. diff --git a/gdb/aarch64-linux-tdep.c b/gdb/aarch64-linux-tdep.c index 2f93846..f8cf43e 100644 --- a/gdb/aarch64-linux-tdep.c +++ b/gdb/aarch64-linux-tdep.c @@ -962,7 +962,6 @@ aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) /* Shared library handling. */ set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); - set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); tramp_frame_prepend_unwinder (gdbarch, &aarch64_linux_rt_sigframe); /* Enable longjmp. */ diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c index 2a8de82..e9be9cf 100644 --- a/gdb/amd64-linux-tdep.c +++ b/gdb/amd64-linux-tdep.c @@ -1835,8 +1835,6 @@ amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_displaced_step_location (gdbarch, linux_displaced_step_location); - set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); - set_gdbarch_process_record (gdbarch, i386_process_record); set_gdbarch_process_record_signal (gdbarch, amd64_linux_record_signal); } diff --git a/gdb/arm-linux-tdep.c b/gdb/arm-linux-tdep.c index fc013ce..d79948e 100644 --- a/gdb/arm-linux-tdep.c +++ b/gdb/arm-linux-tdep.c @@ -1441,8 +1441,6 @@ arm_linux_init_abi (struct gdbarch_info info, (gdbarch, arm_linux_iterate_over_regset_sections); set_gdbarch_core_read_description (gdbarch, arm_linux_core_read_description); - set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); - /* Displaced stepping. */ set_gdbarch_displaced_step_copy_insn (gdbarch, arm_linux_displaced_step_copy_insn); diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c index 061ad3a..283ba40 100644 --- a/gdb/i386-linux-tdep.c +++ b/gdb/i386-linux-tdep.c @@ -996,8 +996,6 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_I386); set_gdbarch_get_syscall_number (gdbarch, i386_linux_get_syscall_number); - - set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); } /* Provide a prototype to silence -Wmissing-prototypes. */ diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index c81f71b..ff3ada7 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -243,7 +243,7 @@ get_linux_inferior_data (void) /* This function is suitable for architectures that don't extend/override the standard siginfo structure. */ -struct type * +static struct type * linux_get_siginfo_type (struct gdbarch *gdbarch) { struct linux_gdbarch_data *linux_gdbarch_data; @@ -2440,6 +2440,7 @@ linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_vsyscall_range (gdbarch, linux_vsyscall_range); set_gdbarch_infcall_mmap (gdbarch, linux_infcall_mmap); set_gdbarch_infcall_munmap (gdbarch, linux_infcall_munmap); + set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); } /* Provide a prototype to silence -Wmissing-prototypes. */ diff --git a/gdb/linux-tdep.h b/gdb/linux-tdep.h index ff45286..9beb6f6 100644 --- a/gdb/linux-tdep.h +++ b/gdb/linux-tdep.h @@ -29,8 +29,6 @@ typedef char *(*linux_collect_thread_registers_ftype) (const struct regcache *, bfd *, char *, int *, enum gdb_signal); -struct type *linux_get_siginfo_type (struct gdbarch *); - extern enum gdb_signal linux_gdb_signal_from_target (struct gdbarch *gdbarch, int signal); diff --git a/gdb/m68klinux-tdep.c b/gdb/m68klinux-tdep.c index 03de4ea..c60a879 100644 --- a/gdb/m68klinux-tdep.c +++ b/gdb/m68klinux-tdep.c @@ -422,8 +422,6 @@ m68k_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) /* Enable TLS support. */ set_gdbarch_fetch_tls_load_module_address (gdbarch, svr4_fetch_objfile_link_map); - - set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); } /* Provide a prototype to silence -Wmissing-prototypes. */ diff --git a/gdb/ppc-linux-tdep.c b/gdb/ppc-linux-tdep.c index 3849ca6..4bdd13e 100644 --- a/gdb/ppc-linux-tdep.c +++ b/gdb/ppc-linux-tdep.c @@ -1801,8 +1801,6 @@ ppc_linux_init_abi (struct gdbarch_info info, set_gdbarch_displaced_step_location (gdbarch, linux_displaced_step_location); - set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); - /* Support reverse debugging. */ set_gdbarch_process_record (gdbarch, ppc_process_record); set_gdbarch_process_record_signal (gdbarch, ppc_linux_record_signal); diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c index 0650c27..2460aa1 100644 --- a/gdb/s390-linux-tdep.c +++ b/gdb/s390-linux-tdep.c @@ -3329,8 +3329,6 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_fetch_tls_load_module_address (gdbarch, svr4_fetch_objfile_link_map); - set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); - /* SystemTap functions. */ set_gdbarch_stap_register_prefixes (gdbarch, stap_register_prefixes); set_gdbarch_stap_register_indirection_prefixes (gdbarch, diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index cc50866..0656a0c 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2000,9 +2000,7 @@ gdb_caching_proc support_complex_tests { # return 0. proc supports_get_siginfo_type {} { - if { [istarget "i?86-*-linux*"] - || [istarget "x86_64-*-linux*"] - || [istarget "arm*-*-linux*"] } { + if { [istarget "*-*-linux*"] } { return 1 } else { return 0 diff --git a/gdb/tilegx-linux-tdep.c b/gdb/tilegx-linux-tdep.c index 2de86e5..b3e34fe 100644 --- a/gdb/tilegx-linux-tdep.c +++ b/gdb/tilegx-linux-tdep.c @@ -133,8 +133,6 @@ tilegx_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) /* Shared library handling. */ set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target); set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver); - - set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type); } /* Provide a prototype to silence -Wmissing-prototypes. */