Hello Marc,

> The idea is to offer the builtin procedure
> 
> __builtin__clear_cache (void *begin, void *end),
> 
> which is provided at least by gcc and clang, in a portable manner.  From
> the documentation of gcc's version:
> 
> "This function is used to flush the processor’s instruction cache for the
> region of memory between begin inclusive and end exclusive. Some targets
> require that the instruction cache be flushed, after modifying memory
> containing code, in order to obtain deterministic behavior."
> 
> Clients for such a procedure are, in particular, JIT compilers.

I can provide such a thing easily. In fact, I have it already sitting
around on my disk since 2021 :-)

> GNU
> lightning currently calls libgcc's `__clear_cache' directly ([1]), but this
> will fail on systems that do not have libgcc.

And also, libgcc's __clear_cache does not always work. My comments say:

  /* GCC >= 4.3 has a GCC built-in.
     <https://gcc.gnu.org/onlinedocs/gcc-4.3.6/gcc/Other-Builtins.html>
     But it's sometimes not correctly implemented.

So, I can provide the module's code. Can you provide a unit test for it?

Bruno




Reply via email to