[oi-dev] mapfile and RESERVE_SEGMENT or CAPABILITY
stes@PANDORA.BE
stes at telenet.be
Sun Aug 15 11:16:19 UTC 2021
I've done some further research on this issue;
First of all, the reason I was interested in this,
was because a recent change in OpenSmalltalk cog-spur,
made me debug the cog-spur executable on OpenIndiana,
and I noticed addresses like:
/usr/bin/squeak $HOME/v5/Squeak6.0alpha-20532-64bit.image
JIT codezone 0x7fffae411000 0x7fffae56f000
mmap 0x7fffae600000 0x7fffa5000000
Note that the mmap result pointers are in the range 0x7fffa5000000.
In the past on OpenIndiana I had addresses like: 0xffff80ffbf6b0000 !
So in my understanding what I observed was the result of recent OpenIndiana systems that now have
/etc/system.d/reserve_bits_for_tagged_pointers
Effectively I think the spidermonkey setting is now changing the memory layout of virtual addresses,
for most applications, including OpenSmalltalk, on OpenIndiana.
Anyway, this is not in itself a problem.
After investigating "link editor mapfile" and the difference between AT&T SVR4 syntax,
which was the old syntax which in my understanding is still used on Illumos,
I experimented with adding in a oi-userland Makefile :
LD_MAP_COGVM = -M map.cogvm
CONFIGURE_ENV.64 += LD_OPTIONS="$(LD_OPTIONS) $(LD_MAP_COGVM)"
This works fine because LD_OPTIONS is passed to the Illumos traditional "ld" (link editor) which accepts old-style mapfiles.
However, all of this is not really essential I think now, to the "OpenSmalltalk cog-vm" issue.
I have meanwhile discovered that another difference is that in the old OpenSmalltalk code,
there was a page-alligned argument being passed to the mmap() call.
That code was recently (2-3 weeks ago) removed, and when I restore that piece of code,
the cog-spur is working again as before - also when /etc/system.d/reserve_bits_for_tagged_pointers is applied.
So as a summary, I think a change in the Spur mmap() based memory management for OpenSmalltalk,
made me observe the results of the /etc/system.d/reserve_bits_for_tagged_pointers,
and I incorrectly thought I had to investigate that in order to fix my OpenSmalltalk issue,
which turns out to be a different issue ...
Anyway it's an interesting and subtle difference between Linux virtual address memory layout and OpenIndiana/Illumos layout.
Regards,
David Stes
More information about the oi-dev
mailing list