diff options
author | David Malcolm <dmalcolm@redhat.com> | 2024-07-24 18:07:55 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2024-07-24 18:07:55 -0400 |
commit | 29ee588129bf07d3adb62b6c2c189ba932c00ff4 (patch) | |
tree | 298e3173b27e7d42be34211a01b7962599bce0a2 /gcc/jit | |
parent | 8c07814f46ca617ccc5f9fbf2b220dc41ae228c2 (diff) | |
download | gcc-29ee588129bf07d3adb62b6c2c189ba932c00ff4.zip gcc-29ee588129bf07d3adb62b6c2c189ba932c00ff4.tar.gz gcc-29ee588129bf07d3adb62b6c2c189ba932c00ff4.tar.bz2 |
diagnostics: SARIF output: add "arguments" property (§3.20.2)
gcc/ChangeLog:
* diagnostic-format-sarif.cc (sarif_invocation::sarif_invocation):
Add "original_argv" param and use it to populate "arguments"
property (§3.20.2).
(sarif_builder::sarif_builder): Pass argv to m_invocation_obj's
ctor.
* diagnostic.cc (diagnostic_context::initialize): Initialize
m_original_argv.
(diagnostic_context::finish): Clean up m_original_argv.
(diagnostic_context::set_original_argv): New.
* diagnostic.h: Include "unique-argv.h".
(diagnostic_context::set_original_argv): New decl.
(diagnostic_context::get_original_argv): New decl.
(diagnostic_context::m_original_argv): New field.
* toplev.cc: Include "unique-argv.h".
(general_init): Add "original_argv" param and move it to global_dc.
(toplev::main): Stash a copy of the original argv before expansion,
and pass it to general_init for use by SARIF output.
* unique-argv.h: New file.
gcc/jit/ChangeLog:
* jit-playback.cc (jit::playback_context::compile) Add a trailing
null to argvec.
gcc/testsuite/ChangeLog:
* c-c++-common/diagnostic-format-sarif-file-1.c: Verify that we
have an "arguments" property (§3.20.2).
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc/jit')
-rw-r--r-- | gcc/jit/jit-playback.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/jit/jit-playback.cc b/gcc/jit/jit-playback.cc index 1b5445d..501d570 100644 --- a/gcc/jit/jit-playback.cc +++ b/gcc/jit/jit-playback.cc @@ -2568,7 +2568,11 @@ compile () if (get_logger ()) for (unsigned i = 0; i < fake_args.length (); i++) get_logger ()->log ("argv[%i]: %s", i, fake_args[i]); - toplev.main (fake_args.length (), + + /* Add a trailing null to argvec; this is not counted in argc. */ + fake_args.safe_push (nullptr); + toplev.main (/* The trailing null is not counted in argv. */ + fake_args.length () - 1, const_cast <char **> (fake_args.address ())); exit_scope ("toplev::main"); |