From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32512 invoked by alias); 26 Jul 2013 20:13:38 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 32460 invoked by uid 89); 26 Jul 2013 20:13:38 -0000 X-Spam-SWARE-Status: No, score=-4.9 required=5.0 tests=AWL,BAYES_50,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RDNS_NONE,SPF_HELO_PASS,SPF_PASS,TW_EG autolearn=no version=3.3.1 Received: from Unknown (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 26 Jul 2013 20:13:36 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r6QKDTrp001977 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 26 Jul 2013 16:13:29 -0400 Received: from psique.redhat.com (ovpn-113-184.phx2.redhat.com [10.3.113.184]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r6QKDPYp007550; Fri, 26 Jul 2013 16:13:27 -0400 From: Sergio Durigan Junior To: GDB Patches Cc: Sergio Durigan Junior , Tom Tromey Subject: [PATCH 1/7] Implement the gdbarch.{sh,c,h} bits. Date: Fri, 26 Jul 2013 20:13:00 -0000 Message-Id: <1374869594-16965-2-git-send-email-sergiodj@redhat.com> In-Reply-To: <1374869594-16965-1-git-send-email-sergiodj@redhat.com> References: <1374869594-16965-1-git-send-email-sergiodj@redhat.com> X-SW-Source: 2013-07/txt/msg00652.txt.bz2 This patch basically implements the necessary bits to the new gdbarch_gdb_signal_to_target function. 2013-07-26 Sergio Durigan Junior * gdbarch.sh (gdb_signal_to_target): New function. * gdbarch.c: Regenerate. * gdbarch.h: Regenerate. --- gdb/gdbarch.c | 33 +++++++++++++++++++++++++++++++++ gdb/gdbarch.h | 14 ++++++++++++++ gdb/gdbarch.sh | 9 +++++++++ 3 files changed, 56 insertions(+) diff --git a/gdb/gdbarch.c b/gdb/gdbarch.c index db35b40..1f3380e 100644 --- a/gdb/gdbarch.c +++ b/gdb/gdbarch.c @@ -261,6 +261,7 @@ struct gdbarch gdbarch_process_record_ftype *process_record; gdbarch_process_record_signal_ftype *process_record_signal; gdbarch_gdb_signal_from_target_ftype *gdb_signal_from_target; + gdbarch_gdb_signal_to_target_ftype *gdb_signal_to_target; gdbarch_get_siginfo_type_ftype *get_siginfo_type; gdbarch_record_special_symbol_ftype *record_special_symbol; gdbarch_get_syscall_number_ftype *get_syscall_number; @@ -433,6 +434,7 @@ struct gdbarch startup_gdbarch = 0, /* process_record */ 0, /* process_record_signal */ 0, /* gdb_signal_from_target */ + 0, /* gdb_signal_to_target */ 0, /* get_siginfo_type */ 0, /* record_special_symbol */ 0, /* get_syscall_number */ @@ -738,6 +740,7 @@ verify_gdbarch (struct gdbarch *gdbarch) /* Skip verify of process_record, has predicate. */ /* Skip verify of process_record_signal, has predicate. */ /* Skip verify of gdb_signal_from_target, has predicate. */ + /* Skip verify of gdb_signal_to_target, has predicate. */ /* Skip verify of get_siginfo_type, has predicate. */ /* Skip verify of record_special_symbol, has predicate. */ /* Skip verify of get_syscall_number, has predicate. */ @@ -1033,6 +1036,12 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file) "gdbarch_dump: gdb_signal_from_target = <%s>\n", host_address_to_string (gdbarch->gdb_signal_from_target)); fprintf_unfiltered (file, + "gdbarch_dump: gdbarch_gdb_signal_to_target_p() = %d\n", + gdbarch_gdb_signal_to_target_p (gdbarch)); + fprintf_unfiltered (file, + "gdbarch_dump: gdb_signal_to_target = <%s>\n", + host_address_to_string (gdbarch->gdb_signal_to_target)); + fprintf_unfiltered (file, "gdbarch_dump: gen_return_address = <%s>\n", host_address_to_string (gdbarch->gen_return_address)); fprintf_unfiltered (file, @@ -3900,6 +3909,30 @@ set_gdbarch_gdb_signal_from_target (struct gdbarch *gdbarch, } int +gdbarch_gdb_signal_to_target_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->gdb_signal_to_target != NULL; +} + +int +gdbarch_gdb_signal_to_target (struct gdbarch *gdbarch, enum gdb_signal signal) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->gdb_signal_to_target != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_gdb_signal_to_target called\n"); + return gdbarch->gdb_signal_to_target (gdbarch, signal); +} + +void +set_gdbarch_gdb_signal_to_target (struct gdbarch *gdbarch, + gdbarch_gdb_signal_to_target_ftype gdb_signal_to_target) +{ + gdbarch->gdb_signal_to_target = gdb_signal_to_target; +} + +int gdbarch_get_siginfo_type_p (struct gdbarch *gdbarch) { gdb_assert (gdbarch != NULL); diff --git a/gdb/gdbarch.h b/gdb/gdbarch.h index e1959c3..013f071 100644 --- a/gdb/gdbarch.h +++ b/gdb/gdbarch.h @@ -993,6 +993,20 @@ typedef enum gdb_signal (gdbarch_gdb_signal_from_target_ftype) (struct gdbarch * extern enum gdb_signal gdbarch_gdb_signal_from_target (struct gdbarch *gdbarch, int signo); extern void set_gdbarch_gdb_signal_from_target (struct gdbarch *gdbarch, gdbarch_gdb_signal_from_target_ftype *gdb_signal_from_target); +/* Signal translation: translate the GDB's internal signal number into + the inferior's signal (target's) representation. The implementation + of this method must be host independent. IOW, don't rely on symbols + of the NAT_FILE header (the nm-*.h files), the host + header, or similar headers. + Return the target signal number if found, or -1 if the GDB internal + signal number is invalid. */ + +extern int gdbarch_gdb_signal_to_target_p (struct gdbarch *gdbarch); + +typedef int (gdbarch_gdb_signal_to_target_ftype) (struct gdbarch *gdbarch, enum gdb_signal signal); +extern int gdbarch_gdb_signal_to_target (struct gdbarch *gdbarch, enum gdb_signal signal); +extern void set_gdbarch_gdb_signal_to_target (struct gdbarch *gdbarch, gdbarch_gdb_signal_to_target_ftype *gdb_signal_to_target); + /* Extra signal info inspection. Return a type suitable to inspect extra signal information. */ diff --git a/gdb/gdbarch.sh b/gdb/gdbarch.sh index c92a857..04ca38c 100755 --- a/gdb/gdbarch.sh +++ b/gdb/gdbarch.sh @@ -799,6 +799,15 @@ M:int:process_record_signal:struct regcache *regcache, enum gdb_signal signal:re # (target_wait, target_resume, etc.). M:enum gdb_signal:gdb_signal_from_target:int signo:signo +# Signal translation: translate the GDB's internal signal number into +# the inferior's signal (target's) representation. The implementation +# of this method must be host independent. IOW, don't rely on symbols +# of the NAT_FILE header (the nm-*.h files), the host +# header, or similar headers. +# Return the target signal number if found, or -1 if the GDB internal +# signal number is invalid. +M:int:gdb_signal_to_target:enum gdb_signal signal:signal + # Extra signal info inspection. # # Return a type suitable to inspect extra signal information. -- 1.7.11.7