6 days agoDocumentation updates for v12.2.1 patch release (#1328) master v12.2.1
Tim Haines [Mon, 21 Nov 2022 19:46:38 +0000 (13:46 -0600)]
Documentation updates for v12.2.1 patch release (#1328)

* Doc updates for v12.2.1 release
* Update formatting for cmake/warnings.cmake

11 days agoFix shadowing of 'filename' member in Elf_X::findDebugFile (#1325)
Tim Haines [Thu, 17 Nov 2022 04:38:58 +0000 (22:38 -0600)]
Fix shadowing of 'filename' member in Elf_X::findDebugFile (#1325)


12 days agoIgnore unknown pragma warnings when building without OpenMP (#1324)
Tim Haines [Tue, 15 Nov 2022 22:05:57 +0000 (16:05 -0600)]
Ignore unknown pragma warnings when building without OpenMP (#1324)

Oddly, these also show up when ENABLE_STATIC_LIBS=OFF and USE_OpenMP=ON.

13 days agofix Instruction class to allow valid assignment (#1323)
kupsch [Tue, 15 Nov 2022 03:53:17 +0000 (21:53 -0600)]
fix Instruction class to allow valid assignment (#1323)

* Allow the Instruction class to allow correct assignment semantics by
  changing a member from a reference to a pointer

* The formatter member is a reference (to a singleton) that can not be
  changed after it is initialized.  Assignment to this member wrongly
  assigns to the previously bound referent singleton and wrongly slices
  the rhs to the ArchSpecificFormatter base class.  The base class has
  no data members, and since the assignment does not change the type of
  the object (its vtable), it appears to have no effect.  Also a default
  constructed Instuction object sets the formatter to the x86 formatter
  even if the host was not x86.

* Change Instruction::format to return an error string if the arch is
  set to Arch_none (default constructed, to prevent nullptr dereference)

2 weeks agoParseAPI: improve tail call recognition (#1315)
John Mellor-Crummey [Fri, 11 Nov 2022 22:58:31 +0000 (16:58 -0600)]
ParseAPI: improve tail call recognition (#1315)

Don't consider a branch that is a self-loop as a potential tail call.

2 weeks agoSupport hash_compare concept from TBB >= 2021.1 (#1316)
Tim Haines [Fri, 11 Nov 2022 20:04:20 +0000 (14:04 -0600)]
Support hash_compare concept from TBB >= 2021.1 (#1316)

* Make keys const for dyn_c_hashmap allocator

This is to match the updated allocator definition in TBB from OneAPI

* Make a custom hasher

2 weeks agoRemove unused TBB from parseAPI (#1317)
Tim Haines [Wed, 9 Nov 2022 18:38:05 +0000 (12:38 -0600)]
Remove unused TBB from parseAPI (#1317)

ParseAPI doesn't use TBB directly. This only compiled because of incidental inclusion of TBB via the global CMake config.

2 weeks agoUse dyn_c_hash_map in DwarfWalker (#1318)
Tim Haines [Wed, 9 Nov 2022 18:37:44 +0000 (12:37 -0600)]
Use dyn_c_hash_map in DwarfWalker (#1318)

2 weeks agoDirectly link to common in dynC_API (#1319)
Tim Haines [Wed, 9 Nov 2022 18:37:23 +0000 (12:37 -0600)]
Directly link to common in dynC_API (#1319)

2 weeks agoManually add hex prefix when formatting an Operand (#1313)
bbiiggppiigg [Wed, 9 Nov 2022 15:45:22 +0000 (15:45 +0000)]
Manually add hex prefix when formatting an Operand (#1313)

2 weeks agoAllow assignment conversion without framepointer (#1314)
kupsch [Wed, 9 Nov 2022 15:44:57 +0000 (09:44 -0600)]
Allow assignment conversion without framepointer (#1314)

* When performing assignment conversion of an instruction and with stack
  frame analysis, the call would assert if the frame pointer (or stack
  pointer) was TOP.  Change to treat this as unknown (just as a bottom
  value is).

4 weeks agoFix incorrect format string in Result.h for u48 / s48 / u64 / s64 (#1311)
bbiiggppiigg [Wed, 26 Oct 2022 13:57:13 +0000 (13:57 +0000)]
Fix incorrect format string in Result.h for u48 / s48 / u64 / s64 (#1311)

4 weeks agoDo not build dyninstAPI_RT as separate CMake project (#1309)
Tim Haines [Mon, 24 Oct 2022 14:55:44 +0000 (09:55 -0500)]
Do not build dyninstAPI_RT as separate CMake project (#1309)

* Move dyninstAPI_RT project into Dyninst

* Always treat .S files as C files
    This should have been removed by fc790218e in 2016.

5 weeks agoFix possible null pointer access in BPatch_module::findFunctionByAddress (#1308)
Tim Haines [Fri, 21 Oct 2022 21:31:22 +0000 (16:31 -0500)]
Fix possible null pointer access in BPatch_module::findFunctionByAddress (#1308)

* Fix null pointer access in BPatch_module::findFunctionByAddress

'isValid' checks that 'mod' is not null. The code here only runs if mod _is_ null.

5 weeks agoSearch 'elfutils' subdirectory for libdebuginfod/includedir (#1307)
Tim Haines [Fri, 21 Oct 2022 19:12:00 +0000 (14:12 -0500)]
Search 'elfutils' subdirectory for libdebuginfod/includedir (#1307)

* Search 'elfutils' subdirectory for libdebuginfod/includedir

Debian distributions put the elfutils includes under <prefix>/include/elfutils. This just adds the <includedir>/elfutils subdirectory to the search where <includedir> is returned from pkg-config.

7 weeks agoFix public header deletes (#1301)
Tim Haines [Wed, 5 Oct 2022 15:06:01 +0000 (10:06 -0500)]
Fix public header deletes (#1301)

* Undelete stackwalk/h/local_var.h

This was incorrectly removed by d42b65910.

* Undelete parseAPI/h/GraphAdapter.h

This was incorrectly removed by d42b65910. It is still needed if

7 weeks agofix location list PC range values (#1297)
kupsch [Wed, 5 Oct 2022 14:28:50 +0000 (09:28 -0500)]
fix location list PC range values (#1297)

- in some instances the valid PC range for the variable was being offset
  twice by the base address of the shared object; the value returned by
  libdw already adds this offset and then dyninst adds it again in some

3 months agoDocker - use ppa for gcc11 (#1291)
Weixiao.zhan [Wed, 17 Aug 2022 16:53:56 +0000 (11:53 -0500)]
Docker - use ppa for gcc11 (#1291)

4 months agoUpdates for v12.2.0 release (#1289) v12.2.0 v12.2.0-rc1
Tim Haines [Thu, 28 Jul 2022 21:18:46 +0000 (16:18 -0500)]
Updates for v12.2.0 release (#1289)

* Update SO version
* Update docs

4 months agoAdd exec entry point to parse hints is missing
James A. Kupsch [Mon, 11 Jul 2022 04:37:37 +0000 (23:37 -0500)]
Add exec entry point to parse hints is missing

Always include an an executable's entry point as a parsing hint,
otherwise for stripped binaries no functions are parsed.

4 months agofix races with parallel analysis of cubins (#1284)
John Mellor-Crummey [Tue, 12 Jul 2022 00:07:00 +0000 (19:07 -0500)]
fix races with parallel analysis of cubins (#1284)

6 months agoDocker: make build.sh verbose, fix file copy bug in Dockerfile.test (#1273)
Jonathan R. Madsen [Wed, 11 May 2022 18:23:34 +0000 (13:23 -0500)]
Docker: make build.sh verbose, fix file copy bug in Dockerfile.test (#1273)

- remove old code before copying code into testing container
- build with verbosity in build.sh (this helps when build errors occur)

6 months agoRemove endian CMake check (#1270)
Tim Haines [Fri, 6 May 2022 20:52:11 +0000 (15:52 -0500)]
Remove endian CMake check (#1270)

The usage of the macros was removed by d233ae759 in 2020.

6 months agoUpdate and enforce formatting of CMake files (#1267)
Tim Haines [Thu, 5 May 2022 19:38:54 +0000 (14:38 -0500)]
Update and enforce formatting of CMake files (#1267)

Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com>
6 months agoFix bug in processing library paths in FindLibIberty.cmake (#1266)
Tim Haines [Thu, 5 May 2022 05:27:45 +0000 (00:27 -0500)]
Fix bug in processing library paths in FindLibIberty.cmake (#1266)

This was originally part of #1263

Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com>
6 months agoFix decoding of DWARF expressions into machine registers for Intel GPUs (#1262)
John Mellor-Crummey [Tue, 3 May 2022 18:33:58 +0000 (13:33 -0500)]
Fix decoding of DWARF expressions into machine registers for Intel GPUs (#1262)

We ignore the encoding as we do for all of the other GPUs. This case was missing and so hit the assert.

7 months agoDocker: don't use autamus cache (#1259)
Tim Haines [Wed, 27 Apr 2022 04:03:56 +0000 (23:03 -0500)]
Docker: don't use autamus cache (#1259)

The public keys have been removed.

7 months agoRemove unused build options (#1253)
Tim Haines [Tue, 12 Apr 2022 19:06:30 +0000 (14:06 -0500)]
Remove unused build options (#1253)


This isn't sufficient to create the documentation as some of it is
contained in MS Word files.


We don't distrubute tarballs anymore. That's handled by GitHub.

7 months agoFix dyninstAPI_RT files to build with older glibc (#1252)
kupsch [Fri, 8 Apr 2022 22:12:20 +0000 (17:12 -0500)]
Fix dyninstAPI_RT files to build with older glibc (#1252)

Replace feature test macro _DEFAULT_SOURCE with _GNU_SOURCE to support older version of glibc

7 months agoRedo finalization to get correct function boundiaries when (#1249)
Xiaozhu Meng [Thu, 7 Apr 2022 21:24:10 +0000 (16:24 -0500)]
Redo finalization to get correct function boundiaries when (#1249)

there are many tail call correction

7 months agoFix format string errors in stackwalk/callchecker.C (#1250)
Tim Haines [Thu, 7 Apr 2022 20:44:55 +0000 (15:44 -0500)]
Fix format string errors in stackwalk/callchecker.C (#1250)

These are only present when SW_ANALYSIS_STEPPER=OFF.

7 months agoMake dyninstAPI_RT files build with standard C (#1246)
James A. Kupsch [Wed, 6 Apr 2022 21:26:02 +0000 (16:26 -0500)]
Make dyninstAPI_RT files build with standard C (#1246)

- use same language standards as the rest of Dyninst
- define _DEFAULT_SOURCE in some dyninstAPI_RT source files so functions
  and macros used are defined when using standard C

7 months agoAdd cmake options for C/C++ language standards (#1246)
James A. Kupsch [Mon, 4 Apr 2022 21:38:49 +0000 (16:38 -0500)]
Add cmake options for C/C++ language standards (#1246)

Add cmake options to set C/C++ language standard versions used to build
to facilitate testing.

- DYNINST_C_LANGUAGE_STANDARD cmake option:  C Standard version
- DYNINST_CXX_LANGUAGE_STANDARD cmake option:  C++ Standard version

7 months agoUse bfd linker for LTO (#1248)
Tim Haines [Thu, 7 Apr 2022 16:20:58 +0000 (11:20 -0500)]
Use bfd linker for LTO (#1248)

The gold linker crashes and is no longer supported.

7 months agoCleanup (remove) ancient linux kernel support (#1241)
kupsch [Wed, 6 Apr 2022 15:21:30 +0000 (10:21 -0500)]
Cleanup (remove) ancient linux kernel support (#1241)

- Remove check and message for ancient linux kernel
- Remove support for old mechanism to find process's tasks

7 months agoremove unused files containing pragmas (#1240)
James A. Kupsch [Thu, 31 Mar 2022 14:03:20 +0000 (09:03 -0500)]
remove unused files containing pragmas (#1240)

7 months agoRemove unneeded #pragma's (#1240)
James A. Kupsch [Thu, 31 Mar 2022 14:02:15 +0000 (09:02 -0500)]
Remove unneeded #pragma's (#1240)

- Remove once and interface pragmas
- Replace use of "external/stdint-win.h" and "external/inttypes.h" with
  <stdint.h> and <inttypes.h>

7 months agoAdd compiler warning related cmake options (#1239)
James A. Kupsch [Mon, 4 Apr 2022 14:43:15 +0000 (09:43 -0500)]
Add compiler warning related cmake options (#1239)

- DYNINST_WARNINGS_AS_ERRORS option:  if set, treat warnings as errors
- DYNINST_EXTRA_WARNINGS option:  additional warning options to test for
  and use if valid with the current compiler

7 months agoAdd cmake option to disable diagnostic suppressions (#1239)
James A. Kupsch [Thu, 31 Mar 2022 18:58:27 +0000 (13:58 -0500)]
Add cmake option to disable diagnostic suppressions (#1239)

  disable all warning suppressions and frame size limit overrides

7 months agoFix frame-larger-than warning (#1239)
James A. Kupsch [Wed, 23 Mar 2022 04:20:05 +0000 (23:20 -0500)]
Fix frame-larger-than warning (#1239)

- Increase frame size max when using gcc 6 for non-debug builds and
  for all debug builds (needed for rhel's gcc) to compile

7 months agoRemove MSC compiler warning suppressions (#1239)
James A. Kupsch [Wed, 30 Mar 2022 03:53:24 +0000 (22:53 -0500)]
Remove MSC compiler warning suppressions (#1239)

Likely no longer needed with current MSC compiler and will hide
problems if MSC is used.

- Removed diagnostic suppressing pragmas
- Removed compiler command line suppression options

7 months agoImprove compiler diagnostic suppression handling (#1239)
James A. Kupsch [Wed, 30 Mar 2022 03:51:18 +0000 (22:51 -0500)]
Improve compiler diagnostic suppression handling (#1239)

- Create compiler specific diagnostic suppression macros to suppress a
  type of warning for a region of code that are consistently defined
  based on the build environment.
- Replace current multi-line preprocessor #if and #pragma statements
  with one macro.
- Add suppression for warnings in instructionAPI/src/Register.C
  when using gcc 6-8.

7 months agoRemove unused git files (#1244)
Tim Haines [Mon, 4 Apr 2022 18:05:59 +0000 (13:05 -0500)]
Remove unused git files (#1244)

.gitmodules hasn't been used since the test suite was moved to its own repository.
.github_changelog_generate hasn't been used since v10.0.0

7 months agoDocker: make compile warnings fatal (#1242)
Tim Haines [Mon, 4 Apr 2022 16:15:00 +0000 (11:15 -0500)]
Docker: make compile warnings fatal (#1242)

7 months agoDocker: use external-tests instead of testsuite in base image (#1209)
Tim Haines [Mon, 4 Apr 2022 04:21:21 +0000 (23:21 -0500)]
Docker: use external-tests instead of testsuite in base image (#1209)

This is in preparation for using -Werror when building Dyninst in the Github workflow. The test suite does not currently build cleanly, so we need a different set of tests.

7 months agoDocker: don't build Dyninst through spack for the environment (#1222)
Tim Haines [Sun, 3 Apr 2022 02:00:42 +0000 (21:00 -0500)]
Docker: don't build Dyninst through spack for the environment (#1222)

This results in two installations: one in /opt/dyninst-dev/.spack/include and one in /opt/dyninst-dev/install/dyninst. The former is not updated when testing a PR, so causes public header conflicts.

7 months agoDocker: use more OS packages for dependencies (#1221)
Tim Haines [Wed, 30 Mar 2022 22:19:21 +0000 (17:19 -0500)]
Docker: use more OS packages for dependencies (#1221)

* Docker: use more OS packages for dependencies

This should have been part of #1211.

8 months agoRemove void pointer arithmetic when using Valgrind annotations (#1236)
Tim Haines [Tue, 29 Mar 2022 20:24:43 +0000 (15:24 -0500)]
Remove void pointer arithmetic when using Valgrind annotations (#1236)

gcc allows this as an extension by considering sizeof(void) to be 1 (http://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html).

8 months agoAdd parsing of names for inlined functions in DWARF (#1237)
Tim Haines [Tue, 29 Mar 2022 20:21:52 +0000 (15:21 -0500)]
Add parsing of names for inlined functions in DWARF (#1237)

* Clean up and enhance debug messages
* Add parsing of names for inlined functions

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
8 months agoRemove BUILD_RT option (#1238)
Tim Haines [Tue, 29 Mar 2022 20:19:51 +0000 (15:19 -0500)]
Remove BUILD_RT option (#1238)

When not enabled, the dyninstAPI_RT/cmake_install.cmake isn't present.
This has been broken since it was implemented by e1afc6918 in 2016.

8 months agoFix warnings with cmake's MINSIZEREL build type (#1235)
kupsch [Sun, 27 Mar 2022 18:56:27 +0000 (13:56 -0500)]
Fix warnings with cmake's MINSIZEREL build type (#1235)

- Explicitly define optimization flags for cmake's MINSIZEREL build
  type.  Cmake by default includes -DNDEBUG.  This results in assert
  being defined to do nothing.  Dyninst use asserts as a fatal error
  reporting mechanism and expects assert to not return if the condition
  is always false.  If assert can return then many warnings are
  produced due to this unexpect path.
- Remove defining NDEBUG for REL build types if using the MSC compiler

8 months agoCorrectly propagate pc ranges for blocks and local variables (#1226)
kupsch [Mon, 21 Mar 2022 11:54:26 +0000 (06:54 -0500)]
Correctly propagate pc ranges for blocks and local variables (#1226)

- fix valid pc address ranges for local variables that are declared in a
  sub-block (brace, try and catch blocks) of their function
- fix Context class's constructors so they correctly initialize and copy
  all member (use in-class initialize and default constructors)

8 months agoDocker: testing workflow to run libabigail (#1220)
Vanessasaurus [Mon, 14 Mar 2022 00:52:43 +0000 (18:52 -0600)]
Docker: testing workflow to run libabigail (#1220)

Run libabigail's abidiff to detect ABI breakages between the current PR and the last successful build as well as the current PR and the last release.

* testing workflow to run libabigail!
I am not sure if the artifact is extracted relative or not, so will need to update
the workflow to account for that. This is also a new strategy that will try to
do the new build/retrieval of artifacts from previous containers - have not
tried this yet!

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: Tim Haines <thaines.astro@gmail.com>
8 months agoRemove usage of DW_AT_MIPS_linkage_name (#1223)
Tim Haines [Sun, 13 Mar 2022 03:56:29 +0000 (21:56 -0600)]
Remove usage of DW_AT_MIPS_linkage_name (#1223)

This isn't part of DWARF4 or DWARF5.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
8 months agoDocker: adding a workflow for release (#1219)
Vanessasaurus [Fri, 11 Mar 2022 23:52:45 +0000 (16:52 -0700)]
Docker: adding a workflow for release (#1219)

Currently we do the entire build from scratch for release, and this strategy was chosen
for the cleanest build. However we can use the same strategy as we do for testing
and take advantage of the base container. This PR adds a workflow to do that

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: vsoch <vsoch@users.noreply.github.com>
8 months agoMerge pull request #1217 from dyninst/thaines/docker_base_container_defaults
Vanessasaurus [Thu, 10 Mar 2022 18:15:31 +0000 (10:15 -0800)]
Merge pull request #1217 from dyninst/thaines/docker_base_container_defaults

Docker: update dependency versions in base container config

8 months agoUpdate dependency versions in base container config 1217/head
Tim Haines [Thu, 10 Mar 2022 16:58:32 +0000 (10:58 -0600)]
Update dependency versions in base container config

This should have been part of #1211

8 months agoDocumentation update for v12.1.0 (#1216) v12.1.0
Tim Haines [Wed, 9 Mar 2022 22:41:45 +0000 (16:41 -0600)]
Documentation update for v12.1.0 (#1216)

8 months agoCorrectly handle DWARF subroutines during parallel parsing (#1215)
kupsch [Wed, 9 Mar 2022 21:38:46 +0000 (15:38 -0600)]
Correctly handle DWARF subroutines during parallel parsing (#1215)

Fix to only process the DWARF for a function (subprogram) once if it is defined
in multiple compilation units within a library or executable.  This prevents
duplication of parameters, local variables and use of thread-unsafe data
structures from concurrent threads.

8 months agoDocker: simplify build script (#1212) v12.1.0-rc3
Tim Haines [Mon, 7 Mar 2022 23:37:50 +0000 (17:37 -0600)]
Docker: simplify build script (#1212)

* Use CMake's -S instead of undocumented -H

* Remove log captures

The reports are best used within the context of the PR, so storing them
in the dashboard wouldn't be much use.

* Reduce duplication of directory names

* Use CMake commands to build/install

* Separate build and install trees for Dyninst

* Separate build and install directories for test suite

* Simplify 'git pull' for test suite

* Explicitly override test suite install directory

The test suite reads Dyninst's cache which poisons the CMAKE_INSTALL_PREFIX. This overrides that and then puts the test files in the root install directory.

8 months agoMake a couple constant 64-bit ULL to avoid getting truncated during shifts (#1207)
William Cohen [Mon, 7 Mar 2022 18:54:18 +0000 (13:54 -0500)]
Make a couple constant 64-bit ULL to avoid getting truncated during shifts (#1207)

* Ensure ROR work with data types larger than 32 bits.

* Ensure upper 32-bits of 64-bit aarch64 SIMD operand generated.

8 months agoDocker: use more OS packages (#1211)
Tim Haines [Mon, 7 Mar 2022 17:28:17 +0000 (11:28 -0600)]
Docker: use more OS packages (#1211)

* Use perl from OS package

* Use CMake from OS package

* Use Boost from OS package

* Use TBB from OS package

* Mark all external packages as not buildable

8 months agoFix potential buffer overrun in AMDGPU decoders (#1208)
bbiiggppiigg [Thu, 3 Mar 2022 23:14:50 +0000 (23:14 +0000)]
Fix potential buffer overrun in AMDGPU decoders (#1208)

* add assert to check for potential buffer overun
* add assert to check for potential buffer overrun in vega

9 months agoCode clean up for AMDGPU (#1205) v12.1.0-rc2
bbiiggppiigg [Fri, 25 Feb 2022 22:39:49 +0000 (22:39 +0000)]
Code clean up for AMDGPU (#1205)

* Update the code layout for vega headers

* Remove unused cda headers

* remove duplicate cdna2 headers in instructionAPI

9 months agoTidy up classes in AMDGPU (#1204)
Tim Haines [Fri, 25 Feb 2022 19:47:22 +0000 (13:47 -0600)]
Tidy up classes in AMDGPU (#1204)

* Remove dead code in makeAmdgpuRegID

* Fix possible no-return cdna2 functions

* Simplify code in bitfieldInsnAliasMap and condInsnAliasMap

* Correctly initialize all members of InstructionDecoder_amdgpu_cdna2

* Inline InstructionDecoder_amdgpu_cdna2 constructor

* Explicitly default ~InstructionDecoder_amdgpu_cdna2

* Fix possible non-return in decodeSGPRorM0

9 months agoFix compiler warnings in amdgpu cdna2 code (#1198)
Tim Haines [Thu, 24 Feb 2022 22:50:38 +0000 (16:50 -0600)]
Fix compiler warnings in amdgpu cdna2 code (#1198)

* Fix 'unused-variable' warnings from gcc

* Fix 'unused-parameter' warnings from gcc

9 months agoBuild fixes for amdgpu/cdna2 (#1203)
Tim Haines [Thu, 24 Feb 2022 21:53:26 +0000 (15:53 -0600)]
Build fixes for amdgpu/cdna2 (#1203)

* Clean up duplicate cdna2 sys_reg headers (#1200)
* add install rule to install amdgpu headers under common/h (#1201)

Co-authored-by: bbiiggppiigg <bbiiggppiigg@gmail.com>
9 months agoAdd Support for AMDGPU CDNA2 Architectures based on XML ISA spec (#1107) v12.1.0-rc1
bbiiggppiigg [Wed, 23 Feb 2022 15:16:55 +0000 (09:16 -0600)]
Add Support for AMDGPU CDNA2 Architectures based on XML ISA spec (#1107)

Add Initial Support for cdna based on the lastest version of XML file ( 20210720 )

Added new register names based on the latest xml-isa drop

Decoder implementation updated based on the latest xml-isa drop

renumbered registers to make low registers have the same value as full register (or its super set)

add larger memoery types for representing consecutive registers used as a single operand

Modify the format function to output multiple registers as a single operand correctly, handling for certain registers are still being worked on

split register-vector into multiple registers

9 months agofix building of symlite (#1197)
kupsch [Wed, 9 Feb 2022 16:41:16 +0000 (10:41 -0600)]
fix building of symlite (#1197)

- add missing pure virtual functions isReadOnly
- fix isCode and isData methods to use program header permissions instead
  of just returning true
- fix printf compiler warning
- disable parseThat if using symlite as it is not compatible
- remove #include <linux/elf.h> from proccontrol/src/linux.h on aarch64
  if SYMLITE is configured as it is incompatible with <elf.h>

9 months agoAdditional cleanup of memory emulation for hybrid analysis (#1172)
Tim Haines [Sat, 5 Feb 2022 01:08:30 +0000 (19:08 -0600)]
Additional cleanup of memory emulation for hybrid analysis (#1172)

* Remove vestiges of runtime functions
* Remove translation for emulation shadow pages

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
9 months agoAllow zero-length ELF program headers (#1192)
Xiaozhu Meng [Wed, 26 Jan 2022 02:30:53 +0000 (20:30 -0600)]
Allow zero-length ELF program headers (#1192)

CUDA-11.6 binaries do not have program headers, which causes ELF parsing to stop early and miss line info

9 months agoRemove dead code and variables related to Symtab::data_ptr_ and Symtab::code_ptr_...
Xiaozhu Meng [Wed, 26 Jan 2022 02:44:17 +0000 (20:44 -0600)]
Remove dead code and variables related to Symtab::data_ptr_ and Symtab::code_ptr_ (#1192)

9 months agoRemove dead code Object::elf_vaddr_to_ptr (#1192)
Xiaozhu Meng [Wed, 26 Jan 2022 02:34:23 +0000 (20:34 -0600)]
Remove dead code Object::elf_vaddr_to_ptr (#1192)

9 months agoglibc r_debug extensions to support multiple namespaces (#1175)
Stan Cox [Fri, 4 Feb 2022 20:35:36 +0000 (15:35 -0500)]
glibc r_debug extensions to support multiple namespaces (#1175)

* Remove interposed definition of _r_debug

Previously there was a dynamic relocation against _r_debug in the loader which picked up the interposed definition, but glibc now uses a direct internal hidden symbol reference and thus no longer updates the interposed object.

* Update the elf _DYNAMIC symbol

When the symbol table is created in emitElf<ElfTypes>::createSymbolTables, also update the elf _DYNAMIC symbol to reflect the new address of the .dynamic section.

9 months agoSymtab::module documentation cleanup (#1189)
Tim Haines [Fri, 4 Feb 2022 20:06:30 +0000 (14:06 -0600)]
Symtab::module documentation cleanup (#1189)

* Remove docs for hasLineInformation

This was removed by 0dee1c8 in 2016

* Remove getAllVariables

This was by b3ad134 in 2021. It was removed there because this function
was never implemented.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
9 months agoDockerfile: use explicit packages for 'spack external find' (#1195)
Vanessasaurus [Fri, 4 Feb 2022 20:04:29 +0000 (13:04 -0700)]
Dockerfile: use explicit packages for 'spack external find' (#1195)

currently gettext in ubuntu 20.04 is being added as an external dependency (just added about 24
hours ago) and it is breaking the build. This change will test removing from the OS (probably
not recommended but okay in the context of the Dyninst image)

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: vsoch <vsoch@users.noreply.github.com>
9 months agoParseAPI: Speed up the case where a function is called from many locations (#1190)
Jonathon Anderson [Fri, 4 Feb 2022 19:57:51 +0000 (13:57 -0600)]
ParseAPI: Speed up the case where a function is called from many locations (#1190)

In some binaries a single function has many callers, so copying out the source edges for
the entry Block takes a while and causes significant contention on the Block's lock.
The case in Parser::finalize where this becomes a hotspot likely does not need to read
every edge, so this commit inlines those cases into methods on Block instead.

10 months agoELF+DWARF: always parse first entry in source file table (#1184)
Xiaozhu Meng [Thu, 13 Jan 2022 03:28:29 +0000 (21:28 -0600)]
ELF+DWARF: always parse first entry in source file table (#1184)

rocm-4.5 starts to emit AMD GPU binaries with DWARF 5. I noticed missing source line information for these binaries. The root cause is that dyninst assumes that source file table entry 0 represents "unknown file". This no longer seems to be true in DWARF 5, where entry 0 can represents a real application source file.

10 months agoRemove interposed definition of _r_debug (#1176)
Stan Cox [Thu, 13 Jan 2022 02:00:50 +0000 (21:00 -0500)]
Remove interposed definition of _r_debug (#1176)

Previously there was a dynamic relocation against _r_debug in the loader which picked up the interposed definition,
but glibc now uses a direct internal hidden symbol reference and thus no longer updates the interposed object.

10 months agostart of work to add automated testing to dyninst! (#1183)
Vanessasaurus [Wed, 12 Jan 2022 19:50:12 +0000 (12:50 -0700)]
start of work to add automated testing to dyninst! (#1183)

start of work to add automated testing to dyninst!

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: vsoch <vsoch@users.noreply.github.com>
10 months agoadding dyninst release trigger (#1181)
Vanessasaurus [Wed, 12 Jan 2022 19:36:55 +0000 (12:36 -0700)]
adding dyninst release trigger (#1181)

to release a tagged (versioned) container on publication of a release we just
need to add the release -> published trigger, derive the tag from the GITHUB_REF environment
variable, and then tag and push the container

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: vsoch <vsoch@users.noreply.github.com>
10 months agofixing workflow trigger (#1182)
Vanessasaurus [Wed, 12 Jan 2022 05:39:13 +0000 (22:39 -0700)]
fixing workflow trigger (#1182)

we do not need the build on PR, but we do need on merge into MASTER not MAIN

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: vsoch <vsoch@users.noreply.github.com>
10 months agoAdding first stage of automated docker build (#1180)
Vanessasaurus [Wed, 12 Jan 2022 05:29:09 +0000 (22:29 -0700)]
Adding first stage of automated docker build (#1180)

* adding first stage of automated docker build

this first workflow include a base container with ubuntu 20.04 and
a set of dependencies chosen by Tim. The base container will be set (after this PR) as a scheduled, nightly build, and we do this so testing each day can simply pull it, re-add the new source code and testsuite, and quickly compile again (on the order of 3.5 minutes vs. 1 hour+ for the entire container build. This update will happen in two stages - this first to deploy the base container, and a follow up to add automated testing using it. Currently this does not upload test results to Tims server, and this is only because I want to talk to him about it first and then test the workflow before PR here.

Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Co-authored-by: vsoch <vsoch@users.noreply.github.com>
10 months agoRemove erroneous use of realloc in symtabAPI/Type-mem.h (#1170)
Jonathan R. Madsen [Fri, 7 Jan 2022 18:48:48 +0000 (12:48 -0600)]
Remove erroneous use of realloc in symtabAPI/Type-mem.h (#1170)

11 months agoClean up memoryTracker usage in binaryEdit (#877)
Tim Haines [Sun, 28 Nov 2021 23:44:35 +0000 (17:44 -0600)]
Clean up memoryTracker usage in binaryEdit (#877)

* Store memoryTracker_ as a value instead of pointer

This provides cleaner semantics for its usage and ensures that the it's
default-constructed correctly.

* Code cleanup

* Give codeRange a virtual destructor

This will ensure that memoryTracker objects removed from a codeTree will
correctly get destroyed.

* Simplify inferiorFree

* Free any remaining memoryTrackers on destruction

12 months agoDocumentation updates for 12.0.1 release v12.0.1
Tim Haines [Tue, 23 Nov 2021 21:46:24 +0000 (15:46 -0600)]
Documentation updates for 12.0.1 release

12 months agoRemove NVIDIA external line map configure check (#1162)
Tim Haines [Tue, 23 Nov 2021 19:44:39 +0000 (13:44 -0600)]
Remove NVIDIA external line map configure check (#1162)

Now that we require elfutils >= 0.186, this is no longer needed.

12 months agoIncrease minimum elfutils version to 0.186 (#1161)
Tim Haines [Tue, 23 Nov 2021 19:09:53 +0000 (13:09 -0600)]
Increase minimum elfutils version to 0.186 (#1161)

This is needed to parse NVIDIA's extended line map information.
HPCToolkit makes extensive use of this functionality.

12 months agoRefactor dwarfWalker::findConst (#1160)
Tim Haines [Mon, 22 Nov 2021 19:29:53 +0000 (13:29 -0600)]
Refactor dwarfWalker::findConst (#1160)

This function always returns 'true' and few callsites checked the bool
out variable. Using an optional here makes everything simpler. Logging
has been substantially improved for better tracing.

12 months agoAdd readable name for Symtab::typeRef (#1157)
Tim Haines [Sat, 20 Nov 2021 17:24:06 +0000 (11:24 -0600)]
Add readable name for Symtab::typeRef (#1157)

Arguably, this is completely arbitrary as it could have been spelled
'ref', 'reference', etc. Using the language symbol also allows users to
reconstruct source-level syntax more directly.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
12 months agoDwarfWalker: clean up interfaces for findDieName and findName (#1154)
Tim Haines [Thu, 18 Nov 2021 00:51:26 +0000 (18:51 -0600)]
DwarfWalker: clean up interfaces for findDieName and findName (#1154)

findDieName always returned 'true', so any checks for its return value
were meaningless. It was also not clear that 'findName' would modify its
argument. The new interface removes that surprise by making the name the
return value.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
12 months agoAdd conflict with CMake 3.19.0 (#1153)
Tim Haines [Sat, 13 Nov 2021 20:59:08 +0000 (14:59 -0600)]
Add conflict with CMake 3.19.0 (#1153)

There is a bug in 3.19.0 that treats .S files like C-language files.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
12 months agoDocumentation update for 12.0.0 release (#1151) v12.0.0
Tim Haines [Thu, 11 Nov 2021 20:38:48 +0000 (14:38 -0600)]
Documentation update for 12.0.0 release (#1151)

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
12 months agoAdd CMake test to check if libdw supports NVIDIA extended line map
Xiaozhu Meng [Wed, 10 Nov 2021 21:55:58 +0000 (15:55 -0600)]
Add CMake test to check if libdw supports NVIDIA extended line map

12 months agoAdjust interface changes in elfutils regarding NVIDIA extended line map
Xiaozhu Meng [Sat, 6 Nov 2021 20:43:17 +0000 (15:43 -0500)]
Adjust interface changes in elfutils regarding NVIDIA extended line map

12 months agoAdd compile-time checking to see if elfutils support nvidia extended line map
Xiaozhu Meng [Thu, 26 Aug 2021 15:51:00 +0000 (10:51 -0500)]
Add compile-time checking to see if elfutils support nvidia extended line map
when the user have specified ENABLE_NVIDIA_EXT_LINE_MAP

12 months agoFix compilation warning and add cmake option ENABLE_NVIDIA_EXT_LINE_MAP
Xiaozhu Meng [Tue, 24 Aug 2021 19:06:46 +0000 (14:06 -0500)]
Fix compilation warning and add cmake option ENABLE_NVIDIA_EXT_LINE_MAP

12 months ago1. Handle unrelocated line map entries for CUBIN
Xiaozhu Meng [Fri, 20 Aug 2021 01:57:13 +0000 (20:57 -0500)]
1. Handle unrelocated line map entries for CUBIN
2. Remove redundant addFunctionRange call to improve performance
3. Add some debug logging

12 months agoInline context from nvidia extended line map identifies an inlined call path
Xiaozhu Meng [Tue, 27 Jul 2021 16:23:42 +0000 (11:23 -0500)]
Inline context from nvidia extended line map identifies an inlined call path

12 months agoStart to construct inlining call chains using Nvidia's extended line map
Xiaozhu Meng [Tue, 20 Jul 2021 15:48:18 +0000 (10:48 -0500)]
Start to construct inlining call chains using Nvidia's extended line map