02-11-2005
The OP doesn't want an address at all. Inside function1, he wants to do something and get either "function2" or "main" as the result, depending on which of those called him. This might mean obtaining the the returm address as an intermediate result and then scanning a symbol table, but the address is not the objective. This would only be doable if the program was compiled with symbolic debugging information included as for use with a symbolic debugger like gdb. I'm not going to try something that daunting for such a minor result.
If I really needed that, I would expand the argument list of the function1 module to contain a field called "caller". Then I use:
function1("main")
function1("function2")
as needed. function1 would refer to the first argument to find the caller.
10 More Discussions You Might Find Interesting
1. Cybersecurity
they are having an operator call my home line and also my cell number and they are typing and the operator tells me what they are typing on their computer. i nevere heard of this. it is new to me. it is free the operator said, they knew my name and also a friend of mine's name...the phone says the... (2 Replies)
Discussion started by: gail
2 Replies
2. UNIX for Dummies Questions & Answers
Hello.
I want to copy temp files when I make a new file by vi.
For example,
09:32:52 ~/ $ mkdir test
09:33:03 ~/ $ cd test/
09:33:09 ~/test/ $ ls
09:33:16 ~/test/ $ vi test.cpp
09:34:37 ~/test/ $ cat test.cpp
#include <iostream>
int main()
{
}
09:34:48 ~/test/ $ vi test.bash
09:35:19... (1 Reply)
Discussion started by: Euler04
1 Replies
3. UNIX for Dummies Questions & Answers
I have created a shortcut for the file kill_process.sh as shown below.
alias kill_process="sh /root/kill_process.sh"
It is working as per my expectations. But I have 2 questions.
1) Is there any better way?
2) How do I check what does kill_process link to? (1 Reply)
Discussion started by: shantanuo
1 Replies
4. Programming
Hi,
I am trying to execute a perl script from c program.
I tried using system command.
system("perl test.pl filename") ;
This perl program takes filename as input and prints a number
to screen.
I need to get that returned number in C program.
system command is... (3 Replies)
Discussion started by: pkusumam
3 Replies
5. Shell Programming and Scripting
Hi,
How to call a file in shell script?
I need to execute a file in shell script whether its possibel if it please give some example
please help me (4 Replies)
Discussion started by: thelakbe
4 Replies
6. Homework & Coursework Questions
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
I must write a shell script that calls two external Perl functions--one of which sorts the data in a file, and... (6 Replies)
Discussion started by: kowit010
6 Replies
7. Shell Programming and Scripting
Hi. I have been running some scripts ok with no extension on the name, and they work fine. What difference does it make if I call them whatever.sh? And I have some scripts starting #!/bin/bash - which debian recognises as shell scritps, even without the .sh ending - and some which don't. I'm sure... (8 Replies)
Discussion started by: triplemaya
8 Replies
8. Shell Programming and Scripting
Greetings all,
I am calling a remove from within a script that is used for a cleanup process.. It is not working as expected. Here is what I am doing.
I have a config file that lists out a directory name, and the options to run
Within the config file
DIR1="find... (9 Replies)
Discussion started by: jeffs42885
9 Replies
9. Shell Programming and Scripting
Hello
Current working script is :
#
# my_script BEGIN
#
function a_function {
FIRST_PARAM="$1"
DO_SOMETHING "$FIRST_PARAM"
}
export -f a_function
START_HERE="/home/some_user/Documents"
find $START_HERE" -exec bash -c 'a_function "$0" ' {} \; (5 Replies)
Discussion started by: jcdole
5 Replies
10. Shell Programming and Scripting
I'm trying to do something like this:
find . -name blablabla -exec ln -s ./"{:53:14} blablabla" \;
The idea is find blablabla and create a symbolic link to it using part of it's path and then it's name, "blablabla."
I just don't know if I can call characters out of a find variable. ... (16 Replies)
Discussion started by: scribling
16 Replies
DLSYM(3) BSD Library Functions Manual DLSYM(3)
NAME
dlsym -- get address of a symbol
SYNOPSIS
#include <dlfcn.h>
void*
dlsym(void* handle, const char* symbol);
DESCRIPTION
dlsym() returns the address of the code or data location specified by the null-terminated character string symbol. Which libraries and bun-
dles are searched depends on the handle parameter.
If dlsym() is called with a handle, returned by dlopen() then only that image and any libraries it depends on are searched for symbol.
If dlsym() is called with the special handle RTLD_DEFAULT, then all mach-o images in the process (except those loaded with dlopen(xxx,
RTLD_LOCAL)) are searched in the order they were loaded. This can be a costly search and should be avoided.
If dlsym() is called with the special handle RTLD_NEXT, then dyld searches for the symbol in the dylibs the calling image linked against when
built. It is usually used when you intentionally have multiply defined symbol across images and want to find the "next" definition. It
searches other images for the definition that the caller would be using if it did not have a definition. The exact search algorithm depends
on whether the caller's image was linked -flat_namespace or -twolevel_namespace. For flat linked images, the search starts in the load
ordered list of all images, in the image right after the caller's image. For two-level images, the search simulates how the static linker
would have searched for the symbol when linking the caller's image.
If dlsym() is called with the special handle RTLD_SELF, then the search for the symbol starts with the image that called dlsym(). If it is
not found, the search continues as if RTLD_NEXT was used.
If dlsym() is called with the special handle RTLD_MAIN_ONLY, then it only searches for symbol in the main executable.
RETURN VALUES
The dlsym() function returns a null pointer if the symbol cannot be found, and sets an error condition which may be queried with dlerror().
NOTES
The symbol name passed to dlsym() is the name used in C source code. For example to find the address of function foo(), you would pass "foo"
as the symbol name. This is unlike the older dyld APIs which required a leading underscore. If you looking up a C++ symbol, you need to use
the mangled C++ symbol name.
SEE ALSO
dlopen(3) dlerror(3) dyld(3) ld(1) cc(1)
August 28, 2008