dlsym() returns 0 for an existing function


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers dlsym() returns 0 for an existing function
# 1  
Old 06-09-2010
dlsym() returns 0 for an existing function

Sometimes I observe this in gdb:
Code:
(gdb) br my_function
Breakpoint .. at 0x...: file ..., line ...

i.e., "my_function" does exist in the current executable.
however, dlsym does not find it:
Code:
(gdb) p dlsym(0,"my_function")
$6 = 0

This is a C program; dlsym does find other defined functions and variables.
(this question stems from this bug report)

What could cause this? How do I avoid this?

---------- Post updated 2010-06-09 at 08:59 AM ---------- Previous update was 2010-06-08 at 03:05 PM ----------

the presence of my_function is also obvious from
Code:
(gdb) p my_function
$21 = {void (void)} 0x486f9c <my_function>

# 2  
Old 06-09-2010
Code:
dlsym(0, "myfunc");
/* should be */
dlsym(RTLD_SELF, "myfunc");

At least on systems I've used....

RTLD_SELF usually expands to something unusual like (void *)-3
# 3  
Old 06-09-2010
it turned out that one has to link the executable with
Code:
ld -export-dynamic

or
Code:
cc -Wl,-export-dynamic



---------- Post updated at 12:29 PM ---------- Previous update was at 12:22 PM ----------

Quote:
Originally Posted by jim mcnamara
Code:
dlsym(0, "myfunc");
/* should be */
dlsym(RTLD_SELF, "myfunc");

At least on systems I've used....

RTLD_SELF usually expands to something unusual like (void *)-3
RTLD_SELF is not defined on linux (2.6.18, CentOS 5.4)
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Windows & DOS: Issues & Discussions

Home Questions Tags Users Unanswered Windows 2016 DNS server returns SERVFAIL for non-existing doma

I have two DNS resolvers in /etc/resolv.conf file. The top one is Windows DNS server, and the bottom one is my wi-fi router. Please see below. nameserver 192.168.1.126 nameserver 192.168.1.1 In Windows DNS server, the sole "Forward Lookup Zone" is biman.net When I query for host in the zone... (6 Replies)
Discussion started by: broy32000
6 Replies

2. Shell Programming and Scripting

Function Returns

I'm having a little trouble returning a value from a function or calling it, I'm not quite sure. I'm calling the function here function region_lookup_with_details { results = $(set_region) echo $results } This is the function I'm calling function set_region { ... (8 Replies)
Discussion started by: akechnie
8 Replies

3. Shell Programming and Scripting

Help in function returns value

Hi, I need to return a value from the function. the value will be the output from cat command which uses random fucntion. #!/bin/ksh hello() { var1=$(`cat /dev/urandom| tr -dc 'a-zA-Z0-9-!%&()*+,-/:;<=>?_'|fold -w 10 | head -n 1`) echo "value is" var1 return var1 } hello var=$?... (2 Replies)
Discussion started by: Nandy
2 Replies

4. Shell Programming and Scripting

Function returns a value but cannot be stored in other variable

I need help to store the value returned from the function to one variable and then use that variable. PREVIOUS_DATE_FUNCTION() { date '+%m %d %Y' | { read MONTH DAY YEAR DAY=`expr "$DAY" - 1` case "$DAY" in 0) MONTH=`expr "$MONTH" - 1` case... (1 Reply)
Discussion started by: aroragaurav.84
1 Replies

5. Shell Programming and Scripting

Function returns wrong values - solved

Hi I have a small function which returns a wrong value. The function tries to make a connection to oracle database and tries to get the open_mode of the database in the variable status. However when a database is down the value of the status column is set to READWRITE i am not sure why. I... (0 Replies)
Discussion started by: xiamin
0 Replies

6. Shell Programming and Scripting

insert pipes for existing and non-existing records

I have a source file like this, L4058S462 34329094 F51010141TK1070000483L4058S462 34329094 0232384840 381892 182 5690 L4058S462 34329094 F51020141FIRST CLEARING, LLC A/C 3432-9094 L4058S462 34329094 F51030141JOHAN HOLMQVIST ... (1 Reply)
Discussion started by: saravanamr
1 Replies

7. Solaris

Add existing user into an existing group

Pre: no gpasswd/adduser there is just usermod can be used, also there is no -a option for usermod. How should I add a user into a group? (4 Replies)
Discussion started by: a2156z
4 Replies

8. Shell Programming and Scripting

folder existing and file existing

I want to look into a folder to see if there are any folders within it. If there are, I need to check inside each folder to see if it contains a .pdf file So If /myserver/myfolder/ contains a folder AND that folder conatins a .pdf file do X Else do Z I may have multiple folders and... (4 Replies)
Discussion started by: crowman
4 Replies

9. Shell Programming and Scripting

function returns string

Can I create a function to return non-interger value in shell script? for example, function getcommand () { echo "read command" read command echo $command } command=$(getcommand) I tried to do something as above. The statement echo "read command" does not show up. ... (5 Replies)
Discussion started by: lalelle
5 Replies

10. UNIX for Advanced & Expert Users

dlsym...error

Hi, I have ftp.so file which on nm gives the following table.... |0x0000c4f8|0x000000f0|FUNC |LOCL |0 |14 |ftp_active |0x0000c00c|0x000000f0|FUNC |LOCL |0 |14 |ftp_ascii |0x0000c0fc|0x000000f0|FUNC |LOCL |0 |14 |ftp_binary |0x0000a8e0|0x000001a8|FUNC |LOCL... (0 Replies)
Discussion started by: Vikky Panchal
0 Replies
Login or Register to Ask a Question