mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-06 07:49:02 +00:00
runtime/mercury_grade.h:
Rename the grade modifier, and the C macro that represents it.
compiler/options.m:
Rename the --c-debug-grade option to --target-debug-grade.
compiler/compute_grade.m:
Rename the grade modifier, and the option that represents it.
Restrict the .target_debut grade modifier to MLDS grades.
compiler/handle_options.m:
Implement --target-debug-grade by having it imply --target-debug.
compiler/compile_target_code.m:
compiler/link_target_code.m:
Pay attention to either --target-debug-grade (for purposes related
to the grade itself) and to --target-debug (for all other purposes).
scripts/canonical_grade.in:
scripts/canonical_grade.sh-subr:
scripts/final_grade_options.sh-subr:
scripts/init_grade_options.sh-subr:
scripts/parse_grade_options.sh-subr:
Parse target_debug grade modifiers and --target-debug-grade options
instead of c_debug grade modifiers and --c-debug-grade options.
Add (normally commented-out) infrastructure to make it easier
to debug changes.
Restrict the .target_debut grade modifier to MLDS grades.
scripts/mgnuc.in:
scripts/mgnuc_file_opts.sh-subr:
Rename some variables to clarify the distinction between the
--target-debug option (which, like -g, enabled debugging of only one file)
and the --target-debug-grade option (which enables it for the whole
program).
configure.ac:
Make it easier to debug grade-related changes by recording
both autoconfigured and user-supplied grades that the rejected by
the canonical_grade script.
Conform to the changes above.
README.sanitizers:
doc/user_guide.texi:
grade_lib/grade_spec.m:
grade_lib/grade_string.m:
scripts/ml.in:
tests/warnings/help_text.err_exp:
tools/lmc.in:
tools/test_mercury:
Conform to the changes above.
scripts/Mmake.vars.in:
Add some XXXs about style.
18 lines
752 B
Plaintext
18 lines
752 B
Plaintext
The configure option `--enable-sanitizers' will enable AddressSanitizer
|
|
and UndefinedBehaviorSanitizer when building with gcc. The built Mercury
|
|
compiler will also enable the same sanitizers when building user programs.
|
|
|
|
AddressSanitizer and UndefinedBehaviorSanitizer are included in gcc 4.9
|
|
and above. We have tested with gcc 5.3.0.
|
|
|
|
Only high-level C grades work with the sanitizers enabled.
|
|
|
|
For best results, use a `.target_debug' grade or otherwise enable C debugging.
|
|
|
|
clang does not work yet (tested version 3.8.0). It seemingly does not
|
|
terminate when compiling certain files with UndefinedBehaviorSanitizer,
|
|
e.g. runtime/mercury_deconstruct.c. There are also linking issues to be
|
|
sorted out.
|
|
|
|
See also: <https://github.com/google/sanitizers>
|