diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index 177af9bacffea1ede4be7a34eb4f1e5cd1e92df5..7246e3519fec67a974ddd084211afa474dfcb866 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 0000000000000000000000000000000000000000..74fa2dfeab43bea9b90c0d1619fdedbaa3189c27 --- /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<Type *> *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(); + } + } +