From 84b33523eceec45134734a354e51e08617df71d7 Mon Sep 17 00:00:00 2001 From: "Mark W. Krentel" Date: Wed, 19 Dec 2018 19:24:43 -0600 Subject: dyninst: patch to build dyninst with older gcc (#10160) * dyninst: patch to build dyninst with older gcc Add 'v9.3.2-auto.patch'. This patch changes some 'auto t: type' usage to the older but equivalent 'type.begin()'. This allows building dyninst 9.3.2 with gcc 4.4 which doesn't support the newer syntax. This patch is harmless with newer gcc. * Fix typo in patch. (My bad for sloppy cut-and-paste.) * Restrict the patch to gcc 4.7 and earlier. gcc 4.8 supports the newer usage and thus doesn't need the patch. --- .../repos/builtin/packages/dyninst/package.py | 1 + .../builtin/packages/dyninst/v9.3.2-auto.patch | 73 ++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 var/spack/repos/builtin/packages/dyninst/v9.3.2-auto.patch (limited to 'var') diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 177af9bacf..7246e3519f 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -53,6 +53,7 @@ class Dyninst(CMakePackage): patch('stat_dysect.patch', when='+stat_dysect') patch('stackanalysis_h.patch', when='@9.2.0') + patch('v9.3.2-auto.patch', when='@9.3.2 %gcc@:4.7.99') # Versions 9.3.x used cotire, but have no knob to turn it off. # Cotire has no real use for one-time builds and can break diff --git a/var/spack/repos/builtin/packages/dyninst/v9.3.2-auto.patch b/var/spack/repos/builtin/packages/dyninst/v9.3.2-auto.patch new file mode 100644 index 0000000000..74fa2dfeab --- /dev/null +++ b/var/spack/repos/builtin/packages/dyninst/v9.3.2-auto.patch @@ -0,0 +1,73 @@ +Change some 'for (const auto& t: type)' usage to the older but +equivalent 'for (auto t = type.begin(); ...)'. This patch allows +dyninst 9.3.2 to build with gcc 4.4 which doesn't support the newer +syntax. + + +diff --git a/dyninstAPI/src/BPatch.C b/dyninstAPI/src/BPatch.C +index ebf7db0c4..49fe69f9a 100644 +--- a/dyninstAPI/src/BPatch.C ++++ b/dyninstAPI/src/BPatch.C +@@ -166,16 +166,16 @@ BPatch::BPatch() + stdTypes = BPatch_typeCollection::getGlobalTypeCollection(); + vector *sTypes = Symtab::getAllstdTypes(); + BPatch_type* type = NULL; +- for(const auto& t: *sTypes) { +- stdTypes->addType(type = new BPatch_type(t)); ++ for(auto t = sTypes->begin(); t != sTypes->end(); ++t) { ++ stdTypes->addType(type = new BPatch_type(*t)); + type->decrRefCount(); + } + delete sTypes; + + builtInTypes = new BPatch_builtInTypeCollection; + sTypes = Symtab::getAllbuiltInTypes(); +- for(const auto& t: *sTypes) { +- builtInTypes->addBuiltInType(type = new BPatch_type(t)); ++ for(auto t = sTypes->begin(); t != sTypes->end(); ++t) { ++ builtInTypes->addBuiltInType(type = new BPatch_type(*t)); + type->decrRefCount(); + } + delete sTypes; +diff --git a/dyninstAPI/src/BPatch_collections.C b/dyninstAPI/src/BPatch_collections.C +index f4e2986a3..129f8b74a 100644 +--- a/dyninstAPI/src/BPatch_collections.C ++++ b/dyninstAPI/src/BPatch_collections.C +@@ -172,12 +172,12 @@ BPatch_typeCollection::~BPatch_typeCollection() + assert(refcount == 0 || + refcount == 1); + +- for(const auto& t: typesByName) { +- t.second->decrRefCount(); ++ for(auto t = typesByName.begin(); t != typesByName.end(); ++t) { ++ t->second->decrRefCount(); + } + +- for(const auto& t: typesByID) { +- t.second->decrRefCount(); ++ for(auto t = typesByID.begin(); t != typesByID.end(); ++t) { ++ t->second->decrRefCount(); + } + } + +diff --git a/symtabAPI/src/Collections.C b/symtabAPI/src/Collections.C +index 7431dd6bf..43c339f45 100644 +--- a/symtabAPI/src/Collections.C ++++ b/symtabAPI/src/Collections.C +@@ -318,12 +318,12 @@ typeCollection::typeCollection() : + typeCollection::~typeCollection() + { + // delete all of the types +- for(const auto& t: typesByName) { +- t.second->decrRefCount(); ++ for(auto t = typesByName.begin(); t != typesByName.end(); ++t) { ++ t->second->decrRefCount(); + } + +- for(const auto& t: typesByID) { +- t.second->decrRefCount(); ++ for(auto t = typesByID.begin(); t != typesByID.end(); ++t) { ++ t->second->decrRefCount(); + } + } + -- cgit v1.2.3-70-g09d2