.so dynamic library mangling tool

Sergey Kuznetsov tlug-9a/WvBvX2Qpg9hUCZPvPmw at public.gmane.org
Sun Dec 5 16:49:06 UTC 2004


Steve Harvey wrote:

>On Sat, Dec 04, 2004 at 10:12:46PM -0500, Sergey Kuznetsov wrote:
>  
>
>>The issue was not the library itself ( the library at the right place, 
>>at /lib directory )
>>but with the .so file itself.
>>that file is a optional part of the Asterisk PBX program, and it's G.729 
>>codec library,
>>and specifically for GLIB 2.3 X86_64 platform under Gentoo.
>>The error Asterisk gives me is:
>>
>>[codec_g729a.so]Dec  4 19:34:04 WARNING[16384]: loader.c:248 
>>ast_load_resource: /usr/lib/asterisk/modules/codec_g729a.so: undefined 
>>symbol: gzread
>>Dec  4 19:34:04 WARNING[16384]: loader.c:429 load_modules: Loading 
>>module codec_g729a.so failed!
>>
>>The ldd saying about codec_g729a.so is:
>># ldd codec_g729a.so
>>       libc.so.6 => /lib/libc.so.6 (0x0000002a9567d000)
>>       /lib64/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 
>>(0x000000552aaaa000)
>>
>>The nm -D codec_g729a.so saying is:
>>                U gzclose
>>                U gzdopen
>>                U gzread
>>
>>The nm -D /lib/libz.so saying is:
>>00000000000035f0 T gzclose
>>00000000000026a0 T gzdopen
>>0000000000002ab0 T gzread
>>
>>The objdump -x codec_g729a.so saying is:
>>Dynamic Section:
>> NEEDED      libc.so.6
>> INIT        0x35c0
>>
>>As you can see here is the NEEDED libz.so is absent. And this is I am 
>>trying to fix. Thats why I need such tool who can mangle the any 
>>library's header I want.
>>
>>    
>>
>  I assume that setting the LD_PRELOAD environment variable is not an 
>option in your situation.
>
>  I don't know of any single tool that will do that.  Perhaps you might
>be able to carve the library up with objcopy and re-build it using ld
>and a specially crafted linker script in order to get both NEEDED 
>entries.
>
>  If you have write perms on /usr/local/lib, I might try building a 
>customized libc to which the libz modules have been added, making it 
>reachable via /usr/local/lib/libZ.so.6 (making sure that libZ is unique
>in your system).  Ensure that its internal SONAME is "libZ.so.6" (vi
>makes a good binary editor), run ldconfig, then use a patched 
>codec_g729a.so with the "libc.so.6" string in the file suitably altered.
>
>  
>
LD_PRELOAD - does it!!!!

Thanks a looooooooooot Steve!


I completely forgot about LD_PRELOAD. IT did the trick.



All the Best!
Sergey.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://gtalug.org/pipermail/legacy/attachments/20041205/349b0a61/attachment.html>


More information about the Legacy mailing list