<div dir="ltr">Hi Frank,<div><br></div><div>    where&#39;s the #define of pageMask?  There shouldn&#39;t be one  pageMask is an unsigned int.  i.e.</div><div><br></div><div><div>McStalker.oscogvm$ grep -n pageMask platforms/unix/vm/*</div>
<div>platforms/unix/vm/sqUnixMemory.c:100:static unsigned int pageMask = 0;</div><div>platforms/unix/vm/sqUnixMemory.c:102:#define valign(x)  ((x) &amp; pageMask)</div><div>platforms/unix/vm/sqUnixMemory.c:123:  pageMask= ~(pageSize - 1);</div>
<div>platforms/unix/vm/sqUnixMemory.c:125:  DPRINTF((&quot;uxAllocateMemory: pageSize 0x%x (%d), mask 0x%x\n&quot;, pageSize, pageSize, pageMask));</div><div>platforms/unix/vm/sqUnixMemory.c:178:      assert(0 == (newDelta &amp; ~pageMask));</div>
<div>platforms/unix/vm/sqUnixMemory.c:179:      assert(0 == (newSize  &amp; ~pageMask));</div><div>platforms/unix/vm/sqUnixMemory.c:196:     assert(0 == (heapSize  &amp; ~pageMask));</div><div>platforms/unix/vm/sqUnixMemory.c:213:      assert(0 == (newDelta &amp; ~pageMask));</div>
<div>platforms/unix/vm/sqUnixMemory.c:214:      assert(0 == (newSize  &amp; ~pageMask));</div><div>platforms/unix/vm/sqUnixMemory.c:231:     assert(0 == (heapSize  &amp; ~pageMask));</div><div>platforms/unix/vm/sqUnixMemory.c:293:# define roundDownToPageBoundary(v) ((v)&amp;pageMask)</div>
<div>platforms/unix/vm/sqUnixMemory.c:294:# define roundUpToPageBoundary(v) (((v)+pageSize-1)&amp;pageMask)</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jan 10, 2013 at 1:40 PM, Frank Shearar <span dir="ltr">&lt;<a href="mailto:frank.shearar@gmail.com" target="_blank">frank.shearar@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
First, thanks Eliot for fixing up the UUID plugin.<br>
<br>
With that fixed, the next error I get when compiling (32 bit) on<br>
FreeBSD is this:<br>
<br>
sqUnixMemory.c<br>
/usr/home/jenkins/workspace/CogVM-FreeBSD/target/Squeak-vm-unix-4.6.0-Cog-2664-unofficial-src/platforms/unix/vm/sqUnixMemory.c:<br>
In function &#39;sqMakeMemoryExecutableFromTo&#39;:<br>
/usr/home/jenkins/workspace/CogVM-FreeBSD/target/Squeak-vm-unix-4.6.0-Cog-2664-unofficial-src/platforms/unix/vm/sqUnixMemory.c:298:<br>
error: &#39;pageMask&#39; undeclared (first use in this function)<br>
<br>
The line number looks a bit wrong, because pageMask is in a #define on<br>
line 293. (Ah, it&#39;s because line 298 uses the #define.) At any rate,<br>
the relevant function + context looks like this:<br>
<br>
#if COGVM<br>
# define roundDownToPageBoundary(v) ((v)&amp;pageMask)<br>
# define roundUpToPageBoundary(v) (((v)+pageSize-1)&amp;pageMask)<br>
void<br>
sqMakeMemoryExecutableFromTo(unsigned long startAddr, unsigned long endAddr)<br>
{<br>
        unsigned long firstPage = roundDownToPageBoundary(startAddr);<br>
        if (mprotect((void *)firstPage,<br>
                                 endAddr - firstPage + 1,<br>
                                 PROT_READ | PROT_WRITE | PROT_EXEC) &lt; 0)<br>
                perror(&quot;mprotect(x,y,PROT_READ | PROT_WRITE | PROT_EXEC)&quot;);<br>
}<br>
<br>
void<br>
sqMakeMemoryNotExecutableFromTo(unsigned long startAddr, unsigned long endAddr)<br>
{<br>
        unsigned long firstPage = roundDownToPageBoundary(startAddr);<br>
        if (mprotect((void *)firstPage,<br>
                                 endAddr - firstPage + 1,<br>
                                 PROT_READ | PROT_WRITE) &lt; 0)<br>
                perror(&quot;mprotect(x,y,PROT_READ | PROT_WRITE)&quot;);<br>
}<br>
#endif /* COGVM */<br>
<br>
A bit confusing, given that pageMask is declared on line 100, as<br>
whatever C calls a top level form. A global?<br>
<br>
What can I do to make things work?<br>
<br>
The full ouput&#39;s viewable here: <a href="http://squeakci.org/job/CogVM-FreeBSD/13/console" target="_blank">http://squeakci.org/job/CogVM-FreeBSD/13/console</a><br>
<span class="HOEnZb"><font color="#888888"><br>
frank<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div>