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
This commit is contained in:
parent
44e13e607f
commit
595ced6060
4 changed files with 38 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
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);
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
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.
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
#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");
|
||||
}
|
Loading…
Add table
Reference in a new issue