diff --git a/.dyninst.metadata b/.dyninst.metadata index 2ddd8c9..b7c13ab 100644 --- a/.dyninst.metadata +++ b/.dyninst.metadata @@ -1,2 +1,2 @@ -3e842456203d4702acd4771ae648f4cf382b9a12 SOURCES/dyninst-10.2.1.tar.gz -cbafd2da77de24180cb9c2fb5b600fd8d2cb2fa1 SOURCES/testsuite-10.1.0.tar.gz +f1e6143469813ef6ef96fddeee10fff8caa01c7d SOURCES/dyninst-11.0.0.tar.gz +a8289d9f3106f6f069ae62ba0f601b4a58bf3c7e SOURCES/testsuite-11.0.0.tar.gz diff --git a/.gitignore b/.gitignore index ff9ba99..754c00e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/dyninst-10.2.1.tar.gz -SOURCES/testsuite-10.1.0.tar.gz +SOURCES/dyninst-11.0.0.tar.gz +SOURCES/testsuite-11.0.0.tar.gz diff --git a/SOURCES/dyninst-10.2.1-dbid.patch b/SOURCES/dyninst-10.2.1-dbid.patch deleted file mode 100644 index 78f3997..0000000 --- a/SOURCES/dyninst-10.2.1-dbid.patch +++ /dev/null @@ -1,317 +0,0 @@ -Debuginfod is a lightweight web service that indexes ELF/DWARF debugging -resources by build-id and serves them over HTTP. - -This patch enables dyninst to query debuginfod servers for a file's -separate debuginfo when it otherwise cannot be found. - -This patch also adds a cmake option -DENABLE_DEBUGINFOD to control -whether dyninst is built with debuginfod support. - -This requires having the debuginfod client library (libdebuginfod) -and header installed. - -Debuginfod is distributed with elfutils, for more information see -https://sourceware.org/elfutils/Debuginfod.html ---- - cmake/ElfUtils.cmake | 37 ++++++++--- - cmake/Modules/FindLibDebuginfod.cmake | 76 +++++++++++++++++++++ - cmake/options.cmake | 2 + - elf/CMakeLists.txt | 3 + - elf/src/Elf_X.C | 95 ++++++++++++++++++++------- - 5 files changed, 178 insertions(+), 35 deletions(-) - create mode 100644 cmake/Modules/FindLibDebuginfod.cmake - ---- dyninst-10.2.1/dyninst-10.2.1/cmake/ElfUtils.cmake -+++ dyninst-10.2.1/dyninst-10.2.1/cmake/ElfUtils.cmake -@@ -28,7 +28,7 @@ - # - #====================================================================================== - --if(LibElf_FOUND AND LibDwarf_FOUND) -+if(LibElf_FOUND AND LibDwarf_FOUND AND (LibDebuginfod_FOUND OR NOT ENABLE_DEBUGINFOD)) - return() - endif() - -@@ -37,7 +37,12 @@ if(NOT UNIX) - endif() - - # Minimum acceptable version of elfutils --set(_min_version 0.178) -+if(ENABLE_DEBUGINFOD) -+ set(_min_version 0.179) -+else() -+ set(_min_version 0.178) -+endif() -+ - set(ElfUtils_MIN_VERSION ${_min_version} - CACHE STRING "Minimum acceptable elfutils version") - if(${ElfUtils_MIN_VERSION} VERSION_LESS ${_min_version}) -@@ -62,7 +67,7 @@ set(ElfUtils_LIBRARYDIR "${ElfUtils_ROOT_DIR}/lib" - CACHE PATH "Hint directory that contains the elfutils library files") - - # libelf/dwarf-specific directory hints --foreach(l LibElf LibDwarf) -+foreach(l LibElf LibDwarf LibDebuginfod) - foreach(d ROOT_DIR INCLUDEDIR LIBRARYDIR) - set(${l}_${d} ${ElfUtils_${d}}) - endforeach() -@@ -72,18 +77,30 @@ endforeach() - - find_package(LibElf ${ElfUtils_MIN_VERSION}) - --# Don't search for libdw if we didn't find a suitable libelf -+# Don't search for libdw or libdebuginfod if we didn't find a suitable libelf - if(LibElf_FOUND) - find_package(LibDwarf ${ElfUtils_MIN_VERSION}) -+ if (ENABLE_DEBUGINFOD) -+ find_package(LibDebuginfod ${ElfUtils_MIN_VERSION}) -+ endif() - endif() - - # -------------- SOURCE BUILD ------------------------------------------------- --if(LibElf_FOUND AND LibDwarf_FOUND) -- set(_eu_root ${ElfUtils_ROOT_DIR}) -- set(_eu_inc_dirs ${LibElf_INCLUDE_DIRS} ${LibDwarf_INCLUDE_DIRS}) -- set(_eu_lib_dirs ${LibElf_LIBRARY_DIRS} ${LibDwarf_LIBRARY_DIRS}) -- set(_eu_libs ${LibElf_LIBRARIES} ${LibDwarf_LIBRARIES}) -+if(LibElf_FOUND AND LibDwarf_FOUND AND (NOT ENABLE_DEBUGINFOD OR LibDebuginfod_FOUND)) -+ if(ENABLE_DEBUGINFOD AND LibDebuginfod_FOUND) -+ set(_eu_root ${ElfUtils_ROOT_DIR}) -+ set(_eu_inc_dirs ${LibElf_INCLUDE_DIRS} ${LibDwarf_INCLUDE_DIRS} ${LibDebuginfod_INCLUDE_DIRS}) -+ set(_eu_lib_dirs ${LibElf_LIBRARY_DIRS} ${LibDwarf_LIBRARY_DIRS} ${LibDebuginfod_LIBRARY_DIRS}) -+ set(_eu_libs ${LibElf_LIBRARIES} ${LibDwarf_LIBRARIES} ${LibDebuginfod_LIBRARIES}) -+ else() -+ set(_eu_root ${ElfUtils_ROOT_DIR}) -+ set(_eu_inc_dirs ${LibElf_INCLUDE_DIRS} ${LibDwarf_INCLUDE_DIRS}) -+ set(_eu_lib_dirs ${LibElf_LIBRARY_DIRS} ${LibDwarf_LIBRARY_DIRS}) -+ set(_eu_libs ${LibElf_LIBRARIES} ${LibDwarf_LIBRARIES}) -+ endif() - add_library(ElfUtils SHARED IMPORTED) -+elseif(ENABLE_DEBUGINFOD AND NOT LibDebuginfod_FOUND) -+ message(FATAL_ERROR "Debuginfod enabled but not found") - elseif(NOT (LibElf_FOUND AND LibDwarf_FOUND) AND STERILE_BUILD) - message(FATAL_ERROR "Elfutils not found and cannot be downloaded because build is sterile.") - else() - ---- /dev/null -+++ dyninst-10.2.1/dyninst-10.2.1/cmake/Modules/FindLibDebuginfod.cmake -@@ -0,0 +1,76 @@ -+#======================================================================================== -+# FindDebuginfod -+# ----------- -+# -+# Find debuginfod library and headers -+# -+# The module defines the following variables: -+# -+# This module reads hints about search locations from variables:: -+# -+# LibDebuginfod_ROOT_DIR - Base directory the of libdebuginfod installation -+# LibDebuginfod_INCLUDEDIR - Hint directory that contains the libdebuginfod headers files -+# LibDebuginfod_LIBRARYDIR - Hint directory that contains the libdebuginfod library files -+# -+# and saves search results persistently in CMake cache entries:: -+# -+# LibDebuginfod_FOUND - True if headers and requested libraries were found -+# LibDebuginfod_INCLUDE_DIRS - libdebuginfod include directories -+# LibDebuginfod_LIBRARY_DIRS - Link directories for libdebuginfod libraries -+# LibDebuginfod_LIBRARIES - libdebuginfod library files -+# -+# Utilize package config (e.g. /usr/lib64/pkgconfig/libdebuginfod.pc) to fetch -+# version information. -+# -+#======================================================================================== -+ -+find_package(PkgConfig QUIET) -+pkg_check_modules(PC_Debuginfod QUIET REQUIRED libdebuginfod>=${ElfUtils_MIN_VERSION}) -+set(LibDebuginfod_VERSION "${PC_Debuginfod_VERSION}") -+ -+find_path(LibDebuginfod_INCLUDE_DIRS -+ NAMES -+ debuginfod.h -+ HINTS -+ ${PC_Debuginfod_INCLUDEDIR} -+ ${PC_Debuginfod_INCLUDE_DIRS} -+ ${LibDebuginfod_ROOT_DIR}/include -+ ${LibDebuginfod_ROOT_DIR} -+ ${LibDebuginfod_INCLUDEDIR} -+ PATHS -+ ${DYNINST_SYSTEM_INCLUDE_PATHS} -+ PATH_SUFFIXES -+ ${_path_suffixes} -+ DOC -+ "libdebuginfod include directories") -+ -+find_library(LibDebuginfod_LIBRARIES -+ NAMES -+ libdebuginfod.so.1 libdebuginfod.so -+ HINTS -+ ${PC_Debuginfod_LIBDIR} -+ ${PC_Debuginfod_LIBRARY_DIRS} -+ ${LibDebuginfod_ROOT_DIR}/lib -+ ${LibDebuginfod_ROOT_DIR} -+ ${LibDebuginfod_LIBRARYDIR} -+ PATHS -+ ${DYNINST_SYSTEM_LIBRARY_PATHS} -+ PATH_SUFFIXES -+ ${_path_suffixes}) -+ -+include(FindPackageHandleStandardArgs) -+find_package_handle_standard_args(LibDebuginfod -+ FOUND_VAR -+ LibDebuginfod_FOUND -+ REQUIRED_VARS -+ LibDebuginfod_INCLUDE_DIRS -+ LibDebuginfod_LIBRARIES -+ VERSION_VAR -+ LibDebuginfod_VERSION) -+ -+if(LibDebuginfod_FOUND) -+ set(LibDebuginfod_INCLUDE_DIRS ${LibDebuginfod_INCLUDE_DIRS}) -+ set(LibDebuginfod_LIBRARIES ${LibDebuginfod_LIBRARIES}) -+ get_filename_component(_debuginfod_dir ${LibDebuginfod_LIBRARIES} DIRECTORY) -+ set(LibDebuginfod_LIBRARY_DIRS ${_debuginfod_dir} "${_debuginfod_dir}/elfutils") -+endif() - ---- dyninst-10.2.1/dyninst-10.2.1/cmake/options.cmake -+++ dyninst-10.2.1/dyninst-10.2.1/cmake/options.cmake -@@ -16,6 +16,8 @@ option(USE_COTIRE "Enable Cotire precompiled headers") - - option (ENABLE_LTO "Enable Link-Time Optimization" OFF) - -+option(ENABLE_DEBUGINFOD "Enable debuginfod support" OFF) -+ - # Some global on/off switches - if (LIGHTWEIGHT_SYMTAB) - add_definitions (-DWITHOUT_SYMTAB_API -DWITH_SYMLITE) - ---- dyninst-10.2.1/dyninst-10.2.1/elf/CMakeLists.txt -+++ dyninst-10.2.1/dyninst-10.2.1/elf/CMakeLists.txt -@@ -27,5 +27,8 @@ endif() - add_dependencies(dynElf ElfUtils) - target_link_private_libraries(dynElf ${ElfUtils_LIBRARIES}) - -+if (ENABLE_DEBUGINFOD AND LibDebuginfod_FOUND) -+ add_definitions(-DDEBUGINFOD_LIB) -+endif() - - add_definitions(-DDYNELF_LIB) - - ---- dyninst-10.2.1/dyninst-10.2.1/elf/src/Elf_X.C -+++ dyninst-10.2.1/dyninst-10.2.1/elf/src/Elf_X.C -@@ -47,6 +47,9 @@ - #include - #include - -+#if DEBUGINFOD_LIB -+#include -+#endif - - using namespace std; - using boost::crc_32_type; -@@ -1722,37 +1725,79 @@ bool Elf_X::findDebugFile(std::string origfilename, string &output_name, char* & - } - } - -- if (debugFileFromDebugLink.empty()) -- return false; -+ if (!debugFileFromDebugLink.empty()) { -+ char *mfPathNameCopy = strdup(origfilename.c_str()); -+ string objectFileDirName = dirname(mfPathNameCopy); - -- char *mfPathNameCopy = strdup(origfilename.c_str()); -- string objectFileDirName = dirname(mfPathNameCopy); -+ vector fnames = list_of -+ (objectFileDirName + "/" + debugFileFromDebugLink) -+ (objectFileDirName + "/.debug/" + debugFileFromDebugLink) -+ ("/usr/lib/debug/" + objectFileDirName + "/" + debugFileFromDebugLink); - -- vector fnames = list_of -- (objectFileDirName + "/" + debugFileFromDebugLink) -- (objectFileDirName + "/.debug/" + debugFileFromDebugLink) -- ("/usr/lib/debug/" + objectFileDirName + "/" + debugFileFromDebugLink); -+ free(mfPathNameCopy); - -- free(mfPathNameCopy); -+ for(unsigned i = 0; i < fnames.size(); i++) { -+ bool result = loadDebugFileFromDisk(fnames[i], output_buffer, output_buffer_size); -+ if (!result) -+ continue; - -- for(unsigned i = 0; i < fnames.size(); i++) { -- bool result = loadDebugFileFromDisk(fnames[i], output_buffer, output_buffer_size); -- if (!result) -- continue; -- -- boost::crc_32_type crcComputer; -- crcComputer.process_bytes(output_buffer, output_buffer_size); -- if(crcComputer.checksum() != debugFileCrc) { -- munmap(output_buffer, output_buffer_size); -- continue; -- } -+ boost::crc_32_type crcComputer; -+ crcComputer.process_bytes(output_buffer, output_buffer_size); -+ if(crcComputer.checksum() != debugFileCrc) { -+ munmap(output_buffer, output_buffer_size); -+ continue; -+ } -+ -+ output_name = fnames[i]; -+ cached_debug_buffer = output_buffer; -+ cached_debug_size = output_buffer_size; -+ cached_debug_name = output_name; -+ return true; -+ } -+ } - -- output_name = fnames[i]; -- cached_debug_buffer = output_buffer; -- cached_debug_size = output_buffer_size; -- cached_debug_name = output_name; -- return true; -+#ifdef DEBUGINFOD_LIB -+ if (!debugFileFromBuildID.empty()) { -+ // Given /usr/lib/debug/.buildid/XX/YYYYYY.debug, isolate XXYYYYYY. -+ size_t idx1 = debugFileFromBuildID.find_last_of("/"); -+ size_t idx2 = debugFileFromBuildID.find_last_of("."); -+ -+ if (idx1 == string::npos || idx2 == string::npos -+ || idx1 < 2 || idx1 > idx2) -+ return false; -+ -+ idx1 -= 2; -+ string buildid(debugFileFromBuildID.substr(idx1, idx2 - idx1)); -+ buildid.erase(2, 1); -+ -+ debuginfod_client *client = debuginfod_begin(); -+ if (client == NULL) -+ return false; -+ -+ char *filename; -+ int fd = debuginfod_find_debuginfo(client, -+ (const unsigned char *)buildid.c_str(), -+ 0, &filename); -+ debuginfod_end(client); -+ -+ if (fd >= 0) { -+ string fname = string(filename); -+ free(filename); -+ close(fd); -+ -+ bool result = loadDebugFileFromDisk(fname, -+ output_buffer, -+ output_buffer_size); -+ if (result) { -+ output_name = fname; -+ cached_debug_buffer = output_buffer; -+ cached_debug_size = output_buffer_size; -+ cached_debug_name = output_name; -+ return true; -+ } -+ } - } -+#endif - - return false; - } diff --git a/SOURCES/dyninst-10.2.1-tbb.patch b/SOURCES/dyninst-10.2.1-tbb.patch deleted file mode 100644 index b869c10..0000000 --- a/SOURCES/dyninst-10.2.1-tbb.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- dyninst-10.2.1/dyninst-10.2.1/cmake/ThreadingBuildingBlocks.cmake.orig 2019-05-16 14:40:05.000000000 -0400 -+++ dyninst-10.2.1/dyninst-10.2.1/cmake/ThreadingBuildingBlocks.cmake 2019-05-30 10:45:15.128872098 -0400 -@@ -50,7 +50,7 @@ - if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") - set(_tbb_min_version 2019.7) - else() -- set(_tbb_min_version 2018.6) -+ set(_tbb_min_version 2018.0) - endif() - - set(TBB_MIN_VERSION ${_tbb_min_version} CACHE STRING "Minimum version of TBB (assumes a dotted-decimal format: YYYY.XX)") diff --git a/SOURCES/dyninst-11.0.0-dwarf.patch b/SOURCES/dyninst-11.0.0-dwarf.patch new file mode 100644 index 0000000..7841723 --- /dev/null +++ b/SOURCES/dyninst-11.0.0-dwarf.patch @@ -0,0 +1,11 @@ +Remove extraneous error messages of the form: + err message: .debug_loclists section missing + err message: invalid DWARF +which are repeated in some circumstances without adding useful context + +--- dyninst-11.0.0/symtabAPI/src/dwarfWalker.C.orig 2021-04-08 16:48:12.000000000 -0400 ++++ dyninst-11.0.0/symtabAPI/src/dwarfWalker.C 2021-04-27 12:48:55.643978425 -0400 +@@ -1858,1 +1858,1 @@ +- cerr << "err message: " << dwarf_errmsg(dwarf_errno()) << endl; ++ dwarf_printf("(0x%lx) Error while decoding location: %s\n", id(), dwarf_errmsg(dwarf_errno())); + diff --git a/SOURCES/dyninst-11.0.0-nullbuf.patch b/SOURCES/dyninst-11.0.0-nullbuf.patch new file mode 100644 index 0000000..a461413 --- /dev/null +++ b/SOURCES/dyninst-11.0.0-nullbuf.patch @@ -0,0 +1,25 @@ +rhbz1965455 + +commit 212576147 (refs/bisect/new) +Author: Xiaozhu Meng +Date: Wed May 26 11:26:28 2021 -0500 + + Skip parsing of blocks whose code buffer is null (#1033) + +--- dyninst-11.0.0/parseAPI/src/Parser.C.orig ++++ dyninst-11.0.0/parseAPI/src/Parser.C +@@ -1703,6 +1703,14 @@ Parser::parse_frame_one_iteration(ParseFrame &frame, bool recursive) { + cur->region()->offset() + cur->region()->length() - curAddr; + const unsigned char* bufferBegin = + (const unsigned char *)(func->region()->getPtrToInstruction(curAddr)); ++ if (bufferBegin == nullptr) { ++ // This can happen if jump table is over-approxiated. ++ // We ignore this block for now, and later the over-approximated block ++ // will be removed. ++ parsing_printf("\taddress %lx in a different region from the funcion entry at %lx, skip parsing\n", curAddr, func->addr()); ++ continue; ++ } ++ + InstructionDecoder dec(bufferBegin,size,frame.codereg->getArch()); + + if (!ahPtr) diff --git a/SOURCES/dyninst-11.0.0-tbb.patch b/SOURCES/dyninst-11.0.0-tbb.patch new file mode 100644 index 0000000..6b94f78 --- /dev/null +++ b/SOURCES/dyninst-11.0.0-tbb.patch @@ -0,0 +1,14 @@ +--- dyninst-11.0.0/cmake/Boost.cmake.orig 2021-04-08 16:48:12.000000000 -0400 ++++ dyninst-11.0.0/cmake/Boost.cmake 2021-05-07 12:35:53.124203324 -0400 +@@ -53,3 +53,3 @@ + # Need at least Boost-1.67 because of deprecated headers +-set(_boost_min_version 1.67.0) ++set(_boost_min_version 1.66.0) + +--- dyninst-11.0.0/cmake/ThreadingBuildingBlocks.cmake.orig 2021-04-08 16:48:12.000000000 -0400 ++++ dyninst-11.0.0/cmake/ThreadingBuildingBlocks.cmake 2021-05-07 12:40:13.092183538 -0400 +@@ -52,3 +52,3 @@ + else() +- set(_tbb_min_version 2018.6) ++ set(_tbb_min_version 2018.0) + endif() diff --git a/SOURCES/dyninst-gcc11.patch b/SOURCES/dyninst-gcc11.patch deleted file mode 100644 index 8fc536c..0000000 --- a/SOURCES/dyninst-gcc11.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/testsuite-10.1.0/src/dyninst/test1_3.C b/testsuite-10.1.0/src/dyninst/test1_3.C -index d32f630..b9bd0ba 100644 ---- a/testsuite-10.1.0/src/dyninst/test1_3.C -+++ b/testsuite-10.1.0/src/dyninst/test1_3.C -@@ -134,7 +134,7 @@ test_results_t test1_3_Mutator::executeTest() - } - - // see if we can find the address -- if (expr3_1->getBaseAddr() <= 0) -+ if (expr3_1->getBaseAddr() == 0) - { - logerror("*Error*: address %p for %s is not valid\n", - expr3_1->getBaseAddr(), globalVar); diff --git a/SOURCES/testsuite-10.1.0-386.patch b/SOURCES/testsuite-10.1.0-386.patch deleted file mode 100644 index 7fbee48..0000000 --- a/SOURCES/testsuite-10.1.0-386.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- dyninst-10.2.0/testsuite-10.1.0/CMakeLists.txt -+++ dyninst-10.2.0/testsuite-10.1.0/CMakeLists.txt -@@ -111,7 +111,8 @@ - if(UNIX) - enable_language(ASM-ATT) -- if("${DYNINST_PLATFORM}" MATCHES "i386") -- enable_language(ASM_NASM) -- endif() -+# nasm/yasm are deprecated -+# if("${DYNINST_PLATFORM}" MATCHES "i386") -+# enable_language(ASM_NASM) -+# endif() - elseif(WIN32) - enable_language(ASM_MASM) - ---- dyninst-10.2.0/testsuite-10.1.0/src/instruction/test_instruction_farcall.C -+++ dyninst-10.2.0/testsuite-10.1.0/src/instruction/test_instruction_farcall.C -@@ -96,21 +96,21 @@ test_results_t test_instruction_farcall_Mutator::executeTest() - if(decodedInsns.size() != expectedInsns) // six valid, one invalid - { - logerror("FAILED: Expected %d instructions, decoded %d\n", expectedInsns, decodedInsns.size()); -- for(std::vector::iterator curInsn = decodedInsns.begin(); -+ for(std::vector::iterator curInsn = decodedInsns.begin(); - curInsn != decodedInsns.end(); - ++curInsn) - { -- logerror("\t%s\t", (*curInsn)->format().c_str()); -- for(unsigned j = 0; j < (*curInsn)->size(); ++j) -+ logerror("\t%s\t", (*curInsn).format().c_str()); -+ for(unsigned j = 0; j < (*curInsn).size(); ++j) - { -- logerror("%x ", (*curInsn)->rawByte(j)); -+ logerror("%x ", (*curInsn).rawByte(j)); - } - logerror("\n"); - } - - return FAILED; - } -- if(decodedInsns.back() && decodedInsns.back()->isValid()) -+ if(decodedInsns.size() > 0 && decodedInsns.back().isValid()) - { - logerror("FAILED: Expected instructions to end with an invalid instruction, but they didn't"); - return FAILED; diff --git a/SOURCES/testsuite-10.1.0-gettid.patch b/SOURCES/testsuite-10.1.0-gettid.patch deleted file mode 100644 index 9b75b25..0000000 --- a/SOURCES/testsuite-10.1.0-gettid.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- dyninst-10.1.0/testsuite-10.1.0/src/proccontrol/pcontrol_mutatee_tools.c.orig 2019-05-31 05:20:00.492379706 +0200 -+++ dyninst-10.1.0/testsuite-10.1.0/src/proccontrol/pcontrol_mutatee_tools.c 2019-05-31 05:10:11.354826668 +0200 -@@ -62,9 +62,9 @@ - #if !defined(os_windows_test) - #include - --static unsigned int gettid(){ -- return (unsigned int)pthread_self(); --} -+// static unsigned int gettid(){ -+// return (unsigned int)pthread_self(); -+// } - #endif - - thread_t threads[MAX_POSSIBLE_THREADS]; diff --git a/SOURCES/testsuite-10.1.0-throw.patch b/SOURCES/testsuite-10.1.0-throw.patch deleted file mode 100644 index 886e9b5..0000000 --- a/SOURCES/testsuite-10.1.0-throw.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- dyninst-10.2.0/testsuite-10.1.0/src/test_lib.h -+++ dyninst-10.2.0/testsuite-10.1.0/src/test_lib.h -@@ -158,3 +158,3 @@ - -- TESTLIB_DLL_EXPORT virtual ~LocErr() THROW; -+ TESTLIB_DLL_EXPORT virtual ~LocErr() throw(); - ---- dyninst-10.2.0/testsuite-10.1.0/src/test_lib.C -+++ dyninst-10.2.0/testsuite-10.1.0/src/test_lib.C -@@ -112,3 +112,3 @@ - --LocErr::~LocErr() THROW -+LocErr::~LocErr() throw() - {} diff --git a/SOURCES/testsuite-11.0.0-386.patch b/SOURCES/testsuite-11.0.0-386.patch new file mode 100644 index 0000000..b2be761 --- /dev/null +++ b/SOURCES/testsuite-11.0.0-386.patch @@ -0,0 +1,15 @@ +--- testsuite-11.0.0/CMakeLists.txt ++++ testsuite-11.0.0/CMakeLists.txt +@@ -111,7 +111,8 @@ + if(UNIX) + enable_language(ASM-ATT) +- if("${DYNINST_PLATFORM}" MATCHES "i386") +- enable_language(ASM_NASM) +- endif() ++# nasm/yasm are deprecated ++# if("${DYNINST_PLATFORM}" MATCHES "i386") ++# enable_language(ASM_NASM) ++# endif() + elseif(WIN32) + enable_language(ASM_MASM) + diff --git a/SOURCES/testsuite-11.0.0-test12.patch b/SOURCES/testsuite-11.0.0-test12.patch new file mode 100644 index 0000000..b336435 --- /dev/null +++ b/SOURCES/testsuite-11.0.0-test12.patch @@ -0,0 +1,14 @@ +--- testsuite-11.0.0/CMakeLists.txt ++++ testsuite-11.0.0/CMakeLists.txt +@@ -341,5 +341,10 @@ + add_library(Test12 SHARED src/dyninst/libTest12.c) + add_library(dyninstAPI_RT SHARED IMPORTED) +- set_target_properties(dyninstAPI_RT PROPERTIES IMPORTED_LOCATION "${Dyninst_DIR}/../../libdyninstAPI_RT.so") ++ set(_path_suffixes dyninst) ++ find_library(dyninstAPI_RT_LIBRARY ++ NAMES libdyninstAPI_RT.so ++ PATHS ${Dyninst_DIR}/../.. ++ PATH_SUFFIXES ${_path_suffixes}) ++ set_target_properties(dyninstAPI_RT PROPERTIES IMPORTED_LOCATION ${dyninstAPI_RT_LIBRARY}) + target_link_libraries(Test12 dyninstAPI_RT) + install(TARGETS Test12 diff --git a/SPECS/dyninst.spec b/SPECS/dyninst.spec index f1f9c1f..4ae1885 100644 --- a/SPECS/dyninst.spec +++ b/SPECS/dyninst.spec @@ -2,24 +2,22 @@ Summary: An API for Run-time Code Generation License: LGPLv2+ Name: dyninst Group: Development/Libraries -Release: 2%{?dist} +Release: 3%{?dist} URL: http://www.dyninst.org -Version: 10.2.1 +Version: 11.0.0 ExclusiveArch: %{ix86} x86_64 ppc64le aarch64 -%define __testsuite_version 10.1.0 Source0: https://github.com/dyninst/dyninst/archive/v%{version}/dyninst-%{version}.tar.gz -Source1: https://github.com/dyninst/testsuite/archive/v10.1.0/testsuite-%{__testsuite_version}.tar.gz +Source1: https://github.com/dyninst/testsuite/archive/%{version}/testsuite-%{version}.tar.gz -Patch1: %{name}-gcc11.patch -Patch2: %{name}-10.2.1-dbid.patch -Patch3: testsuite-10.1.0-gettid.patch -Patch4: testsuite-10.1.0-386.patch -Patch5: testsuite-10.1.0-throw.patch -Patch6: %{name}-10.2.1-tbb.patch +Patch1: testsuite-11.0.0-test12.patch +Patch2: testsuite-11.0.0-386.patch +Patch3: dyninst-11.0.0-dwarf.patch +Patch4: dyninst-11.0.0-tbb.patch +Patch5: dyninst-11.0.0-nullbuf.patch %global dyninst_base dyninst-%{version} -%global testsuite_base testsuite-%{__testsuite_version} +%global testsuite_base testsuite-%{version} BuildRequires: gcc-c++ BuildRequires: elfutils-devel @@ -91,12 +89,16 @@ making sure that dyninst works properly. %setup -q -n %{name}-%{version} -c %setup -q -T -D -a 1 -%patch1 -p1 -b .gcc11 -%patch2 -p1 -b .dbid -%patch3 -p1 -b .gettid -%patch4 -p1 -b .386 -%patch5 -p1 -b .throw -%patch6 -p1 -b .tbb +pushd %{testsuite_base} +%patch1 -p1 -b .test12 +%patch2 -p1 -b .386 +popd + +pushd %{dyninst_base} +%patch3 -p1 -b .dwarf +%patch4 -p1 -b .tbb +%patch5 -p1 -b .nullbuf +popd # cotire seems to cause non-deterministic gcc errors # https://bugzilla.redhat.com/show_bug.cgi?id=1420551 @@ -205,6 +207,15 @@ find %{buildroot}%{_libdir}/dyninst/testsuite/ \ %attr(644,root,root) %{_libdir}/dyninst/testsuite/*.a %changelog +* Wed Jun 30 2021 Stan Cox - 11.0.0-3 +- Related: rhbz1965455 + +* Mon Jun 28 2021 Stan Cox - 11.0.0-2 +- Related: rhbz1965455, rhbz1965501 + +* Fri Apr 30 2021 Stan Cox - 11.0.0-1 +- Update to 11.0.0 + * Fri Nov 06 2020 Stan Cox - 10.2.1-2 - Enable debuginfod