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
+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
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.
--- /dev/null
+#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");
+}