Commit 595ced60 by David Malcolm Committed by David Malcolm

Fix crash accessing builtins in sanitizer.def and after (PR jit/82174)

Calls to gcc_jit_context_get_builtin_function that accessed builtins
in sanitizer.def and after (or failed to match any builtin) led to
a crash accessing a NULL builtin name.

The entries with the NULL name came from these lines in sanitizer.def:

  /* This has to come before all the sanitizer builtins.  */
  DEF_BUILTIN_STUB(BEGIN_SANITIZER_BUILTINS, (const char *)0)

  [...snip...]

  /* This has to come after all the sanitizer builtins.  */
  DEF_BUILTIN_STUB(END_SANITIZER_BUILTINS, (const char *)0)

This patch updates jit-builtins.c to cope with such entries, fixing the
crash.

gcc/jit/ChangeLog:
	PR jit/82174
	* jit-builtins.c (matches_builtin): Ignore entries with a NULL
	name.

gcc/testsuite/ChangeLog:
	PR jit/82174
	* jit.dg/test-error-gcc_jit_context_get_builtin_function-unknown-builtin.c:
	New test case.

From-SVN: r252769
parent 44e13e60
2017-09-14 David Malcolm <dmalcolm@redhat.com>
PR jit/82174
* jit-builtins.c (matches_builtin): Ignore entries with a NULL
name.
2017-08-18 David Malcolm <dmalcolm@redhat.com>
PR tree-optimization/46805
......
......@@ -68,7 +68,10 @@ matches_builtin (const char *in_name,
const struct builtin_data& bd)
{
const bool debug = 0;
gcc_assert (bd.name);
/* Ignore entries with a NULL name. */
if (!bd.name)
return false;
if (debug)
fprintf (stderr, "seen builtin: %s\n", bd.name);
......
2017-09-14 David Malcolm <dmalcolm@redhat.com>
PR jit/82174
* jit.dg/test-error-gcc_jit_context_get_builtin_function-unknown-builtin.c:
New test case.
2017-09-14 Pat Haugen <pthaugen@us.ibm.com>
* gcc.target/powerpc/r2_shrink-wrap.c: New.
......
#include <stdlib.h>
#include <stdio.h>
#include "libgccjit.h"
#include "harness.h"
void
create_code (gcc_jit_context *ctxt, void *user_data)
{
gcc_jit_context_get_builtin_function (ctxt,
"this_is_not_a_builtin");
}
void
verify_code (gcc_jit_context *ctxt, gcc_jit_result *result)
{
CHECK_VALUE (result, NULL);
CHECK_STRING_VALUE (gcc_jit_context_get_first_error (ctxt),
"builtin \"this_is_not_a_builtin\" not found");
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment