[Ecls-list] C::*DELETE-FILES*

Matthew Mondor mm_lists at pulsar-zone.net
Fri Sep 2 10:49:16 UTC 2011


On Fri, 2 Sep 2011 10:27:08 +0200
Juan Jose Garcia-Ripoll <juanjose.garciaripoll at googlemail.com> wrote:

> > But there is also another problem: if I set it to NIL and compile a
> > file (or use C-c C-c on a function), I can see various files but the
> > file containing the VV[] data appears absent.
> >
> 
> The new model for VV data stores it in the binary file directly. There is no
> intermediate *.data file anymore. The reason is that some compilers cannot
> handle large static data sections and for FASL this hack is enough. If you
> want to resort to the old model (which is needed if MAKE-BUILD is used) then
> set the internal variable
> 
> (setf c::*compile-in-constants* t)

Thanks, this might also explain why I could not query the data sections
using objdump (the FAS used to be a fully ELF compliant and was used to
doing this) :)  I indeed had set c::*compile-in-constants* for
MAKE-BUILD for another project's build script, but I didn't know much
about the internal nature of the changes.  Since this causes no issues
with GCC, I might enable it permanently in ~/.eclrc then.

Would it be very hard to only disable this where compilers are known to
have problems?  Which compiler was it, and did its build also rely on
autoconf etc?

Other than allowing to see the transient .data file, another possible
advantage would be the static constant data being loaded in read-only,
non-executable pages (i.e. placed in the rodata section).  But I didn't
check yet how ECL loads its data, and it potentially also could use
mmap+mprotect+madvise etc where wanted...

Thanks,
-- 
Matt




More information about the ecl-devel mailing list