<div dir="ltr"><font face="arial, helvetica, sans-serif">Hey all.</font><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">I had a problem and I fixed it in the compiler, but I'm not sure</font></div>
<div style><font face="arial, helvetica, sans-serif">what the ramifications of my fix are for other people.</font></div><div style><font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif">My goal was to expose some pascal code to python, as per:</font></div>
<div style><font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif"><a href="http://wiki.freepascal.org/Developing_Python_Modules_with_Pascal">http://wiki.freepascal.org/Developing_Python_Modules_with_Pascal</a><br>
</font></div><div><div><font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif">This works fine for me on windows but failed on freebsd/amd64.</font></div><div style>
<font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif">When I would try to load my shared library as a python module, it would fail, saying: "Undefined Symbol: operatingsystem_parameter_envp"</font></div>
<div style><font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif">This issue was reported by someone else but it was (mistakenly?) marked as a duplicate issue and closed:</font></div>
<div style><font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif"><a href="http://bugs.freepascal.org/view.php?id=15422">http://bugs.freepascal.org/view.php?id=15422</a><br>
</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif">Anyway, the problem appears to be in this file:</font></div><div style><font face="arial, helvetica, sans-serif"><br>
</font></div><div style><font face="arial, helvetica, sans-serif"><a href="http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/rtl/freebsd/x86_64/dllprt0.as?revision=25737&view=markup">http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/rtl/freebsd/x86_64/dllprt0.as?revision=25737&view=markup</a><br>
</font></div><div style><font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif">It has the comment:</font></div><div style><font face="arial, helvetica, sans-serif"><br>
</font></div><div style><font face="arial, helvetica, sans-serif"># FreeBSD RunTime dynamic loader only</font></div><div style><font face="arial, helvetica, sans-serif"># calls the functions specified by -init</font></div>
<div style><font face="arial, helvetica, sans-serif"># as functions without parameters</font></div><div style><font face="arial, helvetica, sans-serif"># Thus, it is not possible to retrieve argc, argv and envp <br></font></div>
<div style><table cellpadding="0" cellspacing="0"><tbody><tr class="" id="l23"><td class=""></td>

<td class=""><font face="arial, helvetica, sans-serif"># On x86_64 CPU, using weak for the operatingsystem_parameter_XXX<br></font></td>
</tr>




<tr class="" id="l24">
<td class=""><font face="arial, helvetica, sans-serif"><br></font></td>

<td class=""><font face="arial, helvetica, sans-serif"># allows to bind to main program parameters,</font></td></tr></tbody></table></div><div><font face="arial, helvetica, sans-serif"># but this does not seem to work for i386 loader.
</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div style><font face="arial, helvetica, sans-serif">Then at the bottom:</font></div><div style><font face="arial, helvetica, sans-serif"><br></font></div>
<div style><font face="arial, helvetica, sans-serif">/* Do not fail linkage if argc, argv and envp are not found. */<br></font></div><div style><table cellpadding="0" cellspacing="0"><tbody><tr class="" id="l71"><td class="">
</td></tr><tr class="" id="l72"><td class=""><font face="arial, helvetica, sans-serif">.weak   operatingsystem_parameter_argc<br>.weak   operatingsystem_parameter_argv<br>.weak   operatingsystem_parameter_envp<br><br></font><span style="font-family:arial,helvetica,sans-serif">My change was to comment these lines out and copy the lines from <a href="http://prt0.as">prt0.as</a> :</span><font face="arial, helvetica, sans-serif"><br>
</font></td><td class=""><font face="arial, helvetica, sans-serif"><br></font></td></tr></tbody></table></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div>.global operatingsystem_parameter_envp<font face="arial, helvetica, sans-serif"><br>
</font></div><div>.global operatingsystem_parameter_argc <br></div><div>.global operatingsystem_parameter_argv<br></div><div>.set operatingsystem_parameter_envp,operatingsystem_parameters+0<br></div><div><div>.set operatingsystem_parameter_envp,operatingsystem_parameters+0<br>
</div></div><div><div>.set operatingsystem_parameter_envp,operatingsystem_parameters+0<br></div></div><div><br></div><div style>Then after recompiling fpc, I was able to compile a *.so file usable from python.</div><div><br>
</div><div style>But... It seems like the original .weak version was done quite deliberately, so I suspect that if I submit a patch, it would break</div><div style>things for other people. OTOH, I'd like to get a fix for my issue </div>
<div style>into trunk.</div><div style><br></div><div style>What should I do?</div><div style><br></div><div style><span style="font-family:arial,helvetica,sans-serif">-Michal</span><br></div><div style><font face="arial, helvetica, sans-serif"><a href="http://tangentstorm.com/">http://tangentstorm.com/</a></font></div>
</div><div style><br></div></div>