diff options
author | Stefan Reinauer <stefan.reinauer@coreboot.org> | 2016-02-27 12:35:54 -0800 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-03-01 21:26:34 +0100 |
commit | b7c40630d9fee0e1be68b1d3af330a0ec1c841ee (patch) | |
tree | aa1ef85b5fa00107970aff4c84c0eaed2848e356 /util/crossgcc | |
parent | fb944f4270d787e2e705b46698d9f9851ea8a20e (diff) |
buildgcc: Fix building GDB for mipsel-elf
Change-Id: I31ed159b13c0da60383068832615c6e4a9608efe
Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-on: https://review.coreboot.org/13849
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'util/crossgcc')
-rw-r--r-- | util/crossgcc/patches/gdb-7.9.1_sim-arange.patch | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/util/crossgcc/patches/gdb-7.9.1_sim-arange.patch b/util/crossgcc/patches/gdb-7.9.1_sim-arange.patch new file mode 100644 index 0000000000..bf56c2db7c --- /dev/null +++ b/util/crossgcc/patches/gdb-7.9.1_sim-arange.patch @@ -0,0 +1,61 @@ +From: Mike Frysinger <vapier at gentoo dot org> + +With newer versions of gcc (5.x), the extern inline we're using with the +sim-arange module no longer works. Since this code really wants the gnu +inline semantics, use that attribute explicitly. + +Reported-by: DJ Delorie <dj@redhat.com> +Reported-by: Joel Sherrill <joel.sherrill@oarcorp.com> + +diff -urN gdb-7.9.1.orig/sim/common/sim-arange.h gdb-7.9.1/sim/common/sim-arange.h +--- gdb-7.9.1.orig/sim/common/sim-arange.h 2015-05-13 10:36:05.000000000 -0700 ++++ gdb-7.9.1/sim/common/sim-arange.h 2016-02-27 12:22:58.090512073 -0800 +@@ -60,22 +60,26 @@ + address_word /*start*/, + address_word /*end*/); + ++/* TODO: This should get moved into sim-inline.h. */ ++#ifdef HAVE_INLINE ++#ifdef SIM_ARANGE_C ++#define SIM_ARANGE_INLINE INLINE ++#else ++#define SIM_ARANGE_INLINE EXTERN_INLINE ++#endif ++#else ++#define SIM_ARANGE_INLINE EXTERN ++#endif ++ + /* Return non-zero if ADDR is in range AR, traversing the entire tree. + If no range is specified, that is defined to mean "everything". */ +-extern INLINE int ++SIM_ARANGE_INLINE int + sim_addr_range_hit_p (ADDR_RANGE * /*ar*/, address_word /*addr*/); + #define ADDR_RANGE_HIT_P(ar, addr) \ + ((ar)->range_tree == NULL || sim_addr_range_hit_p ((ar), (addr))) + + #ifdef HAVE_INLINE +-#ifdef SIM_ARANGE_C +-#define SIM_ARANGE_INLINE INLINE +-#else +-#define SIM_ARANGE_INLINE EXTERN_INLINE +-#endif + #include "sim-arange.c" +-#else +-#define SIM_ARANGE_INLINE + #endif + #define SIM_ARANGE_C_INCLUDED + +diff -urN gdb-7.9.1.orig/sim/common/sim-inline.h gdb-7.9.1/sim/common/sim-inline.h +--- gdb-7.9.1.orig/sim/common/sim-inline.h 2015-05-13 10:36:05.000000000 -0700 ++++ gdb-7.9.1/sim/common/sim-inline.h 2016-02-27 12:23:58.169085087 -0800 +@@ -303,7 +303,9 @@ + /* ??? Temporary, pending decision to always use extern inline and do a vast + cleanup of inline support. */ + #ifndef INLINE2 +-#if defined (__GNUC__) ++#if defined (__GNUC_GNU_INLINE__) || defined (__GNUC_STDC_INLINE__) ++#define INLINE2 __inline__ __attribute__ ((__gnu_inline__)) ++#elif defined (__GNUC__) + #define INLINE2 __inline__ + #else + #define INLINE2 /*inline*/ |