[PATCH] Define 'EXTERN' for simulation internals

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] Define 'EXTERN' for simulation internals

Pavel Kryukov
Define 'EXTERN' for simulation internals

If inlining is not supported by compiler, sim-arange.h uses
EXTERN keyword which is not defined yet. Therefore, we define it
as 'extern' qualifier.

sim/common/Changelog:
2019-01-12  Pavel I. Kryukov  <[hidden email]>

        * sim-inline.h: define EXTERN macro

diff --git a/sim/common/sim-inline.h b/sim/common/sim-inline.h
index e9fb5c7..b215252 100644
--- a/sim/common/sim-inline.h
+++ b/sim/common/sim-inline.h
@@ -324,6 +324,9 @@
 #define EXTERN_INLINE extern INLINE2
 #endif

+#ifndef EXTERN
+#define EXTERN extern
+#endif

 /* Your compiler's no-return reserved word */
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Define 'EXTERN' for simulation internals

Simon Marchi
On 2019-01-12 08:16, Павел Крюков wrote:

> Define 'EXTERN' for simulation internals
>
> If inlining is not supported by compiler, sim-arange.h uses
> EXTERN keyword which is not defined yet. Therefore, we define it
> as 'extern' qualifier.
>
> sim/common/Changelog:
> 2019-01-12  Pavel I. Kryukov  <[hidden email]>
>
>         * sim-inline.h: define EXTERN macro
>
> diff --git a/sim/common/sim-inline.h b/sim/common/sim-inline.h
> index e9fb5c7..b215252 100644
> --- a/sim/common/sim-inline.h
> +++ b/sim/common/sim-inline.h
> @@ -324,6 +324,9 @@
>  #define EXTERN_INLINE extern INLINE2
>  #endif
>
> +#ifndef EXTERN
> +#define EXTERN extern
> +#endif
>
>  /* Your compiler's no-return reserved word */

Hi Pavel,

This LGTM.  Would you mind precising the compiler (name and version) and
copy paste the error message?  I'll include those in the commit message,
for future reference.

Thanks,

Simon
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Define 'EXTERN' for simulation internals

Pavel Kryukov
Assuming this patch is applied:
https://sourceware.org/ml/gdb-patches/2019-01/msg00241.html,
error message would appear for any GCC-compatible C++ compiler:

In file included from
/mipt-mips/simulator/../../sim/common/sim-basics.h:147:0,
                 from /mipt-mips/simulator/export/gdb/sim-main.h:13,
                 from /mipt-mips/simulator/export/gdb/gdb_interface.cpp:7:
/mipt-mips/simulator/../../sim/common/sim-arange.h:71:27: error: ‘EXTERN’
does not name a type; did you mean ‘EUSERS’?
 #define SIM_ARANGE_INLINE EXTERN
                           ^
/mipt-mips/simulator/../../sim/common/sim-arange.h:76:1: note: in expansion
of macro ‘SIM_ARANGE_INLINE’
 SIM_ARANGE_INLINE int
 ^~~~~~~~~~~~~~~~~
$ g++ --version
g++ (Ubuntu 7.1.0-10ubuntu1~16.04.york0) 7.1.0

Thanks,
--
Pavel

вт, 15 янв. 2019 г. в 00:36, Simon Marchi <[hidden email]>:

> On 2019-01-12 08:16, Павел Крюков wrote:
> > Define 'EXTERN' for simulation internals
> >
> > If inlining is not supported by compiler, sim-arange.h uses
> > EXTERN keyword which is not defined yet. Therefore, we define it
> > as 'extern' qualifier.
> >
> > sim/common/Changelog:
> > 2019-01-12  Pavel I. Kryukov  <[hidden email]>
> >
> >         * sim-inline.h: define EXTERN macro
> >
> > diff --git a/sim/common/sim-inline.h b/sim/common/sim-inline.h
> > index e9fb5c7..b215252 100644
> > --- a/sim/common/sim-inline.h
> > +++ b/sim/common/sim-inline.h
> > @@ -324,6 +324,9 @@
> >  #define EXTERN_INLINE extern INLINE2
> >  #endif
> >
> > +#ifndef EXTERN
> > +#define EXTERN extern
> > +#endif
> >
> >  /* Your compiler's no-return reserved word */
>
> Hi Pavel,
>
> This LGTM.  Would you mind precising the compiler (name and version) and
> copy paste the error message?  I'll include those in the commit message,
> for future reference.
>
> Thanks,
>
> Simon
>
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Define 'EXTERN' for simulation internals

Simon Marchi
On 2019-01-15 02:28, Павел Крюков wrote:

> Assuming this patch is applied:
> https://sourceware.org/ml/gdb-patches/2019-01/msg00241.html,
> error message would appear for any GCC-compatible C++ compiler:
>
> In file included from
> /mipt-mips/simulator/../../sim/common/sim-basics.h:147:0,
>                  from /mipt-mips/simulator/export/gdb/sim-main.h:13,
>                  from
> /mipt-mips/simulator/export/gdb/gdb_interface.cpp:7:
> /mipt-mips/simulator/../../sim/common/sim-arange.h:71:27: error:
> ‘EXTERN’
> does not name a type; did you mean ‘EUSERS’?
>  #define SIM_ARANGE_INLINE EXTERN
>                            ^
> /mipt-mips/simulator/../../sim/common/sim-arange.h:76:1: note: in
> expansion
> of macro ‘SIM_ARANGE_INLINE’
>  SIM_ARANGE_INLINE int
>  ^~~~~~~~~~~~~~~~~
> $ g++ --version
> g++ (Ubuntu 7.1.0-10ubuntu1~16.04.york0) 7.1.0
>

Ok thanks.

Actually, would it be fine with you if we just changed

#define SIM_ARANGE_INLINE EXTERN

to

#define SIM_ARANGE_INLINE extern

? There are already uses of "extern" in that file, I don't see why it
wouldn't be fine to use it there too.

Simon
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Define 'EXTERN' for simulation internals

Pavel Kryukov
Yes, it would be fine as well.

Thanks,
--
Pavel

ср, 16 янв. 2019 г. в 01:28, Simon Marchi <[hidden email]>:

> On 2019-01-15 02:28, Павел Крюков wrote:
> > Assuming this patch is applied:
> > https://sourceware.org/ml/gdb-patches/2019-01/msg00241.html,
> > error message would appear for any GCC-compatible C++ compiler:
> >
> > In file included from
> > /mipt-mips/simulator/../../sim/common/sim-basics.h:147:0,
> >                  from /mipt-mips/simulator/export/gdb/sim-main.h:13,
> >                  from
> > /mipt-mips/simulator/export/gdb/gdb_interface.cpp:7:
> > /mipt-mips/simulator/../../sim/common/sim-arange.h:71:27: error:
> > ‘EXTERN’
> > does not name a type; did you mean ‘EUSERS’?
> >  #define SIM_ARANGE_INLINE EXTERN
> >                            ^
> > /mipt-mips/simulator/../../sim/common/sim-arange.h:76:1: note: in
> > expansion
> > of macro ‘SIM_ARANGE_INLINE’
> >  SIM_ARANGE_INLINE int
> >  ^~~~~~~~~~~~~~~~~
> > $ g++ --version
> > g++ (Ubuntu 7.1.0-10ubuntu1~16.04.york0) 7.1.0
> >
>
> Ok thanks.
>
> Actually, would it be fine with you if we just changed
>
> #define SIM_ARANGE_INLINE EXTERN
>
> to
>
> #define SIM_ARANGE_INLINE extern
>
> ? There are already uses of "extern" in that file, I don't see why it
> wouldn't be fine to use it there too.
>
> Simon
>
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] Define 'EXTERN' for simulation internals

Simon Marchi-2
On 2019-01-15 5:32 p.m., Павел Крюков wrote:
> Yes, it would be fine as well.

Thanks, I pushed this.

From dc7e818497f0af0a3ee569f6eee0ad74e19b4bc2 Mon Sep 17 00:00:00 2001
From: Simon Marchi <[hidden email]>
Date: Tue, 15 Jan 2019 17:45:39 -0500
Subject: [PATCH] sim: Fix definition of SIM_ARANGE_INLINE
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If HAVE_INLINE is false, SIM_ARANGE_INLINE is currently defined as

    #define SIM_ARANGE_INLINE EXTERN

However, EXTERN is not defined anywhere, leading to errors such as:

    In file included from
    /mipt-mips/simulator/../../sim/common/sim-basics.h:147:0,
                     from /mipt-mips/simulator/export/gdb/sim-main.h:13,
                     from /mipt-mips/simulator/export/gdb/gdb_interface.cpp:7:
    /mipt-mips/simulator/../../sim/common/sim-arange.h:71:27: error: ‘EXTERN’
    does not name a type; did you mean ‘EUSERS’?
     #define SIM_ARANGE_INLINE EXTERN
                               ^
    /mipt-mips/simulator/../../sim/common/sim-arange.h:76:1: note: in expansion
    of macro ‘SIM_ARANGE_INLINE’
     SIM_ARANGE_INLINE int
     ^~~~~~~~~~~~~~~~~

I (Simon) have reproduced the problem by simply removing the HAVE_INLINE
definition.  This was originally reported by Pavel I. Kryukov
<[hidden email]>.

sim/common/ChangeLog:

        * sim-arange.h (SIM_ARANGE_INLINE): Change EXTERN to extern.
---
 sim/common/ChangeLog    | 4 ++++
 sim/common/sim-arange.h | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 01ee122b019..a95735a4793 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,7 @@
+2019-01-15  Simon Marchi  <[hidden email]>
+
+ * sim-arange.h (SIM_ARANGE_INLINE): Change EXTERN to extern.
+
 2018-12-18  Andrew Burgess  <[hidden email]>

  * sim-syscall.c (sim_syscall_multi): Don't update sc->errcode at
diff --git a/sim/common/sim-arange.h b/sim/common/sim-arange.h
index ce84c1138ad..f2ac595390f 100644
--- a/sim/common/sim-arange.h
+++ b/sim/common/sim-arange.h
@@ -68,7 +68,7 @@ extern void sim_addr_range_delete (ADDR_RANGE * /*ar*/,
 #define SIM_ARANGE_INLINE EXTERN_INLINE
 #endif
 #else
-#define SIM_ARANGE_INLINE EXTERN
+#define SIM_ARANGE_INLINE extern
 #endif

 /* Return non-zero if ADDR is in range AR, traversing the entire tree.
--
2.20.1