This is the mail archive of the mailing list for the GDB project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Anyone know some reasonably portable way to determine the return address of a function?

    Date: Tue, 06 Jun 2000 18:52:45 -0400
    From: "George T. Talbot" <>

    I'm working on some library code in Linux, and, for debugging purposes, I'd
    like to be able to call dlinfo() on the return address of a function in my
    library so that I can track usage of the function:

    #define magic()         ...woudln't I like to know...

If you're using gcc, look in the gcc documentation at

    void    some_library_function(void)
	    void*   return_address = magic();
	    Dl_info info;

	    if (dlinfo(return_address, &info))
		    fprintf(some_log_file, "some_library_function() called from %s in executable
			    info.dli_sname, info.dli_fname);
		    fprintf(some_log_file, "some_library_function() called from unknown
    caller.\n"); the actual work...

    void    some_code(void)

    In other words, I want magic() above to return the address in some_code()
    where some_library_function() was called.

    Please cc: me if you post a reply to the list, in case I miss your reply.
    George T. Talbot
    <george at moberg dot com>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]