Re: [DynInst_API:] Improving dyninst rpm packaging


Date: Thu, 28 Jun 2012 13:01:16 -0400
From: William Cohen <wcohen@xxxxxxxxxx>
Subject: Re: [DynInst_API:] Improving dyninst rpm packaging
On 06/26/2012 07:47 PM, Andrew Bernat wrote:
> Give the dyninst_proccontrol branch a pull and build. I've removed all references to dynptr from everything except DepGraph, which is deprecated and shouldn't be built. 
> 
> Drew

Hi Drew,

Thanks for eliminating the dynptr.h includes.

dyninst/common/src/dwarfExpr.C is not building on Fedora 17 with gcc version 4.7.0 20120507:

Compiling ../src/dwarfExpr.C
../src/dwarfExpr.C: In function ‘bool decodeDwarfExpression(Dwarf_Locdesc*, long int*, Dyninst::VariableLocation*, bool&, Dyninst::ProcessReader*, Dyninst::Architecture, long int&)’:
../src/dwarfExpr.C:312:16: error: ‘uint32_t’ was not declared in this scope
../src/dwarfExpr.C:312:25: error: expected ‘;’ before ‘v’
../src/dwarfExpr.C:313:49: error: ‘v’ was not declared in this scope
../src/dwarfExpr.C:317:16: error: ‘uint64_t’ was not declared in this scope
../src/dwarfExpr.C:317:25: error: expected ‘;’ before ‘v’
../src/dwarfExpr.C:318:49: error: ‘v’ was not declared in this scope
../src/dwarfExpr.C:335:16: error: ‘uint8_t’ was not declared in this scope
../src/dwarfExpr.C:335:24: error: expected ‘;’ before ‘v’
../src/dwarfExpr.C:336:49: error: ‘v’ was not declared in this scope
../src/dwarfExpr.C:340:16: error: ‘uint16_t’ was not declared in this scope
../src/dwarfExpr.C:340:25: error: expected ‘;’ before ‘v’
../src/dwarfExpr.C:341:49: error: ‘v’ was not declared in this scope
../src/dwarfExpr.C:345:16: error: ‘uint32_t’ was not declared in this scope
../src/dwarfExpr.C:345:25: error: expected ‘;’ before ‘v’
../src/dwarfExpr.C:346:49: error: ‘v’ was not declared in this scope
../src/dwarfExpr.C:350:16: error: ‘uint64_t’ was not declared in this scope
../src/dwarfExpr.C:350:25: error: expected ‘;’ before ‘v’
../src/dwarfExpr.C:351:49: error: ‘v’ was not declared in this scope
make[1]: *** [dwarfExpr.o] Error 1
make[1]: Leaving directory `/home/wcohen/dyninst/dyninst/common/x86_64-unknown-linux2.4'


Look like need the following include in dwarfExpr.C

#include <stdint.h>

Also missing <cstring> include.  Attached is the patch file used to fix those and get the rpm to build on Fedora 17/rawhide.  Now building on:
  
http://koji.fedoraproject.org/koji/taskinfo?taskID=4206073

-Will






> 
> On Jun 25, 2012, at 11:33 AM, Andrew Bernat wrote:
> 
>> As a short answer, DepGraph is Dep-recated (heh) and can be removed. I've fixed most of the others and can push shortly.
>>
>> Drew
>>
>> --
>> Drew Bernat
>> bernat@xxxxxxxxxxx <mailto:bernat@xxxxxxxxxxx>
>> abernat@xxxxxxxxxxx
>>
>> On Jun 25, 2012, at 10:13 AM, William Cohen <wcohen@xxxxxxxxxx> wrote:
>>
>>> Hi All,
>>>
>>> There is now a testing rpm based on the dyninst/dyninst_proccontrol branch of the dyninst git repo available in Fedora rawhide:
>>>
>>> http://koji.fedoraproject.org/koji/taskinfo?taskID=4194460
>>>
>>> The package currently builds and installs.  Now working through and seeing what other things need to be fixed.
>>>
>>> The dynint install no longer installs the dynptr.h file from  dynutil/h/dynptr.h.  The body of dynptr.h is ifdef'ed out. There are a number of files that still reference "dynptr.h" in the dyninst/dyninst_proccontrol git branch:
>>>
>>> $ find -type f -exec grep include {} /dev/null \; |grep dynptr.h
>>> ./depGraphAPI/src/analyzePDG.C:#include "dynptr.h"
>>> ./depGraphAPI/src/analyzeXPDG.C:#include "dynptr.h"
>>> ./depGraphAPI/src/DDG.C:#include "dynptr.h"
>>> ./depGraphAPI/h/xPDG.h:#include "dynptr.h"
>>> ./depGraphAPI/h/PDG.h:#include "dynptr.h"
>>> ./depGraphAPI/h/DDG.h:#include "dynptr.h"
>>> ./depGraphAPI/h/CDG.h:#include "dynptr.h"
>>> ./depGraphAPI/h/Absloc.h:#include "dynptr.h"
>>> ./depGraphAPI/h/FDG.h:#include "dynptr.h"
>>> ./dataflowAPI/src/RoseInsnFactory.h:#include "dynptr.h"
>>> ./dataflowAPI/h/stackanalysis.h:#include "dynptr.h"
>>> ./dataflowAPI/h/slicing.h:#include "dynptr.h"
>>> ./proccontrol/src/response.h:#include "dynptr.h"
>>> ./proccontrol/h/ProcessSet.h:#include "dynptr.h"
>>> ./proccontrol/h/Event.h:#include "dynptr.h"
>>> ./instructionAPI/src/InstructionDecoderImpl.h:#include "dynptr.h"
>>> ./instructionAPI/src/Operand.C:#include "dynptr.h"
>>> ./instructionAPI/h/Expression.h:#include "dynptr.h"
>>> ./instructionAPI/h/InstructionAST.h:#include "dynptr.h"
>>> ./dyninstAPI/src/ast.h:#include "dynptr.h"
>>> ./dyninstAPI/src/IAPI_to_AST.h:#include "dynptr.h"
>>> ./dyninstAPI/src/Relocation/Widgets/Widget.h:#include "dynptr.h" // shared_ptr
>>> ./dyninstAPI/src/Relocation/Transformers/Transformer.h:#include "dynptr.h" // shared_ptr
>>> ./dyninstAPI/src/Relocation/CFG/RelocBlock.h:#include "dynptr.h" // shared_ptr
>>> ./dyninstAPI/src/Relocation/Relocation.h:#include "dynptr.h"
>>> ./dyninstAPI/src/Relocation/CodeMover.h:#include "dynptr.h"
>>> ./dyninstAPI/src/function.h:#include "dynptr.h"
>>> ./dyninstAPI/h/BPatch_snippet.h:#include "dynptr.h"
>>> ./common/h/singleton_object_pool.h:#include "dynptr.h"
>>> ./parseAPI/src/IA_powerDetails.h:#include "dynptr.h"
>>> ./dynutil/h/dynptr.h:#include "boost/shared_ptr.hpp"
>>> ./dynutil/h/dynptr.h:#include "boost/weak_ptr.hpp"
>>> ./dynutil/h/dynptr.h:#include "boost/enable_shared_from_this.hpp"
>>> ./dynutil/h/AST.h:#include "dynptr.h"
>>>
>>> It looks like the following patch is added in the "#include "dynptr.h":
>>>
>>> http://git.dyninst.org/?p=dyninst.git;a=commit;h=2ead336f3d4d504f89fb14f0ed6aad84c0adc96d
>>>
>>> Shouldn't those dynptr.h includes just go away?
>>>
>>>
>>> -Will
>>> _______________________________________________
>>> Dyninst-api mailing list
>>> Dyninst-api@xxxxxxxxxxx
>>> https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api
>> _______________________________________________
>> Dyninst-api mailing list
>> Dyninst-api@xxxxxxxxxxx
>> https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api
> 
> --
> Andrew Bernat
> Paradyn Project
> bernat@xxxxxxxxxxx <mailto:bernat@xxxxxxxxxxx>
> http://www.cs.wisc.edu/~bernat
> 
> 
> 
> 

diff -up dyninst-7.99/dyninst/common/src/dwarfExpr.C.stdint dyninst-7.99/dyninst/common/src/dwarfExpr.C
--- dyninst-7.99/dyninst/common/src/dwarfExpr.C.stdint	2012-06-27 10:54:00.000000000 -0400
+++ dyninst-7.99/dyninst/common/src/dwarfExpr.C	2012-06-28 12:25:45.384998827 -0400
@@ -29,6 +29,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include <stdint.h>
 #include <stack>
 #include "dynutil/h/dyn_regs.h"
 #include "common/h/dwarfExpr.h"
diff -up dyninst-7.99/dyninst/proccontrol/src/handler.C.stdint dyninst-7.99/dyninst/proccontrol/src/handler.C
--- dyninst-7.99/dyninst/proccontrol/src/handler.C.stdint	2012-06-28 12:35:38.218003723 -0400
+++ dyninst-7.99/dyninst/proccontrol/src/handler.C	2012-06-28 12:36:04.286000028 -0400
@@ -28,6 +28,8 @@
  * License along with this library; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
+
+#include <cstring>
 #include "proccontrol/h/Handler.h"
 #include "proccontrol/h/PCErrors.h"
 #include "proccontrol/h/PCProcess.h"
[← Prev in Thread] Current Thread [Next in Thread→]