12-25-2009
change the memory address of ld.linux-so in a dynamically linked process
hi,
For some special reason , I'd like to control the memory address for the shared libraries in my dynamically linked process.
And it is the "ld" which interpret the dynamically linked library, and in my system, the "ld-linux.so.2" is put at 0x00812000. Then I use "prelink -r" command to change it address into "0x40000000", and use the "gcc -specs" to choose the new "ld-linux.so.2" as my default interpreter, the the program is compiled and when I use "ldd" I can see the "ld-linux.so.2" is put at "0x4000000" , but when I run the process, it crashed? I find it crash at "_dl_bebug_initialize()" , which access a not exist memory address, "0x008294e0" , I think it is the "got" in the former image.
so is there any solution? Thanks a lot!
ps :
Though I have update the gcc specs to choose the new "ld-linux.so.2" as my default interpreter, how can I choose other libraries, such as "libc.so.6" and "libgcc_s.so.1".
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi friends ,
how do i view a dynamically linked file in unix ?
its there on other system and do i have to ftp it in ASCII format or binary ?
and after the ftp how do i view it ?
thanks in advance
veeras (1 Reply)
Discussion started by: sveera
1 Replies
2. UNIX for Advanced & Expert Users
Hi friends,
i have a dynamically linked file on my solaris system.this is script that runs regularly. How can i read the contents of that ?
when i tried to say "vi filename " then it says executable and nothing is seen.
Please help.
thanks in advance
Veera (5 Replies)
Discussion started by: sveera
5 Replies
3. Programming
hi all,
i have a critical and specific problem with respect to set uid bit on user and the dll's
for a binary, (under the userid A)
it needs libraries from /usr/lib and informix libraries from $INFORMIXDIR/lib/esql
but this binary should be kicked off from id B,
hence s-bit on user is... (5 Replies)
Discussion started by: matrixmadhan
5 Replies
4. UNIX for Advanced & Expert Users
Hello! I was wondering if I could trouble all your experts with a couple questions regarding checking memory usage changes during the run time in the specific program (process) under UNIX.
1. After the program starts running, is ps the best way to tell the total memory usage at the any time?
... (2 Replies)
Discussion started by: aginger
2 Replies
5. UNIX for Dummies Questions & Answers
hi,
For some special reason , I'd like to control the memory address for the shared libraries in my dynamically linked process.
And it is the "ld" which interpret the dynamically linked library, and in my system, the "ld-linux.so.2" is put at 0x00812000. Then I use "prelink -r" command to change... (0 Replies)
Discussion started by: zerocool_08
0 Replies
6. UNIX for Dummies Questions & Answers
Hi all,
I have been working on shared memory. I have created the shared memory and a linked list of 5 nodes. Now I want to attach the linked list to shared memory. When we attach a shared memory it returns a void pointer, but here I am in a fix , how to relate this void pointer to linked list.... (1 Reply)
Discussion started by: jimmyuk
1 Replies
7. Programming
is this possible, if so plz please share with me..
Correct English please, not Cyber-/Leetspeak (11 Replies)
Discussion started by: vijay_manpage
11 Replies
8. UNIX for Advanced & Expert Users
I want address of current virtual memory block?
i am using fedora10:wall::wall: (1 Reply)
Discussion started by: powyama
1 Replies
9. UNIX for Beginners Questions & Answers
So I have a file called queens.cc and I need to do the following:
Compile and make a .o file while specifying that the compiler is to search /student/214/include for system include files.
Use g++, link and load .o file to make a dynamically linked executable file called queens and to also... (1 Reply)
Discussion started by: steezuschrist96
1 Replies
10. UNIX for Beginners Questions & Answers
Hello,
I am running ubuntu 14.04 in a server with 32GB ram.
Due to receiving "high load" errors during ssh connection, I took a look at what's happening from command line. I detected that 20GB of total memory was allocated to a program.
Below you can see some initial part of installation... (4 Replies)
Discussion started by: baris35
4 Replies
LDD(1) Linux Programmer's Manual LDD(1)
NAME
ldd - print shared object dependencies
SYNOPSIS
ldd [option]... file...
DESCRIPTION
ldd prints the shared objects (shared libraries) required by each program or shared object specified on the command line. An example of
its use and output is the following:
$ ldd /bin/ls
linux-vdso.so.1 (0x00007ffcc3563000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f87e5459000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007f87e5254000)
libc.so.6 => /lib64/libc.so.6 (0x00007f87e4e92000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f87e4c22000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f87e4a1e000)
/lib64/ld-linux-x86-64.so.2 (0x00005574bf12e000)
libattr.so.1 => /lib64/libattr.so.1 (0x00007f87e4817000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f87e45fa000)
In the usual case, ldd invokes the standard dynamic linker (see ld.so(8)) with the LD_TRACE_LOADED_OBJECTS environment variable set to 1.
This causes the dynamic linker to inspect the program's dynamic dependencies, and find (according to the rules described in ld.so(8)) and
load the objects that satisfy those dependencies. For each dependency, ldd displays the location of the matching object and the (hexadeci-
mal) address at which it is loaded. (The linux-vdso and ld-linux shared dependencies are special; see vdso(7) and ld.so(8).)
Security
Be aware that in some circumstances (e.g., where the program specifies an ELF interpreter other than ld-linux.so), some versions of ldd may
attempt to obtain the dependency information by attempting to directly execute the program, which may lead to the execution of whatever
code is defined in the program's ELF interpreter, and perhaps to execution of the program itself. (In glibc versions before 2.27, the
upstream ldd implementation did this for example, although most distributions provided a modified version that did not.)
Thus, you should never employ ldd on an untrusted executable, since this may result in the execution of arbitrary code. A safer alterna-
tive when dealing with untrusted executables is:
$ objdump -p /path/to/program | grep NEEDED
Note, however, that this alternative shows only the direct dependencies of the executable, while ldd shows the entire dependency tree of
the executable.
OPTIONS
--version
Print the version number of ldd.
-v, --verbose
Print all information, including, for example, symbol versioning information.
-u, --unused
Print unused direct dependencies. (Since glibc 2.3.4.)
-d, --data-relocs
Perform relocations and report any missing objects (ELF only).
-r, --function-relocs
Perform relocations for both data objects and functions, and report any missing objects or functions (ELF only).
--help Usage information.
BUGS
ldd does not work on a.out shared libraries.
ldd does not work with some extremely old a.out programs which were built before ldd support was added to the compiler releases. If you
use ldd on one of these programs, the program will attempt to run with argc = 0 and the results will be unpredictable.
SEE ALSO
pldd(1), sprof(1), ld.so(8), ldconfig(8)
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/.
2017-09-15 LDD(1)