dyninst.git
2 weeks agoDocker: make build.sh verbose, fix file copy bug in Dockerfile.test (#1273) master
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)

2 weeks 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.

3 weeks 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>
3 weeks 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>
3 weeks 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.

4 weeks 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.

6 weeks agoRemove unused build options (#1253) wuxx1279/amdgpu
Tim Haines [Tue, 12 Apr 2022 19:06:30 +0000 (14:06 -0500)]
Remove unused build options (#1253)

* Remove BUILD_DOCS

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

* Remove BUILD_TARBALLS

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

6 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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)

- DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS option:  if set,
  disable all warning suppressions and frame size limit overrides

7 weeks 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
  instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C

7 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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.

8 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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

2 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)

2 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>
2 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>
2 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>
2 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

2 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

2 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)

2 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.

2 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.

2 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.

2 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

2 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

2 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

2 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

2 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

2 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>
3 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

3 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>

3 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>
3 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

3 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)

3 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)

3 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.

3 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>
3 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>
3 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.

4 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.

4 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.

4 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>
4 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>
4 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>
4 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>
4 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)

5 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

6 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

6 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.

6 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.

6 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.

6 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>
6 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>
6 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>
6 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>
6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 months agocleaning up code for ingesting nvidia extended linemaps
John M Mellor-Crummey [Mon, 12 Jul 2021 15:54:15 +0000 (10:54 -0500)]
cleaning up code for ingesting nvidia extended linemaps

6 months agofirst draft of support for nvidia enhanced line maps
John M Mellor-Crummey [Mon, 12 Jul 2021 03:16:26 +0000 (22:16 -0500)]
first draft of support for nvidia enhanced line maps

6 months agoImprove docs for lookup functions in CodeObject (#1147)
Tim Haines [Thu, 11 Nov 2021 03:00:37 +0000 (21:00 -0600)]
Improve docs for lookup functions in CodeObject (#1147)

Add wording to improve clarity about when a CodeRegion is strictly needed when using the lookup functions.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoRemove AddressSpace::causeTemplateInstantiations (#1149)
Tim Haines [Wed, 10 Nov 2021 19:04:42 +0000 (13:04 -0600)]
Remove AddressSpace::causeTemplateInstantiations (#1149)

This was removed by 47c4dfe96 in 2010.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoRemove unregisterTrapMapping from PCProcess
Tim Haines [Wed, 10 Nov 2021 03:51:53 +0000 (21:51 -0600)]
Remove unregisterTrapMapping from PCProcess

This was disabled in 2013 by fce999f48.

6 months agoRemove thread registration functions from PCProcess
Tim Haines [Wed, 10 Nov 2021 03:50:29 +0000 (21:50 -0600)]
Remove thread registration functions from PCProcess

These were disabled in 2015 by 0e791cce8.

6 months agoRemove PCProcess::getDeadCode
Tim Haines [Wed, 10 Nov 2021 03:48:09 +0000 (21:48 -0600)]
Remove PCProcess::getDeadCode

This was disabled by ab24c9bf0 in 2012. Because it was replaced with an
'assert(0)', it's safe to say no one has used it since it was disabled.

6 months agoRemove memory emulation (#1146)
Tim Haines [Sun, 7 Nov 2021 23:42:16 +0000 (17:42 -0600)]
Remove memory emulation (#1146)

This was disabled by 89919d982 in 2012.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoRemove ppc32 from builds (#1145)
Tim Haines [Sun, 7 Nov 2021 19:53:25 +0000 (13:53 -0600)]
Remove ppc32 from builds (#1145)

* Remove ppc32 from build system

* Remove ppc32 source and header files

* Clean up gitignore in parseThat

* Remove use of arch_ppc_little_endian

* Remove explict use of ppc32_linux macro

* Remove implicit use of ppc32 macro

There are likely more instances.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agofix statement-like macros (#1143)
kupsch [Sun, 7 Nov 2021 19:41:22 +0000 (13:41 -0600)]
fix statement-like macros (#1143)

wrap macro body in 'do {...} while (0)' so they can be used as if they were a
statement with a terminating semicolon.

changed break to return since it then works in a do/while loop and was
semantically the same in all the expansions

parenthesized the use of parameters as needed

6 months agoImplement ppc64 in MachRegister::getROSERegister (#1139)
Tim Haines [Fri, 5 Nov 2021 04:22:15 +0000 (23:22 -0500)]
Implement ppc64 in MachRegister::getROSERegister (#1139)

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoUpdate copyright to 2022 (#1141)
Tim Haines [Wed, 3 Nov 2021 15:17:35 +0000 (10:17 -0500)]
Update copyright to 2022 (#1141)

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoUnify meaning of 'cap_32_64' macro (#1136)
Tim Haines [Tue, 2 Nov 2021 19:03:05 +0000 (14:03 -0500)]
Unify meaning of 'cap_32_64' macro (#1136)

* Unify meaning of 'cap_32_64' macro

Currently, this is used in several different ways due to the historical
original meaning drifting over the years. It's meaning is now "this host
64-bit platform supports modifying 32-bit binaries". Currently, this is
only x86 and PPC32. Although the latter is going away soon due to
obsolescence.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoRemove support for Cray CNL (#1137)
Tim Haines [Tue, 2 Nov 2021 18:21:49 +0000 (13:21 -0500)]
Remove support for Cray CNL (#1137)

The Compute Node Linux (CNL) was for the old XT/XE platforms that
are obsolete now. This should have been removed by e5484368f in
2021. Support for this platform was removed from the test suite by
7e4ab7c12 in 2012.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoDon't overflow aarch64 float register vector when setting used regs. (#1127)
Stan Cox [Mon, 1 Nov 2021 18:24:07 +0000 (14:24 -0400)]
Don't overflow aarch64 float register vector when setting used regs. (#1127)

Do not include the subtype when setting a float register as a used register if the registerSlot vector would be exceeded, e.g. for a value like 0x400 (Q_REG/register 0).

6 months agoRemove xlc macros (#1132)
Tim Haines [Fri, 29 Oct 2021 17:01:07 +0000 (12:01 -0500)]
Remove xlc macros (#1132)

* Remove unused XLC macro in dyntypes.h

* Remove XLC check in BPatch_snippet/BPatch_effectiveAddressExpr

This was added by c604218d5 in 2004 for compiling dyninst with xlC as a
static library for AIX compatibility with DPCL- neither of which is
supported by Dyninst now.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoRemove common/src/language.h (#1131)
Tim Haines [Thu, 28 Oct 2021 22:11:30 +0000 (17:11 -0500)]
Remove common/src/language.h (#1131)

This is never used anywhere. We also require a compiler that supports 'typename' implicitly.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agoRemove usage of arch_ppc and arch_ppc64 (#1129)
Tim Haines [Thu, 28 Oct 2021 21:36:51 +0000 (16:36 -0500)]
Remove usage of arch_ppc and arch_ppc64 (#1129)

These were removed by f33ba7b in 2013 and should have been converted to
arch_power at that time.

Co-authored-by: Tim Haines <thaines@cs.wisc.edu>
6 months agofix unused const variable warnings
James A. Kupsch [Thu, 28 Oct 2021 20:06:18 +0000 (15:06 -0500)]
fix unused const variable warnings

6 months agofix pessimizing std::move warnings
James A. Kupsch [Tue, 10 Aug 2021 05:50:23 +0000 (00:50 -0500)]
fix pessimizing std::move warnings

6 months agofix xor operator used as power operator
James A. Kupsch [Tue, 10 Aug 2021 05:34:21 +0000 (00:34 -0500)]
fix xor operator used as power operator

2^32  should be  1LL << 32