<div dir="ltr"><div><div>Maybe: gcc -Wl,--start-group foo.o bar.o -Wl,--end-group<br></div><br></div>quote from man ld:<br>It is best to use it only when there are unavoidable circular references between two or more archives.<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Mar 1, 2018 at 6:18 PM, Kaushal M <span dir="ltr">&lt;<a href="mailto:kshlmster@gmail.com" target="_blank">kshlmster@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"><div class="HOEnZb"><div class="h5">On Thu, Mar 1, 2018 at 6:14 PM, Kaushal M &lt;<a href="mailto:kshlmster@gmail.com">kshlmster@gmail.com</a>&gt; wrote:<br>
&gt; On Thu, Mar 1, 2018 at 12:52 PM, Kaushal M &lt;<a href="mailto:kshlmster@gmail.com">kshlmster@gmail.com</a>&gt; wrote:<br>
&gt;&gt; On Wed, Feb 28, 2018 at 9:50 PM, Kaleb S. KEITHLEY &lt;<a href="mailto:kkeithle@redhat.com">kkeithle@redhat.com</a>&gt; wrote:<br>
&gt;&gt;&gt; On 02/28/2018 10:49 AM, Kaushal M wrote:<br>
&gt;&gt;&gt;&gt; We have a GlusterD2-4.0.0rc1 release.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Aravinda, Prashanth and the rest of the GD2 developers have been<br>
&gt;&gt;&gt;&gt; working hard on getting more stuff merged into GD2 before the 4.0<br>
&gt;&gt;&gt;&gt; release.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; At the same time I have been working on getting GD2 packaged for Fedora.<br>
&gt;&gt;&gt;&gt; I&#39;ve been able to get all the required dependencies updated and have<br>
&gt;&gt;&gt;&gt; submitted to the package maintainer for merging.<br>
&gt;&gt;&gt;&gt; I&#39;m now waiting on the maintainer to accept those updates. Once the<br>
&gt;&gt;&gt;&gt; updates have been accepted, the GD2 spec can get accepted [2].<br>
&gt;&gt;&gt;&gt; I expect this to take at least another week on the whole.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; In the meantime, I&#39;ve been building all the updated dependencies and<br>
&gt;&gt;&gt;&gt; glusterd2-v4.0.0rc1, on the GD2 copr [3].<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I tried to test out the GD2 package with the GlusterFS v4.0.0rc1<br>
&gt;&gt;&gt;&gt; release from [4]. And this is where I hit the blocker.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; GD2 does not start with the packaged glusterfs-v4.0.0rc1 bits. I&#39;ve<br>
&gt;&gt;&gt;&gt; opened an issue on the GD2 issue tracker for it [5].<br>
&gt;&gt;&gt;&gt; In short, GD2 fails to read options from xlators, as dlopen fails with<br>
&gt;&gt;&gt;&gt; a missing symbol error.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; ```<br>
&gt;&gt;&gt;&gt; FATA[2018-02-28 15:02:53.345686] Failed to load xlator options<br>
&gt;&gt;&gt;&gt;         error=&quot;dlopen(/usr/lib64/<wbr>glusterfs/4.0.0rc1/xlator/<wbr>protocol/server.so)<br>
&gt;&gt;&gt;&gt; failed; dlerror =<br>
&gt;&gt;&gt;&gt; /usr/lib64/glusterfs/4.0.0rc1/<wbr>xlator/protocol/server.so: undefined<br>
&gt;&gt;&gt;&gt; symbol: glusterfs_mgmt_pmap_signout&quot; source=&quot;[main.go:79:main.main]<wbr>&quot;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; see <a href="https://review.gluster.org/#/c/19225/" rel="noreferrer" target="_blank">https://review.gluster.org/#/<wbr>c/19225/</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; glusterfs_mgmt_pmap_signout() is in glusterfsd. When glusterfsd dlopens<br>
&gt;&gt;&gt; server.so the run-time linker can resolve the symbol — for now.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Tighter run-time linker semantics coming in, e.g. Fedora 28, means this<br>
&gt;&gt;&gt; will stop working in the near future even when RTLD_LAZY is passed as a<br>
&gt;&gt;&gt; flag. (As I understand the proposed changes.)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; It should still work, e.g., on Fedora 27 and el7 though.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; glusterfs_mgmt_pmap_signout() (and glusterfs_autoscale_threads()) really<br>
&gt;&gt;&gt; need to be moved to libglusterfs. ASAP. Doing that will resolve this issue.<br>
&gt;&gt;<br>
&gt;&gt; Thanks for the pointer Kaleb!<br>
&gt;&gt;<br>
&gt;&gt; But, I&#39;m testing on Fedora 27, where this shouldn&#39;t theoretically happen.<br>
&gt;&gt; So then, why am I hitting this. Is it something to do with the way the<br>
&gt;&gt; packages are built?<br>
&gt;&gt; Or is there some runtime ld configuration that has been set up.<br>
&gt;&gt;<br>
&gt;&gt; In any case, we should push and get the offending functions moved into<br>
&gt;&gt; libglusterfs.<br>
&gt;&gt; That should solve the problem for us.<br>
&gt;<br>
&gt; I took a shot at this, and it&#39;s not as easy simple as it appeared.<br>
&gt; I ended up in a recursive linking situation with libglusterfs,<br>
&gt; libgfxdr and libgfrpc.<br>
&gt; Looks like the solution is to create a libglusterfsd.<br>
<br>
</div></div>I see two ways to do this.<br>
1. Make a library out of the whole glusterfsd.<br>
Rename `main` to `init`<br>
And then create a simple executable which loads this library and calls `init`.<br>
<br>
Or,<br>
2. Create a very small library with just the pmap_signout and<br>
autoscale functions. And use that instead.<br>
<br>
If anyone else has a better idea about how to do this please let me know.<br>
<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Kaleb<br>
______________________________<wbr>_________________<br>
Gluster-devel mailing list<br>
<a href="mailto:Gluster-devel@gluster.org">Gluster-devel@gluster.org</a><br>
<a href="http://lists.gluster.org/mailman/listinfo/gluster-devel" rel="noreferrer" target="_blank">http://lists.gluster.org/<wbr>mailman/listinfo/gluster-devel</a></div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr">Milind<br><br></div></div></div></div>
</div>