From patchwork Wed Jul 9 10:37:24 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gary Benson X-Patchwork-Id: 1967 Received: (qmail 1177 invoked by alias); 9 Jul 2014 10:38:22 -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 709 invoked by uid 89); 9 Jul 2014 10:38:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 09 Jul 2014 10:38:13 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s69AcCIT002507 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 9 Jul 2014 06:38:12 -0400 Received: from blade.nx (ovpn-116-101.ams2.redhat.com [10.36.116.101]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s69AcAuo013285 for ; Wed, 9 Jul 2014 06:38:11 -0400 Received: from blade.nx (localhost [127.0.0.1]) by blade.nx (Postfix) with ESMTP id 744422640C9 for ; Wed, 9 Jul 2014 11:38:10 +0100 (BST) From: Gary Benson To: gdb-patches@sourceware.org Subject: [PATCH 04/15] Introduce common-types.h Date: Wed, 9 Jul 2014 11:37:24 +0100 Message-Id: <1404902255-11101-5-git-send-email-gbenson@redhat.com> In-Reply-To: <1404902255-11101-1-git-send-email-gbenson@redhat.com> References: <1404902255-11101-1-git-send-email-gbenson@redhat.com> X-IsSubscribed: yes This introduces common-types.h. This file defines various standard types used by gdb and gdbserver. Currently these types are conditionally defined based on GDBSERVER. The long term goal is to remove all such tests; however, this is difficult as currently gdb uses definitions from BFD. In the meantime this is still a step in the right direction. gdb/ 2014-07-09 Tom Tromey Gary Benson * common/common-types.h: New file. * nat/linux-ptrace.c: Include common-types.h. * defs.h: Include common-types.h. (gdb_byte, CORE_ADDR, CORE_ADDR_MAX, LONGEST, ULONGEST): Remove. gdb/gdbserver/ 2014-07-09 Tom Tromey * server.h: Include common-types.h. Move gdb_assert.h include earlier. Add static assertion. (gdb_byte, CORE_ADDR, LONGEST, ULONGEST): Remove. --- gdb/ChangeLog | 8 ++++++ gdb/common/common-types.h | 61 +++++++++++++++++++++++++++++++++++++++++++++ gdb/defs.h | 30 +--------------------- gdb/gdbserver/ChangeLog | 6 ++++ gdb/gdbserver/server.h | 14 ++-------- gdb/nat/linux-ptrace.c | 1 + 6 files changed, 80 insertions(+), 40 deletions(-) create mode 100644 gdb/common/common-types.h diff --git a/gdb/common/common-types.h b/gdb/common/common-types.h new file mode 100644 index 0000000..9fa1c24 --- /dev/null +++ b/gdb/common/common-types.h @@ -0,0 +1,61 @@ +/* Declarations for common types. + + Copyright (C) 1986-2014 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#ifndef COMMON_TYPES_H +#define COMMON_TYPES_H + +#ifdef GDBSERVER + +/* * A byte from the program being debugged. */ +typedef unsigned char gdb_byte; + +typedef unsigned long long CORE_ADDR; + +typedef long long LONGEST; +typedef unsigned long long ULONGEST; + +#else /* GDBSERVER */ + +#include "bfd.h" + +/* * A byte from the program being debugged. */ +typedef bfd_byte gdb_byte; + +/* * An address in the program being debugged. Host byte order. */ +typedef bfd_vma CORE_ADDR; + +/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */ + +#ifdef BFD64 + +typedef BFD_HOST_64_BIT LONGEST; +typedef BFD_HOST_U_64_BIT ULONGEST; + +#else /* No BFD64 */ + +typedef long long LONGEST; +typedef unsigned long long ULONGEST; + +#endif /* No BFD64 */ +#endif /* GDBSERVER */ + +/* * The largest CORE_ADDR value. */ +#define CORE_ADDR_MAX (~ (CORE_ADDR) 0) + +#endif /* COMMON_TYPES_H */ diff --git a/gdb/defs.h b/gdb/defs.h index 511279a..d2a9447 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -96,35 +96,7 @@ #include "libiberty.h" #include "hashtab.h" - -/* Rather than duplicate all the logic in BFD for figuring out what - types to use (which can be pretty complicated), symply define them - in terms of the corresponding type from BFD. */ - -#include "bfd.h" - -/* * A byte from the program being debugged. */ -typedef bfd_byte gdb_byte; - -/* * An address in the program being debugged. Host byte order. */ -typedef bfd_vma CORE_ADDR; - -/* * The largest CORE_ADDR value. */ -#define CORE_ADDR_MAX (~ (CORE_ADDR) 0) - -/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */ - -#ifdef BFD64 - -#define LONGEST BFD_HOST_64_BIT -#define ULONGEST BFD_HOST_U_64_BIT - -#else /* No BFD64 */ - -#define LONGEST long long -#define ULONGEST unsigned long long - -#endif /* No BFD64 */ +#include "common-types.h" #ifndef min #define min(a, b) ((a) < (b) ? (a) : (b)) diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h index 2d55513..67214fa 100644 --- a/gdb/gdbserver/server.h +++ b/gdb/gdbserver/server.h @@ -77,20 +77,14 @@ int vsnprintf(char *str, size_t size, const char *format, va_list ap); # define PROG "gdbserver" #endif -/* A type used for binary buffers. */ -typedef unsigned char gdb_byte; - #include "ptid.h" #include "buffer.h" #include "xml-utils.h" #include "gdb_locale.h" +#include "common-types.h" +#include "gdb_assert.h" -/* FIXME: This should probably be autoconf'd for. It's an integer type at - least the size of a (void *). */ -typedef unsigned long long CORE_ADDR; - -typedef long long LONGEST; -typedef unsigned long long ULONGEST; +gdb_static_assert (sizeof (CORE_ADDR) >= sizeof (void *)); #include "regcache.h" #include "gdb/signals.h" @@ -147,8 +141,6 @@ extern int handle_target_event (int err, gdb_client_data client_data); #include "utils.h" #include "debug.h" -#include "gdb_assert.h" - /* Maximum number of bytes to read/write at once. The value here is chosen to fill up a packet (the headers account for the 32). */ #define MAXBUFBYTES(N) (((N)-32)/2) diff --git a/gdb/nat/linux-ptrace.c b/gdb/nat/linux-ptrace.c index 59c9bfa..e3462ec 100644 --- a/gdb/nat/linux-ptrace.c +++ b/gdb/nat/linux-ptrace.c @@ -29,6 +29,7 @@ #include "buffer.h" #include "gdb_assert.h" #include "gdb_wait.h" +#include "common-types.h" #include