09-20-2001
Runtime Linking shared Objects
I'm runtime linking (dlopen and dlsym) to a shared object (library) I've created and after a number of function calls into the library the program core dumps (Illegal operation). This only occurs during runtime linking. If I use the same library and dynamically link during compile time everything works perfectly.
I've tried different compilers and linking modes, but nothing seems to work. Lately I've been checking my code for bugs even though it's odd that everything works except during runtime linking.
Has anyone experienced anything like this and know what the problem/solution is.
Brief background info:
platform: SunSolaris
library compile options: -fPIC
library link options: -shared
executable compile options: -fPIC
executable link options: -ldl
That's it.
10 More Discussions You Might Find Interesting
1. Programming
I asked the next question in a former thread :
Can I safely share objects that have virtual functions (i.e. have
virtual function table pointers) between two processes ?
Where will the pointers point to in each process ?
The objects are supposed to reside in shared memory
I received a... (6 Replies)
Discussion started by: Seeker
6 Replies
2. Programming
Hi
I'm getting
ld: fatal: option -h and building a dynamic executable are incompatible
ld: fatal: Flags processing errors
When I run
ld -shared -L/usr/dt/lib -lDtSvc -o builtin.so Workspace.o
after running
gcc -fPIC -I/usr/X11R6/include -I/usr/dt/include -c Workspace.c
I'm... (6 Replies)
Discussion started by: laho
6 Replies
3. UNIX for Dummies Questions & Answers
Hi Friends !
I have a library, say libxyz.a.
To view all the object files in the archive, i issued the command :
ar -t libxyz.a
which displayed all the object files it contains.
Now, I would like to know the functions in each object file.
Is there any such command that displays... (3 Replies)
Discussion started by: mrgubbala
3 Replies
4. Programming
hi all !
Do I need all the shared objects to be present while compiling my code which has reference to a only one shared object, which in turn refers to another shared object.
for example I want to compile example.c which refers to sample.so
sample.so has refrence to anothersample.so
do... (2 Replies)
Discussion started by: disclaimer
2 Replies
5. UNIX for Advanced & Expert Users
Hi. Does anyone know by how much a text size of an executable(on ibm) would grow if you link one shared object(library)? Is it a constant number or it depends on a .so that is linked? (3 Replies)
Discussion started by: Yura
3 Replies
6. UNIX for Advanced & Expert Users
Hi,
i am trying to debug a binary which is using a shared lib.
but i could not succeed in tracking the code flow in the classes defined
in this library.
i get: class MyClass <opaque> error
i followed the instructions in the link below:... (0 Replies)
Discussion started by: yakari
0 Replies
7. AIX
I have two envoirmets(Envoirment A and Envoirment B) running on same server(AIX vesion 5.3).Both have different groups.I am facing a strange problem.Shared objects of one envoirment (Envoirment A)are getting loaded into the second(Envoirment B).So the servers that have dependency on shared objects... (2 Replies)
Discussion started by: nitin@tcs
2 Replies
8. Programming
G'day,
I have been working with a large application that makes extensive use of templates. When compiled under Unix (with g++), this sees some rather impressive bloat. I have been trying to make a temporary quick-fix by using the -frepo option, which results in dramatically smaller shared... (0 Replies)
Discussion started by: Elric of Grans
0 Replies
9. Linux
dear Experts,
please help,
actually i am trying to create a .so(shared object through make file through ld)
i am not understaning how to proceed i have tried like
through command like i can do it in 2 step like
my progam :test2.c
$gcc -fPIC -c test2.c
$ld -shared -soname test2.so -o... (1 Reply)
Discussion started by: vin_pll
1 Replies
10. UNIX for Advanced & Expert Users
Hi All......
I have my tool in my one server lets say E1 and same tool I tried to install in E2 server so everything is fine but, while executing the my tool for example...
$ ./batch
At that time Im getting this following error.
./batch: error while loading shared libraries: libqabwvcd.so:... (3 Replies)
Discussion started by: ksrivani
3 Replies
LEARN ABOUT XFREE86
dlsym
DLSYM(3) Linux Programmer's Manual DLSYM(3)
NAME
dlsym, dlvsym - obtain address of a symbol in a shared object or executable
SYNOPSIS
#include <dlfcn.h>
void *dlsym(void *handle, const char *symbol);
#define _GNU_SOURCE
#include <dlfcn.h>
void *dlvsym(void *handle, char *symbol, char *version);
Link with -ldl.
DESCRIPTION
The function dlsym() takes a "handle" of a dynamic loaded shared object returned by dlopen(3) along with a null-terminated symbol name, and
returns the address where that symbol is loaded into memory. If the symbol is not found, in the specified object or any of the shared
objects that were automatically loaded by dlopen(3) when that object was loaded, dlsym() returns NULL. (The search performed by dlsym() is
breadth first through the dependency tree of these shared objects.)
Since the value of the symbol could actually be NULL (so that a NULL return from dlsym() need not indicate an error), the correct way to
test for an error is to call dlerror(3) to clear any old error conditions, then call dlsym(), and then call dlerror(3) again, saving its
return value into a variable, and check whether this saved value is not NULL.
There are two special pseudo-handles that may be specified in handle:
RTLD_DEFAULT
Find the first occurrence of the desired symbol using the default shared object search order. The search will include global sym-
bols in the executable and its dependencies, as well as symbols in shared objects that were dynamically loaded with the RTLD_GLOBAL
flag.
RTLD_NEXT
Find the next occurrence of the desired symbol in the search order after the current object. This allows one to provide a wrapper
around a function in another shared object, so that, for example, the definition of a function in a preloaded shared object (see
LD_PRELOAD in ld.so(8)) can find and invoke the "real" function provided in another shared object (or for that matter, the "next"
definition of the function in cases where there are multiple layers of preloading).
The _GNU_SOURCE feature test macro must be defined in order to obtain the definitions of RTLD_DEFAULT and RTLD_NEXT from <dlfcn.h>.
The function dlvsym() does the same as dlsym() but takes a version string as an additional argument.
RETURN VALUE
On success, these functions return the address associated with symbol. On failure, they return NULL; the cause of the error can be diag-
nosed using dlerror(3).
VERSIONS
dlsym() is present in glibc 2.0 and later. dlvsym() first appeared in glibc 2.1.
ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
+------------------+---------------+---------+
|Interface | Attribute | Value |
+------------------+---------------+---------+
|dlsym(), dlvsym() | Thread safety | MT-Safe |
+------------------+---------------+---------+
CONFORMING TO
POSIX.1-2001 describes dlsym(). The dlvsym() function is a GNU extension.
NOTES
History
The dlsym() function is part of the dlopen API, derived from SunOS. That system does not have dlvsym().
EXAMPLE
See dlopen(3).
SEE ALSO
dl_iterate_phdr(3), dladdr(3), dlerror(3), dlinfo(3), dlopen(3), ld.so(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/.
Linux 2017-09-15 DLSYM(3)