From 9239eeabe340e1662c5df8f816785477309e1c0b Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Wed, 30 Jul 2014 15:31:10 +0100 Subject: [PATCH] Introduce common-types.h 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/ChangeLog: * common/common-types.h: New file. * Makefile.in (HFILES_NO_SRCDIR): Add common/common-types.h. * common/common-defs.h: Include common-types.h. * defs.h (gdb_byte, CORE_ADDR, CORE_ADDR_MAX, LONGEST) (ULONGEST): Remove. gdb/gdbserver/ChangeLog: * server.h: Add static assertion. (gdb_byte, CORE_ADDR, LONGEST, ULONGEST): Remove. --- gdb/ChangeLog | 9 ++++++ gdb/Makefile.in | 2 +- gdb/common/common-defs.h | 1 + gdb/common/common-types.h | 61 +++++++++++++++++++++++++++++++++++++++ gdb/defs.h | 29 ------------------- gdb/gdbserver/ChangeLog | 6 ++++ gdb/gdbserver/server.h | 13 ++------- 7 files changed, 80 insertions(+), 41 deletions(-) create mode 100644 gdb/common/common-types.h diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8c9a8d8bef4..4c8b76b2b87 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2014-08-19 Tom Tromey + Gary Benson + + * common/common-types.h: New file. + * Makefile.in (HFILES_NO_SRCDIR): Add common/common-types.h. + * common/common-defs.h: Include common-types.h. + * defs.h (gdb_byte, CORE_ADDR, CORE_ADDR_MAX, LONGEST) + (ULONGEST): Remove. + 2014-08-19 Tom Tromey Gary Benson diff --git a/gdb/Makefile.in b/gdb/Makefile.in index fa0dcd41702..76ca0dae203 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -936,7 +936,7 @@ gdb_bfd.h sparc-ravenscar-thread.h ppc-ravenscar-thread.h nat/linux-btrace.h \ ctf.h nat/i386-cpuid.h nat/i386-gcc-cpuid.h target/resume.h \ target/wait.h target/waitstatus.h nat/linux-nat.h nat/linux-waitpid.h \ common/print-utils.h common/rsp-low.h nat/i386-dregs.h x86-linux-nat.h \ -i386-linux-nat.h common/common-defs.h common/errors.h +i386-linux-nat.h common/common-defs.h common/errors.h common/common-types.h # Header files that already have srcdir in them, or which are in objdir. diff --git a/gdb/common/common-defs.h b/gdb/common/common-defs.h index a15423cde14..5543e4c56bd 100644 --- a/gdb/common/common-defs.h +++ b/gdb/common/common-defs.h @@ -42,5 +42,6 @@ #include "common-utils.h" #include "gdb_assert.h" #include "errors.h" +#include "common-types.h" #endif /* COMMON_DEFS_H */ diff --git a/gdb/common/common-types.h b/gdb/common/common-types.h new file mode 100644 index 00000000000..9fa1c24f5d3 --- /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 b7271a75664..8914512bc7a 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -76,35 +76,6 @@ #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 */ - #ifndef min #define min(a, b) ((a) < (b) ? (a) : (b)) #endif diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog index 00c5324ca4a..81db69a6d87 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,9 @@ +2014-08-19 Tom Tromey + Gary Benson + + * server.h: Add static assertion. + (gdb_byte, CORE_ADDR, LONGEST, ULONGEST): Remove. + 2014-08-19 Tom Tromey Gary Benson diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h index db6ddde3411..e6b22774507 100644 --- a/gdb/gdbserver/server.h +++ b/gdb/gdbserver/server.h @@ -21,6 +21,8 @@ #include "common-defs.h" +gdb_static_assert (sizeof (CORE_ADDR) >= sizeof (void *)); + #ifdef __MINGW32CE__ #include "wincecompat.h" #endif @@ -63,19 +65,8 @@ 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 "buffer.h" #include "xml-utils.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; - #include "regcache.h" #include "gdb_signals.h" #include "target.h" -- 2.30.2