Re: dlopen e RTLD_DEEPBIND
Giovanni <[email protected]> Wed, 7 Oct 2015 15:19:46 +0300
| Newsgroups | gmane.os.freebsd.italian.esperti |
|---|---|
| Message-ID | <CAK3jXTWOQcFwoYOYB+iaE+NwZyMiNR9gkiJjZxux71CuVebxWw@mail.gmail.com> |
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 <[email protected]> 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 > _______________________________________________ Esperti mailing list [email protected] http://mailman.gufi.org/mailman/listinfo/esperti