This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] sim/erc32/ max simulation time extended by using 64bit ints


Hey guys,

> Index: sim/erc32/sis.h
> ===================================================================
> RCS file: /cvs/src/src/sim/erc32/sis.h,v
> retrieving revision 1.2
> diff -u -r1.2 sis.h
> --- sim/erc32/sis.h	9 Jun 2002 15:45:46 -0000	1.2
> +++ sim/erc32/sis.h	4 May 2010 21:14:55 -0000
> @@ -23,6 +23,7 @@
>  #include "ansidecl.h"
>  #include "gdb/callback.h"
>  #include "gdb/remote-sim.h"
> +#include <stdint.h>

Unfortunately, this change breaks the build when stdint.h is not
available (Eg. sparc-solaris).

Apparently, this header was included for 2 things:
  - define two 64bit types int64 and uint64;
  - have UINT64_MAX.

I assume that the requirement was for 64bit minimum, as opposed to
exactly 64bit? Making that assumption, we can remove the need for
including stdint.h by using long long instead of int64_t (same thing
for the unsigned counterpart).  Similarly, UINT64_MAX has a well defined
value reguardless of the platform, so it can easily be defined as well.
Looking at the rest of the type definitions above, it's actually in line
with what's been done so far.

Joel: Would that work for you as well?

Doug: Would that be OK to commit? I think that the cleanest thing to do
      here would be to have some configury that would provide our own
      stdint.h when missing.  We already do that for GDB by using gnulib
      so perhaps one way to do so would be to share the gnulib between
      GDB and the sim (probably meaning moving it to the root directory).

PS: We have the same problem with rx sim, I believe. I haven't tried
    building it, though.

-- 
Joel
Fix erc32 sim build failure due to missing stdint.h.

2010-05-16  Joel Brobecker  <brobecker@adacore.com>

        * sis.h: Remove #include <stdint.h>.
        (uint64, int64): Redefine without using stdint.h.
        (UINT64_MAX): Define.

Modified: trunk/gdb/gdb-head/sim/erc32/sis.h
===================================================================
--- trunk/gdb/gdb-head/sim/erc32/sis.h	2010-05-17 01:21:31 UTC (rev 163986)
+++ trunk/gdb/gdb-head/sim/erc32/sis.h	2010-05-17 01:41:06 UTC (rev 163987)
@@ -23,7 +23,6 @@
 #include "ansidecl.h"
 #include "gdb/callback.h"
 #include "gdb/remote-sim.h"
-#include <stdint.h>
 
 #include "end.h"
 
@@ -53,9 +52,11 @@
 typedef double  float64;	/* 64-bit float */
 
 /* FIXME: what about host compilers that don't support 64-bit ints? */
-typedef uint64_t uint64; /* 64-bit unsigned int */
-typedef int64_t int64;	/* 64-bit signed int */
+typedef unsigned long long uint64; /* 64-bit unsigned int */
+typedef long long int64;	   /* 64-bit signed int */
 
+#define UINT64_MAX 18446744073709551615ULL
+
 struct pstate {
 
     float64         fd[16];	/* FPU registers */

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]