Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bridge testing gap on AArch64 #4474

Open
derekbruening opened this issue Oct 6, 2020 · 2 comments
Open

Bridge testing gap on AArch64 #4474

derekbruening opened this issue Oct 6, 2020 · 2 comments

Comments

@derekbruening
Copy link
Contributor

I'm filing this to help organize and drive work to finish big missing pieces on AArch64 in the test suite. There are about 140 tests on x86 that are not ported to AArch64, resulting in a big gap in coverage. As we run larger A64 apps we're running into many bugs, at least some of which would have been caught and fixed much more easily on our test suite than on a large, complex, custom app.

Xref the old master porting issue #1569 for AArch64 (and i#1551 for ARM).

My main initial focus is drcachesim, and there we have two big drivers of missing tests:

derekbruening added a commit that referenced this issue Oct 6, 2020
Adds custom annotation macro defines to enable building the
client.annotation-concurrency executable and its shared library on
AArchXX.

Enables the 4 tests that require that executable, but do not need
annotation support: tool.drcachesim.threads,
tool.drcachesim.threads-with-config-file, tool.drcachesim.coherence,
and tool.drcachesim.TLB-threads.

Issue: #4474, #1672
derekbruening added a commit that referenced this issue Oct 6, 2020
Adds custom annotation macro defines to enable building the
client.annotation-concurrency executable and its shared library on
AArchXX.

Enables the 4 tests that require that executable, but do not need
annotation support: tool.drcachesim.threads,
tool.drcachesim.threads-with-config-file, tool.drcachesim.coherence,
and tool.drcachesim.TLB-threads.

Issue: #4474, #1672
derekbruening added a commit that referenced this issue Oct 8, 2020
Fixes failures to use the writable addresses when patching code on AArch64.
Enables the 5 -satisfy_w_xor_x tests on AArch64.

Issue: #4458, #4474
Fixes #4458
derekbruening added a commit that referenced this issue Nov 4, 2020
Fixes an error in the a64 assembly in the burst_traceopts test.  The
test is not yet officially enabled for a64 but that work will be done
later and it seems worth fixing this error now.

Issue: #4474
derekbruening added a commit that referenced this issue Nov 4, 2020
Fixes an error in the a64 assembly in the burst_traceopts test.  The
test is not yet officially enabled for a64 but that work will be done
later and it seems worth fixing this error now.

Issue: #4474
derekbruening added a commit that referenced this issue Nov 5, 2020
Adds client thread support to AArchXX.
Implements dynamorio_clone for both ARM and AArch64 and adds necessary
TLS swapping, including handling initial tpidr* values pointing at
read-only memory.

Ports the client.signal test's assembly to a64 and arm.  Enables the
client.signal test on aarchxx.  The test covers the client thread support
here, as well as general client signal handling and manipulating.
Tested manually on arm with the #4522 fix.

Issue: #4474, #4516, #4522
Fixes #4516
derekbruening added a commit that referenced this issue Nov 5, 2020
Adds client thread support to AArchXX.
Implements dynamorio_clone for both ARM and AArch64 and adds necessary
TLS swapping, including handling initial tpidr* values pointing at
read-only memory.

Ports the client.signal test's assembly to a64 and arm.  Enables the
client.signal test on aarchxx.  The test covers the client thread support
here, as well as general client signal handling and manipulating.
Tested manually on arm with the #4522 fix.

Issue: #4474, #4516, #4522
Fixes #4516
gregcawthorne pushed a commit that referenced this issue Nov 28, 2020
Fixes an error in the a64 assembly in the burst_traceopts test.  The
test is not yet officially enabled for a64 but that work will be done
later and it seems worth fixing this error now.

Issue: #4474
gregcawthorne pushed a commit that referenced this issue Nov 28, 2020
Adds client thread support to AArchXX.
Implements dynamorio_clone for both ARM and AArch64 and adds necessary
TLS swapping, including handling initial tpidr* values pointing at
read-only memory.

Ports the client.signal test's assembly to a64 and arm.  Enables the
client.signal test on aarchxx.  The test covers the client thread support
here, as well as general client signal handling and manipulating.
Tested manually on arm with the #4522 fix.

Issue: #4474, #4516, #4522
Fixes #4516
derekbruening added a commit that referenced this issue Feb 5, 2021
The api.startstop test was crashing previously, but one of the many
recent fixes seems to have addressed that problem.  It now runs to
completion 1000x in a row on AArch64.

Issue: #1578, #4474
derekbruening added a commit that referenced this issue Feb 5, 2021
The api.startstop test was crashing previously, but one of the many
recent fixes seems to have addressed that problem.  It now runs to
completion 1000x in a row on AArch64.

Issue: #1578, #4474
derekbruening added a commit that referenced this issue Mar 10, 2021
Adds a preferred_base field to the module_data_t struct.  There is no
compatibility break as DR allocates all such structs.

Adds a preferred_base field to the drmodtrack_info_t struct.  There is
no compatibility break as it has a struct_size field.  Offline
drmodtrack files do incur a version bump here, so an old reader will
fail when reading a file with the new field.  The field is set to a -1
sentinel to aid in determining whether a file has the field or not.
This is also done here with the previously-added offset field.

Adds some sanity checks to the corresponding tests.

Fixes #4474
derekbruening added a commit that referenced this issue Mar 10, 2021
PR #2940 and #2973 added an offset field to drmodtrack for #2939, but
they ifdef-ed the field in some places but not others, resulting in
uninitialized output.  Since it's already locked into the interface,
we always set it to 0 here and include it in internal structures to
fix the problem.

Tested on drmodtrack-test where the fields were manually confirmed to
no longer contain bogus values, and where the test doesn't fail when
that masked this bug before.

Issue: #2939, #4474, #4777
Fixes #4777
@derekbruening
Copy link
Contributor Author

Users are hitting missing AArch64 features like client threads (#5293 => #4516) and thread-private caches (#4279 => #1884).

@derekbruening
Copy link
Contributor Author

derekbruening commented Jan 25, 2022

Hmm actually #4516 is supposedly fixed.

@AssadHashmi AssadHashmi self-assigned this Jan 25, 2022
derekbruening added a commit that referenced this issue Feb 10, 2022
Our test machines now have a new-enough toolchain to get past a
linking bug that blocked building and running a dozen drcachesim tests
with statically-linked DR on AArch64.  We enable them all here, which
helps bridge the testing gap with x86.

Issue: #2007, #4474
Fixes #2007
derekbruening added a commit that referenced this issue Feb 10, 2022
Our test machines now have a new-enough toolchain to get past a
linking bug that blocked building and running a dozen drcachesim tests
with statically-linked DR on AArch64.  We enable them all here, which
helps bridge the testing gap with x86.

Issue: #2007, #4474
Fixes #2007
philramsey-arm added a commit that referenced this issue Jun 27, 2024
philramsey-arm added a commit that referenced this issue Jul 1, 2024
Port client.strace.c test to AARCH64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 3, 2024
Port client.strace test to AARCH64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 3, 2024
Port client.thread test to AARCH64.
    
Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 4, 2024
Port client.nudge_ex test to AARCH64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 8, 2024
Port client.dr_options test to AARCH64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 8, 2024
Port client.nudge_ex test to AARCH64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 10, 2024
Port client.dr_options test to AARCH64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 11, 2024
Port security-common.retexisting test to AArch64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 12, 2024
Port security-common.selfmod2 test to AArch64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 12, 2024
Port security-common.retexisting test to AArch64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Jul 15, 2024
Port security-common.selfmod2 test to AArch64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Aug 7, 2024
Port security-common.selfmod test to AArch64.

Issue: #4474
philramsey-arm added a commit that referenced this issue Aug 21, 2024
Port security-common.selfmod test to AArch64.

These tests will catch issues like
#5771.

Issue: #4474
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants