Re: [DynInst_API:] Compile issue building Dyninst on ORNL titan


Date: Fri, 17 Oct 2014 22:17:13 -0700
From: Josh Stone <jistone@xxxxxxxxxx>
Subject: Re: [DynInst_API:] Compile issue building Dyninst on ORNL titan
On 10/17/2014 08:17 PM, Jim Galarowicz wrote:
> Hi Josh,
> 
> Thanks for the reply.  I haven't been able to figure anything out. This 
> must be unique to Titan?   It seems no one else has had this issue?
> 
> I tried looking along the include path.
> 
>   39%] Building CXX object 
> dyninstAPI/CMakeFiles/dyninstAPI.dir/src/BPatch.C.o
> In file included from 
> /ccs/home/jgalaro/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/common/src/headers.h:53:0,
>                   from 
> /ccs/home/jgalaro/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/common/src/Timer.h:43,
>                   from 
> /ccs/home/jgalaro/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/common/src/stats.h:38,
>                   from 
> /ccs/home/jgalaro/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/dyninstAPI/src/BPatch.C:43:
> /ccs/home/jgalaro/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/common/src/fraction.h: 
> In constructor 'fraction::fraction(int64_t)':
> /ccs/home/jgalaro/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/common/src/Types.h:140:28: 
> error: 'INT64_C' was not declared in this scope
>   #define I64_C(x)  INT64_C(x)
>                              ^
> /ccs/home/jgalaro/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/common/src/fraction.h:59:50: 
> note: in expansion of macro 'I64_C'
>     explicit fraction(int64_t n) : numer(n), denom(I64_C(1))  {
> 
> I didn't see any includes of stdint.h in the include trace above when I 
> examined each of the files.

It's not even just that direct include chain that you have to worry
about, but also anything each those may have included before getting to
this point, or even what BPatch.C included before that line 43.

> 
> jgalaro@titan-ext1:~/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/common/src> 
> grep stdint *.h
> Types.h:#include <stdint.h>
> Types.h:#include <stdint.h>
> Types.h:#include <stdint.h>
> Types.h:#include <stdint.h>
> jgalaro@titan-ext1:~/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/common/src> 
> cd ../../dyninstAPI/src
> jgalaro@titan-ext1:~/OpenSpeedShop_ROOT/BUILD/titan-ext1/dyninst-8.2.0/dyninstAPI/src> 
> !gre
> grep stdint *.h
> 
> I'm dead in the water on Titan.    I've built Dyninst here many times.  
> I tried the pre-release 8.2 version I had and that fails in the same way.
> They have upgraded the system since then.

Something as innocent as a glibc or libstdc++ update may have altered
what headers you're pulling indirectly.  It can be nasty to figure this
out, no doubt.

In fact, current glibc no longer bothers with __STDC_LIMIT_MACROS:
https://sourceware.org/bugzilla/show_bug.cgi?id=15366

> I'll try again tomorrow.

Perhaps peek through the preprocessed output?  Run "make VERBOSE=1" to
get the failed command, then replace "-c" with "-E" to get just the
preprocessor result, and see where it went awry.

Or if you're willing to kludge, just toss "#define __STDC_LIMIT_MACROS"
at the beginning of BPatch.C.  That will at least get you unstuck. :)
[← Prev in Thread] Current Thread [Next in Thread→]