<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta content="text/html;charset=UTF-8" http-equiv="Content-Type"></head><body ><div style='font-size:10pt;font-family:Verdana,Arial,Helvetica,sans-serif;'>Hi all.<br><br>I have been awol due to un-employment freakout for the past month or so; things are somewhat stable and I can devote some time on the <br>CMake project.<br><br>I think I have the solution to autoconf not expanding the NoDbgRegParms on my version of the autotools in build.linux32x86/squeak.cog.v3<br><br>SHORT VERSION:<br>in Cog/platforms/unix/config/config.h.in add the line <br><br>   <br><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div>&nbsp;#define NoDbgRegParms</div></blockquote><br><br><br><br>in the header files Cog/src/vm/config/<br>cogit.h<br>cointerp.h<br>cointerpmt.h<br><br>remove the following construct<br><br><br><blockquote style="border-top-color: rgb(204, 204, 204); border-left-color: rgb(204, 204, 204); border-right-color: rgb(204, 204, 204); border-bottom-color: rgb(204, 204, 204); border-top-width: 1px; border-left-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-style: solid; padding-top: 7px; padding-right: 7px; padding-bottom: 7px; padding-left: 7px; background-color: rgb(245, 245, 245);"><div>&nbsp;#if !defined(NoDbgRegParms)<br># define NoDbgRegParms /*empty*/<br>#endif</div></blockquote><br><br><br>Reasoning: In the configure template we define &nbsp;the darn thing as an empty sting by default and only set it to something when we intend to use it for debugging.<br><br><br>LONG VERSION:<br><br>Tools versions are:<br>autoconf (GNU Autoconf) 2.69<br>gcc (GCC) 4.8.2<br><br><br><br>in Cog/platforms/unix/config/config.h.in add the line <br><br>   #define NoDbgRegParms<br><br><br>in Cog/src/vm/config/<br>cogit.h<br>cointerp.h<br>cointerpmt.h<br><br>remove the following construct<br><br>#if !defined(NoDbgRegParms)<br># define NoDbgRegParms /*empty*/<br>#endif<br><br><br>The following 2 changes are specific to my machine, but should have no bearing on the above. <br>I note them only for completeness:<br><br>1.In each mvm file, I added the following configure variables that are required by my machine:<br><br>  --without-vm-display-fbdev --without-gl --x-libraries=/usr/lib <br><br>2. In each plugins.ext I remove the BochsIA32Plugin  as I don't have it installed on my machine.<br><br><div><br></div>the ./mvm for each build type in Cog/build.linux32x86/squeak.cog.v3 worked with these changes (prior, the NoDebugRegParms error kicks in) in all the subdirectories:<br>build         <br>build.assert.itimerheartbeat  <br>build.debug.itimerheartbeat  <br>build.multithreaded         <br>build.multithreaded.debug<br>build.assert  <br>build.debug           <br>build.itimerheartbeat        <br>build.multithreaded.assert<br><br>After each build, ../../../products/XYZ/squeak -version was run and the vm correctly put out the info<br><br>i.e.<br>bash-4.2$ ../../../products/cogmtlinuxht/squeak -version<br>4.0-3248 #1 Sun Feb  8 12:43:20 EST 2015 gcc 4.8.2 [Production VM]<br>CoInterpreterMT VMMaker.oscog-eem.1044 uuid: e04ad0a1-2b15-4561-a3ed-1a4d4d6d58c8 Feb  8 2015<br>StackToRegisterMappingCogit VMMaker.oscog-eem.1039 uuid: 931d69b1-7be3-42dd-8833-1ba325d2b5f2 Feb  8 2015<br>VM: r3248 http://www.squeakvm.org/svn/squeak/branches/Cog Date: 2015-02-04 19:50:56 -0500<br>Plugins: r3243 http://squeakvm.org/svn/squeak/trunk/platforms/Cross/plugins<br>Linux flipper 3.10.17 #2 SMP Wed Oct 23 16:34:38 CDT 2013 x86_64 AMD Phenom(tm) II X4 965 Processor AuthenticAMD GNU/Linux<br><br><br>My reasoning is as follows.<br><br>The error looks like this:<br><br>/home/tty/usr/src/smalltalk/CMake.oscog/Cog/src/vm/gcc3x-cointerp.c:1316:14: warning: 'oopisLessThan' used but never defined [enabled by default]<br> static sqInt oopisLessThan(sqInt anOop, sqInt otherOop) NoDbgRegParms;<br><br><br>The problem is that NoDbgRegParms must be replaced per the following logic in the cogit.h,cointerp.h and cointerpmt.h files<br><br>#if !PRODUCTION &amp;&amp; defined(__GNUC__) &amp;&amp; !defined(NoDbgRegParms)<br># define NoDbgRegParms __attribute__ ((regparm (0)))<br>#endif<br><br>#if !defined(NoDbgRegParms)<br># define NoDbgRegParms /*empty*/<br>#endif<br><br>i.e. either it is removed or replaced with<br><br>__attribute__ ((regparm (0)))<br><br><br>For "some reason" it is not and I have been trying to figure out why.<br><br>I was rereading the autotools tutorial I have and got to the part about *.in files that configure uses as templates, one of which is config.h.in<br><br>On a hunch, I decided to initialize the NoDbgRegParms to empty and ditch the "toggle attempt" in the config files; it seems to have worked.<br><br><br>Summary.<br><br>Let me know if<br><br>a. the fix is unnacceptable (I will keep digging)<br>b. more testing is needed.<br>c. etc.<br><br><br><div><br></div><div><br></div><div>Cordially,<br></div><br>tty.<br><br><br></div></body></html>