[Gc] Allocating Executable Memory

Noah Lavine noah.b.lavine at gmail.com
Fri Jul 23 10:28:17 PDT 2010


Hello GC Developers,

I am writing with a feature request for the next version of your library.

I am working on adding JIT compilation support to GNU Guile (a Scheme
implementation), which uses this library for garbage collection. In
order to make GC work, we'll need to allocate executable memory.
However, I have discovered that allocating executable memory is a
build-time configuration option (in version 7.1, it appears to be set
in configure.ac, at lines 401 and 495). This gives Guile something of
a problem - currently we use whatever libgc is on a user's computer.
However, the only way to ensure that libgc will allocate executable
memory would be to build our own version of it, which would add space
to our executable and be redundant. We could also hack together our
own memory allocator only for executable memory, but we like using
your library. :-)

Therefore, I'd like to request that the next version of the library
have allocating executable memory as a runtime configuration option
that can be set by programs. I don't think it would affect performance
very much - in fact, I can find only two uses of it in the entire
program (calls to mmap and mprotect in os_dep.c).

I also have a question - is there some way to make an older version of
libgc manage executable memory anyway? For instance, if I mmap some
pages of executable memory, will libgc scan those for pointers even
though it didn't allocate them? Are there other ways to work around
this?

Thank you very much
Noah Lavine


More information about the Gc mailing list