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


Date: Sat, 18 Oct 2014 09:50:35 -0500
From: Dave Goodell <davidjgoodell@xxxxxxxxx>
Subject: Re: [DynInst_API:] Compile issue building Dyninst on ORNL titan
> On Oct 18, 2014, at 12:17 AM, Josh Stone <jistone@xxxxxxxxxx> wrote:
> 
>> 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.

(Sorry for not trimming, replying from my phone)

Also adding "-dD" will show you what got #defined where. It usually makes a big difference for me when I'm debugging a preprocessing problem. 

-Dave

> 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. :)
> _______________________________________________
> Dyninst-api mailing list
> Dyninst-api@xxxxxxxxxxx
> https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

[← Prev in Thread] Current Thread [Next in Thread→]