mirror of
https://github.com/dlang/dmd.git
synced 2025-04-25 12:40:11 +03:00

* rt.minfo: Avoid calling realloc with size 0 This is not portable, and memcheck complains about this. * Add C Valgrind API Add the BSD-licensed C header files which provide the API for controlling Valgrind from within programs executed under it. The files are from Valgrind v3.21.0. * Add some D bindings for the Valgrind C API We will use these in the GC implementation to tell Valgrind which memory operations are OK or not. * Silence Valgrind warnings caused by GC marking Allow the conservative GC to scan memory, whether it has been initialized by the application or not. * Add test suite for Valgrind * Unify VALGRIND with MEMSTOMP The two share the same goal: mark memory which should not be accessed any more. * Mask "invalid" access to free lists The GC stores free lists in the cells of the objects on the list. We would like to allow the GC to work with these lists, but still raise a warning if application code attempts to access them. * Distinguish between writable and unwritable invalidation Freshly allocated memory should be writable but not readable. Explicitly deallocated or GC-ed memory should be neither readable or writable. * Add use-after-free test * Invalidate freshly-allocated memory * Integrate VALGRIND with SENTINEL * Fix reporting of arrays of structs with destructors * Re-invalidate reused blocks during malloc/calloc * Add Changelog entry * .pre-commit-config.yaml: Exempt vendored files * etc.valgrind.valgrind: Propagate return values of the vbits functions * etc.valgrind.valgrind: Add documentation for functions Copy/adapt the documentation in memcheck.h. * druntime/test/valgrind: Add no_use_after_gc test * ci/cirrusci.sh: Install Valgrind on Linux Run the Druntime Valgrind integration tests. libc6-dbg is needed to allow Valgrind to redirect certain functions. * etc.valgrind.valgrind: Add @nogc Although the GC is the primary user, this is not a restriction of these Valgrind API wrappers. * druntime/test/valgrind: Fix no_use_after_gc test with -release Trick the optimizer to pretend we're doing something with the result of those invalid memory accesses.
27 lines
752 B
YAML
27 lines
752 B
YAML
repos:
|
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
rev: v4.4.0
|
|
hooks:
|
|
- id: trailing-whitespace
|
|
exclude: >
|
|
(?x)^(
|
|
^compiler/test/runnable/extra-files/.*$|
|
|
^compiler/test/compilable/extra-files/.*$|
|
|
^druntime/src/etc/valgrind/.*\.h$|
|
|
)$
|
|
- id: end-of-file-fixer
|
|
exclude: >
|
|
(?x)^(
|
|
^compiler/test/runnable/extra-files/.*$|
|
|
^compiler/test/compilable/extra-files/.*$|
|
|
^druntime/src/etc/valgrind/.*\.h$|
|
|
)$
|
|
- id: check-merge-conflict
|
|
- id: check-added-large-files
|
|
- id: detect-private-key
|
|
- id: no-commit-to-branch
|
|
args: [--branch, master]
|
|
- repo: https://github.com/sirosen/check-jsonschema
|
|
rev: 0.23.0
|
|
hooks:
|
|
- id: check-github-workflows
|