[LTP] [RFC] [PATCH] lib: Fix undefined reference to `mq_open' build failures

Jan Stancek jstancek@redhat.com
Mon Apr 10 09:41:44 CEST 2017



----- Original Message -----
> Hi!
> And unfortunatelly this approach does not seem to work for static
> linking :-(
> 
> Seems I misunderstand how weak symbols are handled, since if the weak
> symbol is linked into the binary the linker does not even try to
> resolve it hence the strong symbol in librt.so is ignored.
> 
> Basically what we wanted to have is the weak_import attribute that could
> be used on apple OSX.
> 
> Anyway possible solutions I can come up with:
> 
> 
> * Switch to dynamic linking for libltp
> 
>   - may be worth the saving some megabytes on file size
> 
>   - would require the dynamic library to be put in the correct path or
>     messing with LD_LIBRARY_PATH though

I'd avoid this, as it makes it more difficult to run tests in-tree.

> 
> 
> * Getting pointer to the mq_open() function via
>   dlysm(RTLD_DEFAULT, "mq_open") and TBROK if we get NULL
> 
>   - this requires the test linked with -ldl though
>     so this is not helping much
> 
> 
> * Splitting the libltp.a into libltp.a and libltprt.a
> 
>   - this is not elegant, but bullet-proof
> 
> 
> * Hacking around build system and link the stub
>   only when -lrt is not in CFLAGS
> 
>   - this is hackery, but would probably work fine
> 
> 
> * Anything else?

Move safe_mq_open to header?

> 
> --
> Cyril Hrubis
> chrubis@suse.cz
> 
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
> 


More information about the ltp mailing list