Hi all, I'd like to submit this patch to extend libgccjit to allow for storing binary blobs (equivalent to initialized char arrays). The use-case is when libgccjit is used as a back-end for dynamic programming languages. In this case is often necessary to store serialized objects into the compilation unit as support to the generated code. The proposed entry point is the following: gcc_jit_lvalue * gcc_jit_context_new_blob (gcc_jit_context *ctxt, gcc_jit_location *loc, enum gcc_jit_global_kind kind, const void *ptr, size_t size, const char *name); This create a special kind of libgccjit global that will be initialized with the memory content pointed by 'ptr'. I've added a testcase and the regression is clean. I've also tested it with the libgccjit based Emacs disabling the current workaround we have for this. Feedback is very welcome. Andrea gcc/jit/ChangeLog 2020-06-02 Andrea Corallo * docs/topics/compatibility.rst (LIBGCCJIT_ABI_14): New ABI tag. * docs/topics/expressions.rst (Binary Blobs): New section documenting gcc_jit_context_new_blob. * jit-common.h: Document class blob. * jit-playback.c (playback::context::global_new_decl) (playback::context::global_finalize_lvalue): New methods. (playback::context::new_global): Make use of global_new_decl, global_finalize_lvalue. (playback::context::new_blob): New method. * jit-playback.h (new_blob, global_new_decl): New method declarations. * jit-recording.c (recording::context::new_blob) (recording::blob::replay_into) (recording::global::write_qualifier_to_dump): New methods. (recording::global::write_to_dump): Use write_qualifier_to_dump. (recording::blob::write_to_dump): New method. * jit-recording.h (class blob): New class. (class global): Have m_kind and m_name as protected. (class global): Remove FINAL qualifier to replay_into and write_to_dump. (class global): New method write_qualifier_to_dump decl. (class context): New method new_blob decl. * libgccjit++.h (context::new_blob): New method. * libgccjit.c (gcc_jit_lvalue_as_rvalue): New function. * libgccjit.h (gcc_jit_context_new_blob): New function declaration. (LIBGCCJIT_HAVE_gcc_jit_context_new_blob): New macro. * libgccjit.map (LIBGCCJIT_ABI_14): New ABI tag. gcc/testsuite/ChangeLog 2020-06-02 Andrea Corallo * jit.dg/all-non-failing-tests.h: Add test-blob.c. * jit.dg/test-blob.c: New test.