Sponsored Content
Operating Systems Linux LD_PRELOAD on x86_64 gives error from ld.so Post 302177685 by Manish Mukherje on Saturday 22nd of March 2008 04:48:32 PM
Old 03-22-2008
LD_PRELOAD on x86_64 gives error from ld.so

I have implemented an interposer for open() and open64() system call.

This interposer is implemented in interposer.c and I have compiled it in a shared library (libinterposer.so) using the following commands:

gcc -g -fPIC -s -o interposer.o -c interposer.c
gcc -s -g -shared -nostartfiles -o libinterposer.so interposer.o -ldl

This interposer is working on i686 architecture. When I say working, it means, I can set the LD_PRELOAD environment variable to 'libinterposer.so' and intercept all 'open' system calls.

However when I repeat the exact same steps on a x86_64, I get errors from ld.so like so:

manmukhe@sjc-lds-133:[lbt]echo $LD_PRELOAD
libinterposer.x86_64.so

manmukhe@sjc-lds-133:[lbt]touch x.c
ERROR: ld.so: object 'libinterposer.x86_64.so' from LD_PRELOAD cannot be preloaded: ignored.

The file types for libinterposer.so and touch are as follows:

manmukhe@sjc-lds-133:[lbt]file libinterposer.x86_64.so
libinterposer.x86_64.so: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped

manmukhe@sjc-lds-133:[lbt]file /bin/touch
/bin/touch: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), stripped


Here are my questions:
1. What am I doing wrong? Why am I getting the ld.so error?
2. Is there any way to suppress the ld.so errors?
 

8 More Discussions You Might Find Interesting

1. Linux

confused X86_64 and AIX

hello everybody i want to install some package on AIX 5.3 the name of rpm is something like libaio-0.3.106-4.2.x86_64.rpm is it a good rpm for AIX 5.3 my question is is AIX and x86_64 mean the same thing ! thanks (2 Replies)
Discussion started by: eternalflame
2 Replies

2. HP-UX

LD_PRELOAD on HP UX?

Hi , Is LD_PRELOAD supported on HP UX? I am having issues when i export the below export LD_PRELOAD=/usr/local/vertex/commtax_1.0.16/64bit/lib/libctq.so ldd /usr/local/vertex/commtax_1.0.16/64bit/lib/libctq.so /usr/lib/hpux64/dld.so: Unable to find library 'libodbc.so'. Killed Can... (2 Replies)
Discussion started by: psreddy1234
2 Replies

3. UNIX for Advanced & Expert Users

What does LD_PRELOAD signify?

Hi, What does LD_PRELOAD variable signify on HP-UX? thanks in advance, -Ashish (4 Replies)
Discussion started by: shriashishpatil
4 Replies

4. UNIX for Advanced & Expert Users

Preloading libraries.. LD_PRELOAD

well i know what LD_PRELOAD is. Now suppose i have hooked a function XDrawString in the my library (Mylib.so.1) and then used the command export LD_PRELOAD=/path/mylib.so.1 Now suppose i open Xeditor by typing 'xeditor' in the console, my library is geting used, so i knw that this applilcation is... (3 Replies)
Discussion started by: manchester
3 Replies

5. Shell Programming and Scripting

Installing Perl/Tk in x86_64

Hi, experts, I am trying to intall Perl/Tk module (Tk-804.028 ) into Perl5.6.1, however, the directory structure seems to be different from i386 than x86_64 and the installation keeps failing. Is this a known/common issue? Or does anyone has any workaround for this? ~* Dniz *~ (0 Replies)
Discussion started by: dniz
0 Replies

6. UNIX for Advanced & Expert Users

Declaring LD_PRELOAD system wide for dynamic loading

Dear Fellows; As being new to linux, i have tried to synamically load a custom library which overrides some system calls like conncet(), socket() etc.... for custom purposes. It works well, if declaring the environment path LD_PRELOAD and execution of the application to be override... (0 Replies)
Discussion started by: mzeeshan
0 Replies

7. Solaris

Is there a Solaris 10 x86_64

I have always seen a Solaris 10 32 bit version..Is there an x86_64?? (2 Replies)
Discussion started by: kirtikjr
2 Replies

8. Programming

LD_PRELOAD getting ignored .. can anyone tell me why ?

I had it working but i screwed up something and now i get me@mymachine:~$ LD_PRELOAD=/home/me/libf1.o ldd FCaller ERROR: ld.so: object '/home/me/libf1.o' from LD_PRELOAD cannot be preloaded: ignored. ERROR: ld.so: object '/home/me/libf1.o' from LD_PRELOAD cannot be preloaded: ignored. ERROR:... (3 Replies)
Discussion started by: NetworkLearning
3 Replies
SOCKETCALL(2)						     Linux Programmer's Manual						     SOCKETCALL(2)

NAME
socketcall - socket system calls SYNOPSIS
#include <linux/net.h> int socketcall(int call, unsigned long *args); DESCRIPTION
socketcall() is a common kernel entry point for the socket system calls. call determines which socket function to invoke. args points to a block containing the actual arguments, which are passed through to the appropriate call. User programs should call the appropriate functions by their usual names. Only standard library implementors and kernel hackers need to know about socketcall(). call Man page SYS_SOCKET socket(2) SYS_BIND bind(2) SYS_CONNECT connect(2) SYS_LISTEN listen(2) SYS_ACCEPT accept(2) SYS_GETSOCKNAME getsockname(2) SYS_GETPEERNAME getpeername(2) SYS_SOCKETPAIR socketpair(2) SYS_SEND send(2) SYS_RECV recv(2) SYS_SENDTO sendto(2) SYS_RECVFROM recvfrom(2) SYS_SHUTDOWN shutdown(2) SYS_SETSOCKOPT setsockopt(2) SYS_GETSOCKOPT getsockopt(2) SYS_SENDMSG sendmsg(2) SYS_RECVMSG recvmsg(2) SYS_ACCEPT4 accept4(2) SYS_RECVMMSG recvmmsg(2) SYS_SENDMMSG sendmmsg(2) CONFORMING TO
This call is specific to Linux, and should not be used in programs intended to be portable. NOTES
On a some architectures--for example, x86-64 and ARM--there is no socketcall() system call; instead socket(2), accept(2), bind(2), and so on really are implemented as separate system calls. On x86-32, socketcall() was historically the only entry point for the sockets API. However, starting in Linux 4.3, direct system calls are provided on x86-32 for the sockets API. This facilitates the creation of seccomp(2) filters that filter sockets system calls (for new user-space binaries that are compiled to use the new entry points) and also provides a (very) small performance improvement. SEE ALSO
accept(2), bind(2), connect(2), getpeername(2), getsockname(2), getsockopt(2), listen(2), recv(2), recvfrom(2), recvmsg(2), send(2), sendmsg(2), sendto(2), setsockopt(2), shutdown(2), socket(2), socketpair(2) COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/. Linux 2017-09-15 SOCKETCALL(2)
All times are GMT -4. The time now is 09:54 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy