Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Giovanni <verginegiovanni <at> gmail.com>
Subject: Re: dlopen e RTLD_DEEPBIND
Newsgroups: gmane.os.freebsd.italian.esperti
Date: Wednesday 7th October 2015 12:19:46 UTC (over 2 years ago)
Salve a tutti,

Se puo' essere d'aiuto, come spiegato qui
http://stackoverflow.com/questions/6940384/how-to-deal-with-symbol-collisions-between-statically-linked-libraries
,
si potrebbe usare objcopy (
http://www.freebsd.org/cgi/man.cgi?query=objcopy&sektion=1&apropos=0&manpath=FreeBSD%2B10.0-RELEASE)
su entrambi i .o delle librerie statiche in questo modo:

$ objcopy --prefix-symbols=mysql_ some_libmysql_object.o

$ objcopy --prefix-symbols=pg_ some_libpostgres_object.o

quindi chiamando nm su i due .o dovresti vedere mysql_malloc e pg_malloc

ma questo richiedebbe decomprimere la libreria statica, chiamare
objcopy, ricomprimerla. Non so cosa succederebbe in caso di chiamate
alla funzione originale da parte della libreria stessa.

Giovanni


Il giorno 7 ottobre 2015 14:56, Ferruccio Zamuner  ha
scritto:

> Ciao Gianluca,
>
> se ho ben capito dici di creare due wrapper, ciascuno che linka in modo
> statico la propria libreria e disambigua i nomi delle funzioni (o
> genericamente simboli).
> Quindi adattare il codice dell'estensione del postgresql in modo da non
> usare i nomi ambigui ma quelli disambiguati dai wrapper.
>
> Beh, si', sembra che potrebbe funzionare.
>
> Mi e' sfuggito qualcosa?
>
>
> Ciao,                       \ferz
>
>
> On 07/10/2015 13:41, Gianluca Sordiglioni wrote:
>
>> È un problema mica da ridere. Potresti fare un file che funge da
>> collante, in glue.h dove per ogni funzione duplicata ne crei una nuova
con
>> altro nome la quale semplicemente richiama l'altra funzione; ad esempio
>> newmalloc richiama malloc. Non so come si comporterebbe il linker visto
che
>> avresti comunque i simboli duplicati.
>> Forse potresti creare un altro progetto con una dynlib in modo che sia
>> autocontenuta: ma sempre a patto di avere il controllo del codice,
caricare
>> la dynlib e specificare la newmalloc invece di malloc.
>> Non mi viene in mente altro per aiutarti.
>>
>> Gianluca
>>
>
> _______________________________________________
> Esperti mailing list
> [email protected]
> http://mailman.gufi.org/mailman/listinfo/esperti
>
 
CD: 3ms