Projects
Mega:24.03:SP1:Everything
dyninst
_service:tar_scm:dyninst-eliminate-deprecated-C...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:dyninst-eliminate-deprecated-C-function-objects-1331.patch of Package dyninst
From 6436c734eef50d55ed6c562aa3fabf0c7039c50c Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" <kupsch@cs.wisc.edu> Date: Wed, 7 Dec 2022 13:28:08 -0600 Subject: [PATCH] eliminate deprecated C++ function objects (#1331) fix function objects that were deprecate in C++ 11 and removed in C++ 17 - replace mem_fun with mem_fn - eliminate binary_function and unary_function base classes - use const iterator when constructing boost::transform_iterator --- dyninstAPI/h/BPatch_basicBlock.h | 4 +++- dyninstAPI/src/StackMod/StackLocation.h | 5 +++-- dyninstAPI/src/addressSpace.C | 10 +++++----- .../AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C | 2 +- .../src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C | 4 ++-- instructionAPI/src/InstructionDecoder-aarch64.C | 2 +- instructionAPI/src/InstructionDecoder-power.C | 6 +++--- symtabAPI/h/Aggregate.h | 2 +- symtabAPI/src/Aggregate.C | 12 ++++++------ symtabAPI/src/Object-elf.C | 4 ++-- 10 files changed, 27 insertions(+), 24 deletions(-) diff --git a/dyninstAPI/h/BPatch_basicBlock.h b/dyninstAPI/h/BPatch_basicBlock.h index 37547d40c..de26fd81f 100644 --- a/dyninstAPI/h/BPatch_basicBlock.h +++ b/dyninstAPI/h/BPatch_basicBlock.h @@ -89,8 +89,10 @@ struct comparison <BPatch_basicBlock *> { */ class BPatch_flowGraph; -struct BPATCH_DLL_EXPORT insnPredicate : public std::unary_function<Dyninst::InstructionAPI::Instruction, bool> +struct BPATCH_DLL_EXPORT insnPredicate { + using result_type = bool; + using argument_type = Dyninst::InstructionAPI::Instruction; virtual result_type operator()(argument_type arg) = 0; virtual ~insnPredicate() {} diff --git a/dyninstAPI/src/StackMod/StackLocation.h b/dyninstAPI/src/StackMod/StackLocation.h index 4b1d731e6..51775e261 100644 --- a/dyninstAPI/src/StackMod/StackLocation.h +++ b/dyninstAPI/src/StackMod/StackLocation.h @@ -132,7 +132,8 @@ class StackLocation { ValidPCRange* _valid; }; -struct less_StackLocation: public std::binary_function<StackLocation*, StackLocation*, bool> { +struct less_StackLocation +{ bool operator()(StackLocation* a, StackLocation* b) const { if (a->isStackMemory() && b->isStackMemory()) { if (a->off().height() == b->off().height()) { @@ -178,7 +179,7 @@ class tmpObject ValidPCRange* _valid; }; -struct less_tmpObject: public std::binary_function<tmpObject, tmpObject, bool> +struct less_tmpObject { bool operator()(tmpObject a, tmpObject b) const { if (a.offset() < b.offset()) { diff --git a/dyninstAPI/src/addressSpace.C b/dyninstAPI/src/addressSpace.C index 3b4cf9eba..8978262f6 100644 --- a/dyninstAPI/src/addressSpace.C +++ b/dyninstAPI/src/addressSpace.C @@ -284,7 +284,7 @@ void AddressSpace::inferiorFreeCompact() { unsigned i, nbuf = freeList.size(); /* sort buffers by address */ - std::sort(freeList.begin(), freeList.end(), ptr_fun(heapItemLessByAddr)); + std::sort(freeList.begin(), freeList.end(), heapItemLessByAddr); /* combine adjacent buffers */ bool needToCompact = false; @@ -371,7 +371,7 @@ void AddressSpace::addHeap(heapItem *h) { heap_.heapFree.push_back(h2); /* When we add an item to heapFree, make sure it remains in sorted order */ - std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), ptr_fun(heapItemLessByAddr)); + std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), heapItemLessByAddr); heap_.totalFreeMemAvailable += h2->length; } @@ -425,7 +425,7 @@ Address AddressSpace::inferiorMallocInternal(unsigned size, } /* When we update an item in heapFree, make sure it remains in sorted order */ - std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), ptr_fun(heapItemLessByAddr)); + std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), heapItemLessByAddr); // add allocated block to active list h->length = size; @@ -455,7 +455,7 @@ void AddressSpace::inferiorFreeInternal(Address block) { heap_.heapFree.push_back(h); /* When we add an item to heapFree, make sure it remains in sorted order */ - std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), ptr_fun(heapItemLessByAddr)); + std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), heapItemLessByAddr); heap_.totalFreeMemAvailable += h->length; heap_.freed += h->length; @@ -561,7 +561,7 @@ bool AddressSpace::inferiorShrinkBlock(heapItem *h, heap_.heapFree.push_back(freeEnd); /* When we add an item to heapFree, make sure it remains sorted */ - std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), ptr_fun(heapItemLessByAddr)); + std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), heapItemLessByAddr); } heap_.totalFreeMemAvailable += shrink; diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C index f62b1f546..daf7a4b7d 100644 --- a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C @@ -235,7 +235,7 @@ namespace Dyninst { mainDecode(); if(entryToCategory(insn_in_progress->getOperation().getID())==c_BranchInsn){ //cout << "Is Branch Instruction !! , name = " << insn_in_progress -> getOperation().mnemonic << endl; - //std::mem_fun(decode_lookup_table[instr_family])(this); + //std::mem_fn(decode_lookup_table[instr_family])(this); } b.start += insn_in_progress->size(); return *insn_in_progress; diff --git a/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C index 3093ece41..ed7cbed78 100644 --- a/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C +++ b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C @@ -552,7 +552,7 @@ namespace Dyninst { bool InstructionDecoder_amdgpu_vega::decodeOperands(const amdgpu_vega_insn_entry & insn_entry) { if(insn_entry.operandCnt!=0){ for (std::size_t i =0 ; i < insn_entry.operandCnt; i++){ - std::mem_fun(insn_entry.operands[i])(this); + std::mem_fn(insn_entry.operands[i])(this); } } return true; @@ -721,7 +721,7 @@ namespace Dyninst { setupInsnWord(b); mainDecodeOpcode(b); if(entryToCategory(insn_in_progress->getOperation().getID())==c_BranchInsn){ - std::mem_fun(decode_lookup_table[instr_family])(this); + std::mem_fn(decode_lookup_table[instr_family])(this); } b.start += insn_in_progress->size(); return *insn_in_progress; diff --git a/instructionAPI/src/InstructionDecoder-aarch64.C b/instructionAPI/src/InstructionDecoder-aarch64.C index 53a831c3c..2e8935923 100644 --- a/instructionAPI/src/InstructionDecoder-aarch64.C +++ b/instructionAPI/src/InstructionDecoder-aarch64.C @@ -2960,7 +2960,7 @@ Expression::Ptr InstructionDecoder_aarch64::makeMemRefExPair2(){ skipRm = true; for (std::size_t i = 0; i < insn_table_entry.operandCnt; i++) { - std::mem_fun(insn_table_entry.operands[i])(this); + std::mem_fn(insn_table_entry.operands[i])(this); } if (insn_table_index == 0) diff --git a/instructionAPI/src/InstructionDecoder-power.C b/instructionAPI/src/InstructionDecoder-power.C index ffd38bcf3..34b903d11 100644 --- a/instructionAPI/src/InstructionDecoder-power.C +++ b/instructionAPI/src/InstructionDecoder-power.C @@ -297,7 +297,7 @@ namespace Dyninst const power_entry* current = &power_entry::main_opcode_table[field<0,5>(insn)]; while(current->next_table) { - current = &(std::mem_fun(current->next_table)(this)); + current = &(std::mem_fn(current->next_table)(this)); } if (findRAAndRS(current)) { isRAWritten = true; @@ -314,7 +314,7 @@ namespace Dyninst curFn != current->operands.end(); ++curFn) { - std::mem_fun(*curFn)(this); + std::mem_fn(*curFn)(this); } if(current->op == power_op_bclr) { @@ -1429,7 +1429,7 @@ using namespace boost::assign; const power_entry* current = &power_entry::main_opcode_table[field<0,5>(insn)]; while(current->next_table) { - current = &(std::mem_fun(current->next_table)(this)); + current = &(std::mem_fn(current->next_table)(this)); } insn_in_progress = makeInstruction(current->op, current->mnemonic, 4, reinterpret_cast<unsigned char*>(&insn)); if(current->op == power_op_b || diff --git a/symtabAPI/h/Aggregate.h b/symtabAPI/h/Aggregate.h index bcc930252..80caeb34b 100644 --- a/symtabAPI/h/Aggregate.h +++ b/symtabAPI/h/Aggregate.h @@ -86,7 +86,7 @@ class SYMTAB_EXPORT Aggregate //std::vector<std::string> getAllMangledNames(); //std::vector<std::string> getAllPrettyNames(); //std::vector<std::string> getAllTypedNames(); - typedef boost::transform_iterator<std::const_mem_fun_t<std::string, Symbol>, std::vector<Symbol*>::const_iterator> name_iter; + using name_iter = boost::transform_iterator<decltype(std::mem_fn(&Symbol::getPrettyName)), std::vector<Symbol*>::const_iterator>; name_iter mangled_names_begin() const; name_iter mangled_names_end() const; name_iter pretty_names_begin() const; diff --git a/symtabAPI/src/Aggregate.C b/symtabAPI/src/Aggregate.C index 2fc69358d..f0de0b841 100644 --- a/symtabAPI/src/Aggregate.C +++ b/symtabAPI/src/Aggregate.C @@ -307,26 +307,26 @@ bool Aggregate::operator==(const Aggregate &a) Aggregate::name_iter Aggregate::mangled_names_begin() const { - return boost::make_transform_iterator(symbols_.begin(), std::mem_fun(&Symbol::getMangledName)); + return boost::make_transform_iterator(symbols_.cbegin(), std::mem_fn(&Symbol::getMangledName)); } Aggregate::name_iter Aggregate::mangled_names_end() const { - return boost::make_transform_iterator(symbols_.end(), std::mem_fun(&Symbol::getMangledName)); + return boost::make_transform_iterator(symbols_.cend(), std::mem_fn(&Symbol::getMangledName)); } Aggregate::name_iter Aggregate::pretty_names_begin() const { - return boost::make_transform_iterator(symbols_.begin(), std::mem_fun(&Symbol::getPrettyName)); + return boost::make_transform_iterator(symbols_.cbegin(), std::mem_fn(&Symbol::getPrettyName)); } Aggregate::name_iter Aggregate::pretty_names_end() const { - return boost::make_transform_iterator(symbols_.end(), std::mem_fun(&Symbol::getPrettyName)); + return boost::make_transform_iterator(symbols_.cend(), std::mem_fn(&Symbol::getPrettyName)); } Aggregate::name_iter Aggregate::typed_names_begin() const { - return boost::make_transform_iterator(symbols_.begin(), std::mem_fun(&Symbol::getTypedName)); + return boost::make_transform_iterator(symbols_.cbegin(), std::mem_fn(&Symbol::getTypedName)); } Aggregate::name_iter Aggregate::typed_names_end() const { - return boost::make_transform_iterator(symbols_.end(), std::mem_fun(&Symbol::getTypedName)); + return boost::make_transform_iterator(symbols_.cend(), std::mem_fn(&Symbol::getTypedName)); } diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 9eb7a1dc8..4e73e7a13 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -129,7 +129,7 @@ const char *pdelf_get_shnames(Elf_X *elf) { // // Compare function for use with the Vector<T> sort method. // -struct SectionHeaderSortFunction : public binary_function<Elf_X_Shdr *, Elf_X_Shdr *, bool> { +struct SectionHeaderSortFunction { bool operator()(Elf_X_Shdr *hdr1, Elf_X_Shdr *hdr2) { return (hdr1->sh_addr() < hdr2->sh_addr()); } @@ -3122,7 +3122,7 @@ int read_except_table_gcc3( } -struct exception_compare : public binary_function<const ExceptionBlock &, const ExceptionBlock &, bool> { +struct exception_compare { bool operator()(const ExceptionBlock &e1, const ExceptionBlock &e2) const { if (e1.tryStart() < e2.tryStart()) return true; -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2