help with dl module and clang
Daniel Braniss
danny at cs.huji.ac.il
Sat Nov 3 17:31:46 UTC 2018
> On 3 Nov 2018, at 18:35, Konstantin Belousov <kostikbel at gmail.com> wrote:
>
> On Sat, Nov 03, 2018 at 06:11:19PM +0200, Daniel Braniss wrote:
>>
>>
>>> On 3 Nov 2018, at 17:58, Daniel Braniss <danny at cs.huji.ac.il> wrote:
>>>
>>>
>>>
>>>> On 3 Nov 2018, at 17:47, Dimitry Andric <dim at FreeBSD.org> wrote:
>>>>
>>>> On 3 Nov 2018, at 15:51, Daniel Braniss <danny at cs.huji.ac.il> wrote:
>>>>>
>>>>> I have a program that loads some modules via dlopen(), these modules call some routines
>>>>> which are in the main program, this works when using gcc, but with cc it does not.
>>>>>
>>>>> when compiling the main program I use -export-dynamic, and the modules link fine when compiled with
>>>>> gcc, but when compiling with clang/cc i get dlerror: ...Undefined symbol …
>>>>> BTW, when linking the main program with cc I get
>>>>> /usr/bin/ld: warning: cannot find entry symbol xport-dynamic; defaulting to 0000000000402140
>>>>
>>>> Instead of using -export-dynamic (which is a linker flag) as a flag to
>>>> cc, try using -Wl,-export-dynamic instead. Now, the linker interprets
>>>> this as the -e flag, which is something totally different.
>>>>
>>>
>>> i had tried that before but i had -WI (upper case i) but re-reading the manual
>>> it should be-Wl (lower case l as in lima :-))!!!!!
>>>
>>> thanks!!!!!!
>>>
>>> and now have to try profiling (gprof) which started this mess,
>>>
>>> thanks again!!
>>>
>>> danny
>>>
>>>
>>>> I think this will also help with the exporting of the symbols of your
>>>> main program.
>>>>
>>>> -Dimitry
>>>>
>>>
>> ok, new problem, it also happens with gcc:
>>
>> when compiling the main program with flag -pg (gprof)
>> dlopen fails with dlerror: Service unavailable
> This means that your binary is linked statically.
> dlopen(3) is not supported for static linking, ld-elf.so.1 is required
> for dynamic loading to work.
as far as I can tell, it’s NOT statically linked:
l
e-kots-b# ldd /vol/src/libexec/idng/idngd/idngd
/vol/src/libexec/idng/idngd/idngd:
libpq.so.5 => /usr/local/lib/libpq.so.5 (0x800932000)
libcrypto.so.8 => /lib/libcrypto.so.8 (0x800c00000)
libldap-2.4.so.2 => /usr/local/lib/libldap-2.4.so.2 (0x801070000)
libthr.so.3 => /lib/libthr.so.3 (0x8012b7000)
libintl.so.8 => /usr/local/lib/libintl.so.8 (0x8014df000)
libssl.so.8 => /usr/lib/libssl.so.8 (0x8016ea000)
libc.so.7 => /lib/libc.so.7 (0x80195d000)
liblber-2.4.so.2 => /usr/local/lib/liblber-2.4.so.2 (0x801d18000)
e-kots-b# file !$
file /vol/src/libexec/idng/idngd/idngd
/vol/src/libexec/idng/idngd/idngd: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 11.2 (1102501 <tel:1102501>), FreeBSD-style, not stripped
>
>>
>> what magic is needed now?
>>
>> danny
>>
>>> _______________________________________________
>>> freebsd-hackers at freebsd.org <mailto:freebsd-hackers at freebsd.org> mailing list
>>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers <https://lists.freebsd.org/mailman/listinfo/freebsd-hackers>
>>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org <mailto:freebsd-hackers-unsubscribe at freebsd.org>"
>>
>> _______________________________________________
>> freebsd-hackers at freebsd.org <mailto:freebsd-hackers at freebsd.org> mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers <https://lists.freebsd.org/mailman/listinfo/freebsd-hackers>
>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org <mailto:freebsd-hackers-unsubscribe at freebsd.org>"
More information about the freebsd-hackers
mailing list