Skip to content

Commit

Permalink
Merge branch 'master' into i6417-restore-output-register-before-syscall
Browse files Browse the repository at this point in the history
  • Loading branch information
ivankyluk authored May 13, 2024
2 parents 94073fe + a3411cb commit 732be3c
Show file tree
Hide file tree
Showing 192 changed files with 13,717 additions and 2,983 deletions.
19 changes: 18 additions & 1 deletion .github/workflows/ci-aarchxx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,17 @@ jobs:
fail-fast: false
matrix:
# This job will run in parallel.
os: [ubuntu-20-arm64, ubuntu-20-arm64-sve]
include:
- os: ubuntu-20-arm64
sve: false
- os: ubuntu-20-arm64-sve
sve: true
sve_length: 256
- os: ubuntu-20-arm64-sve
sve: true
sve_length: 128
runs-on: ${{ matrix.os }}
name: aarch64-${{matrix.sve && 'sve-' || ''}}precommit${{matrix.sve_length && '-' || ''}}${{matrix.sve_length}}
steps:
- name: Check out repository code
uses: actions/checkout@v3
Expand Down Expand Up @@ -81,6 +90,14 @@ jobs:
run: ../suite/runsuite_wrapper.pl travis
env:
CI_BRANCH: ${{ github.ref }}
if: ${{ matrix.sve == false || matrix.sve_length == '' }}

- name: Run Suite with sve vector length ${{ matrix.sve_length }}
working-directory: build
run: ../tools/run_with_vector_length.py ${{ matrix.sve_length }} ../suite/runsuite_wrapper.pl travis
env:
CI_BRANCH: ${{ github.ref }}
if: ${{ matrix.sve == true && matrix.sve_length != ''}}

- name: Send failure mail to dynamorio-devs
if: failure() && github.ref == 'refs/heads/master'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ jobs:
# We only use a non-zero build # when making multiple manual builds in one day.
run: |
if test -z "${{ github.event.inputs.version }}"; then
export VERSION_NUMBER=10.0.$((`git log -n 1 --format=%ct` / (60*60*24)))
export VERSION_NUMBER=10.91.$((`git log -n 1 --format=%ct` / (60*60*24)))
else
export VERSION_NUMBER=${{ github.event.inputs.version }}
fi
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/ci-package.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ jobs:
# We only use a non-zero build # when making multiple manual builds in one day.
run: |
if test -z "${{ github.event.inputs.version }}"; then
export VERSION_NUMBER=10.0.$((`git log -n 1 --format=%ct` / (60*60*24)))
export VERSION_NUMBER=10.91.$((`git log -n 1 --format=%ct` / (60*60*24)))
else
export VERSION_NUMBER=${{ github.event.inputs.version }}
fi
Expand Down Expand Up @@ -195,7 +195,7 @@ jobs:
# XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt.
run: |
if test -z "${{ github.event.inputs.version }}"; then
export VERSION_NUMBER=10.0.$((`git log -n 1 --format=%ct` / (60*60*24)))
export VERSION_NUMBER=10.91.$((`git log -n 1 --format=%ct` / (60*60*24)))
else
export VERSION_NUMBER=${{ github.event.inputs.version }}
fi
Expand Down Expand Up @@ -283,7 +283,7 @@ jobs:
# XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt.
run: |
if test -z "${{ github.event.inputs.version }}"; then
export VERSION_NUMBER=10.0.$((`git log -n 1 --format=%ct` / (60*60*24)))
export VERSION_NUMBER=10.91.$((`git log -n 1 --format=%ct` / (60*60*24)))
else
export VERSION_NUMBER=${{ github.event.inputs.version }}
fi
Expand Down Expand Up @@ -371,7 +371,7 @@ jobs:
# XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt.
run: |
if test -z "${{ github.event.inputs.version }}"; then
export VERSION_NUMBER=10.0.$((`git log -n 1 --format=%ct` / (60*60*24)))
export VERSION_NUMBER=10.91.$((`git log -n 1 --format=%ct` / (60*60*24)))
else
export VERSION_NUMBER=${{ github.event.inputs.version }}
fi
Expand Down Expand Up @@ -451,7 +451,7 @@ jobs:
# XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt.
run: |
if test -z "${{ github.event.inputs.version }}"; then
export VERSION_NUMBER=10.0.$((`git log -n 1 --format=%ct` / (60*60*24)))
export VERSION_NUMBER=10.91.$((`git log -n 1 --format=%ct` / (60*60*24)))
else
export VERSION_NUMBER=${{ github.event.inputs.version }}
fi
Expand Down Expand Up @@ -536,7 +536,7 @@ jobs:
# XXX: See x86 job comments on sharing the default ver# with CMakeLists.txt.
run: |
if test -z "${{ github.event.inputs.version }}"; then
export VERSION_NUMBER="10.0.$((`git log -n 1 --format=%ct` / (60*60*24)))"
export VERSION_NUMBER="10.91.$((`git log -n 1 --format=%ct` / (60*60*24)))"
export PREFIX="cronbuild-"
else
export VERSION_NUMBER=${{ github.event.inputs.version }}
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -575,7 +575,7 @@ endif (EXISTS "${PROJECT_SOURCE_DIR}/.svn")

# N.B.: When updating this, update all the default versions in ci-package.yml
# and ci-docs.yml. We should find a way to share (xref i#1565).
set(VERSION_NUMBER_DEFAULT "10.0.${VERSION_NUMBER_PATCHLEVEL}")
set(VERSION_NUMBER_DEFAULT "10.91.${VERSION_NUMBER_PATCHLEVEL}")
# do not store the default VERSION_NUMBER in the cache to prevent a stale one
# from preventing future version updates in a pre-existing build dir
set(VERSION_NUMBER "" CACHE STRING "Version number: leave empty for default")
Expand Down
34 changes: 33 additions & 1 deletion api/docs/CMake_rundoxygen.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,11 @@ if (embeddable)
endforeach ()

# We leverage the javascript menu from the non-embedded version.
# Menu hierarchy changes:
# (1) Remove the outer "DynamoRIO" layer.
# (2) Remove home page at the end.
# (3) Insert an "API Reference" layer around API details.
# (4) Move the "Extension API" menu inside "Build Your Own Tool".
file(GLOB all_js ${CMAKE_CURRENT_BINARY_DIR}/../html/*.js)
set(found_user_docs OFF)
foreach (js ${all_js})
Expand Down Expand Up @@ -286,7 +291,31 @@ if (embeddable)
message(FATAL_ERROR "Cannot find menu entry for page \"Extension API\"")
endif ()
string(REGEX MATCH "\n[^\n]+\"Extension API\"[^\n]+\n" ext_entry "${string}")
string(REPLACE "${ext_entry}" "\n" string "${string}")
# If ext_entry ends with a [, the menu items are expanded inline and the
# whole Extension API menu can be moved within this file.
string(REGEX MATCH "\\[\n" ext_multiline "${ext_entry}")
if (ext_multiline)
# Extract everything up to but not including the newly-inserted API Reference.
string(REGEX REPLACE
"(\n[^\n]+\"Extension API\",.+)(\n\\[ \"API Reference\")"
"\\2" string "${string}")
# Remember the full Extension API match.
set(ext_entry ${CMAKE_MATCH_1})
if (NOT ext_entry)
message(FATAL_ERROR "Cannot move menu entry for \"Extension API\"")
endif ()
# Now insert the Extension API menu right above Disassembly Library.
if (NOT string MATCHES "Disassembly Library")
message(FATAL_ERROR "Cannot find menu entry for page \"Disassembly Library\"")
endif ()
string(REGEX REPLACE "(\n[^\n]+\"Disassembly Library)" "${ext_entry}\\1"
string "${string}")
# Set the user_docs flag since we found its contents here.
set(found_user_docs ON)
else ()
# Remove the 1-line Extension API string from this file.
string(REPLACE "${ext_entry}" "\n" string "${string}")
endif ()
else ()
# Remove name so we can inline.
string(REGEX REPLACE "var [^\n]* =\n" "" string "${string}")
Expand Down Expand Up @@ -319,6 +348,9 @@ if (embeddable)
if (js MATCHES "page_user_docs.js")
# CMake 3.6+ guarantees the glob is sorted lexicographically, so we've already
# seen navtreedata.js.
if (found_user_docs)
message(FATAL_ERROR "Found unexpected \"page_user_docs\" menu file")
endif ()
set(found_user_docs ON)
if (ext_entry)
if (NOT string MATCHES "Disassembly Library")
Expand Down
2 changes: 1 addition & 1 deletion api/docs/building.dox
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ Check out the sources as normal, and point at our toolchain CMake file:
$ git clone --recurse-submodules -j4 https://github.com/DynamoRIO/dynamorio.git
$ mkdir build_aarch64
$ cd build_aarch64
$ cmake -DCMAKE_TOOLCHAIN_FILE=../dynamorio/make/toolchain-arm64.cmake ../dynamorio
$ cmake -DCMAKE_TOOLCHAIN_FILE=../dynamorio/make/toolchain-aarch64.cmake ../dynamorio
$ make -j
```

Expand Down
24 changes: 24 additions & 0 deletions api/docs/release.dox
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,13 @@ changes:
users sub-classing analyzer_tmpl_t).
- Converted #dynamorio::drmemtrace::analysis_tool_tmpl_t::interval_state_snapshot_t
into a class with all its data members marked private with public accessor functions.
- Changed the type of the AArch64 #dr_mcontext_t members svep and ffr to #dr_svep_t.
This breaks binary compatibility with clients that were built against versions of
DynamoRIO before this change.
- Changed #dynamorio::drmemtrace::record_filter_t::record_filter_func_t
parallel_shard_filter() interface. Added a new parameter of type
#dynamorio::drmemtrace::record_filter_t::record_filter_info_t that allows
#dynamorio::drmemtrace::record_filter_t to share data with its filters.

Further non-compatibility-affecting changes include:
- Added DWARF-5 support to the drsyms library by linking in 4 static libraries
Expand Down Expand Up @@ -212,6 +219,23 @@ Further non-compatibility-affecting changes include:
#dynamorio::drmemtrace::analysis_tool_t to allow the tool to make holistic
adjustments to the interval snapshots after all have been generated, and before
they are used for merging across shards (potentially), and printing the results.
- Added opnd_is_vector_base_disp() to test if an opnd_t is a base+disp memory operand
that uses a vector register for the base or index register.
- Added -abort_on_invariant_error flag that instructs the invariant checker drmemtrace
analysis tool to abort trace analysis when a trace invariant error is found. This
is set to true by default to match the existing behavior of the invariant checker.
- Added a new instr API instr_is_xrstor() that tells whether an instruction is any
variant of the x86 xrstor opcode.
- Added a new #dr_isa_mode_t: #DR_ISA_REGDEPS, which is a synthetic ISA with the main
purpose of preserving register dependencies.
- Added instr_convert_to_isa_regdeps() API that converts an #instr_t from a real ISA
(e.g., #DR_ISA_AMD64) to the #DR_ISA_REGDEPS synthetic ISA.
- Added encodings2regdeps_filter_t filter to #dynamorio::drmemtrace::record_filter_t to
generate #DR_ISA_REGDEPS traces.
- Added #dynamorio::drmemtrace::OFFLINE_FILE_TYPE_ARCH_REGDEPS file type for
#DR_ISA_REGDEPS traces.
- Added -tool as the preferred alias for -simulator_type for the drmemtrace/drcachesim
trace analysis tool framework.

**************************************************
<hr>
Expand Down
Loading

0 comments on commit 732be3c

Please sign in to comment.