| Upstream-Status: Backport |
| |
| https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=92fc615 |
| |
| Signed-off-by: Kai Kang <kai.kang@windriver.com> |
| -- |
| From 92fc6153a6fdf2a027d9780f5945712aafad4a9e Mon Sep 17 00:00:00 2001 |
| From: Mike Frysinger <vapier@gentoo.org> |
| Date: Sun, 29 Mar 2015 15:59:01 -0400 |
| Subject: [PATCH] sim: common: sim-arange: fix extern inline handling |
| |
| 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> |
| --- |
| gdb-7.6/sim/common/sim-arange.h | 20 ++++++++++++-------- |
| gdb-7.6/sim/common/sim-inline.h | 4 +++- |
| 2 files changed, 15 insertions(+), 9 deletions(-) |
| |
| diff --git a/gdb-7.6/sim/common/sim-arange.h b/gdb-7.6/sim/common/sim-arange.h |
| index 73117f3..de842c9 100644 |
| --- a/gdb-7.6/sim/common/sim-arange.h |
| +++ b/gdb-7.6/sim/common/sim-arange.h |
| @@ -60,22 +60,26 @@ extern void sim_addr_range_delete (ADDR_RANGE * /*ar*/, |
| 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 --git a/gdb-7.6/sim/common/sim-inline.h b/gdb-7.6/sim/common/sim-inline.h |
| index af75562..8a9c286 100644 |
| --- a/gdb-7.6/sim/common/sim-inline.h |
| +++ b/gdb-7.6/sim/common/sim-inline.h |
| @@ -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*/ |
| -- |
| 2.6.1 |
| |