[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] AIX SONAME emulation, simplified implementation

From: Michael Haubenwallner
Subject: Re: [PATCH] AIX SONAME emulation, simplified implementation
Date: Tue, 07 Jul 2015 17:30:09 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0

Hi Daniel,

On 07/07/2015 04:30 PM, Daniel Ruoso (BLOOMBERG/ 731 LEX) wrote:
> From: address@hidden At: Jul 6 2015 10:50:50
>     On 06/24/2015 03:34 PM, Daniel Ruoso (BLOOMBERG/ 731 LEX) wrote:
>     > This patch offers a simplified implementation of a SONAME-like behavior 
> emulation.
>     I've tried this variant of soname-emulation too, but discovered the one 
> using
>     the ",shr.imp)" archive (=svr4) as the more reasonable 
> compromise.
>     Is there a specific reason you need/want this simplified implementation?
> The main reason is actually non-libtool build systems, where I have to 
> implement this
> by hand. The .so as text file is a much simpler implementation for situations 
> where I have
> to torture a hand-rolled build-system into producing a versionable shared 
> object.

For non-libtool build systems: Have you considered to add (optional) libtool 
instead of implementing sharedlib details? This does not mean to completely 
but to use the (separate) libtool script[1] as the compiler/linker - something 

  OBJS = *.lo
  CC = libtool --mode=compile --tag=CC gcc
  CXX = libtool --mode=compile --tag=CXX g++
  LD = libtool --mode=link --tag=CXX g++


>     > This is different in the sense that it doesn't add archives disguised 
> as .so files,
>     Yeah, instead it does provide plain text files disguised as .so files.
>     Besides that, there's potential for more different confusion:
>     *) Linking with "/path/to/" produces different result than
>     linking with "/path/to/" (difference is in the runpath).
>     *) dlopen("") fails, while dlopen("") does work.
>     *) Provides two distinct files, instead of one single file with symlinks.
> Those are fair points, I haven't considered them since all my AIX builds 
> happen in very
> controlled setups.

Even controlled setups can be portable...

> I could maybe argue that the dlopen case is a degenerate case, because the
> runtime interface of a versioned shared library is its SONAME, not the 
> unversioned .so,


> and for shared objects that are intended to be dlopen'ed (which libtool calls 
> modules),
> my patch won't affect them.
>     > and instead relies on the fact that the AIX linker will take an import 
> file when
>     > looking for -l<foo>, and will record what the import file says.
>     This very detail isn't anything different compared to aix-soname=svr4.
> Fair point again...
> I think the main problem is that we implemented this patches in parallel, but 
> I forgot to
> release mine for a long time, and you did a much better job at it :).

Thank you! ;)

> I'll investigate how hard would it be to use your version of it for libtool 
> projects
> (even if I still do the simplified version for hand-rolled build systems).

I've experienced that there isn't so much difference adding svr4-mode to 
build system compared to adding simple-mode, given that you have to 
touch that build system anyway.

OTOH, once I've wrapped[2] the ld command to accept the '-soname' flag.
Combined with an mkexpfile[3] command to get the exported symbols right,
the diff for any build system can become quite small[4].



reply via email to

[Prev in Thread] Current Thread [Next in Thread]