aboutsummaryrefslogtreecommitdiff
path: root/gcc/jit
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2024-07-24 18:07:55 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2024-07-24 18:07:55 -0400
commit29ee588129bf07d3adb62b6c2c189ba932c00ff4 (patch)
tree298e3173b27e7d42be34211a01b7962599bce0a2 /gcc/jit
parent8c07814f46ca617ccc5f9fbf2b220dc41ae228c2 (diff)
downloadgcc-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.cc6
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");