[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::decladebug

Title:Digital Ladebug debugger
Moderator:TLE::LUCIA
Created:Fri Feb 28 1992
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:969
Total number of notes:3959

868.0. "shared libraries aren't seamless enough" by ADA9X::BRETT () Wed Mar 05 1997 16:04

The following demonstrates that shared libraries aren't as seamless
as one would like.  Since we want to teach customers to use shared libraries
to reduce link-time overhead, we should make the shared/non-shared case
as similar as possible.

In the following, that means that once you decide you can't resolve a 
symbol in the current executable, you should start lookig in the rest
before giving up.

/Bevin


0.csh
-----
rm a.out* *.o* so_locations *.so
$CEXE/deccxx_driver -g -shared -rpath . -o eg_a.so eg_a.cxx
$CEXE/deccxx_driver -o a.out1 -g eg_a.so  eg_b.cxx
$CEXE/deccxx_driver -o a.out2 -g eg_a.cxx eg_b.cxx
ln -s eg.dbxinit .dbxinit
ladebug a.out1
ladebug a.out2
rm .dbxinit
 

eg.dbxinit
----------
stop in BASE_trigger
stop in DERIVED_trigger
run
p bb,dd,b
cont
p bb,dd,b,d
quit


eg.h
----
void BASE_trigger   (int &b);
void DERIVED_trigger(int &d);


eg_a.cxx
--------
#include "eg.h"

int dd;

void BASE_trigger(int &b){
    b++;
    DERIVED_trigger(dd);
}


eg_b.cxx
--------
#include "eg.h"

int bb;

void DERIVED_trigger(int &d){
    d;
}

int main()
{
    BASE_trigger(bb);
    return 0;
}


% source 0.csh
--------------
rm: a.out: No such file or directory
ld:
Warning: Unresolved:
DERIVED_trigger(int&)
eg_a.cxx:
eg_b.cxx:
Welcome to the Ladebug Debugger Version 4.0-31
------------------
object file name: a.out1    	    	    	    	    SHARED LIBRARY FORM
Reading symbolic information ...done
[#1: stop in void BASE_trigger(int&) ]
[#2: stop in void DERIVED_trigger(int&) ]
[1] stopped at [void BASE_trigger(int&):6 0x3ffbfff1ca4]
      6     b++;
Symbol bb not visible in current scope.     	    	    bb should be
visible
Error: no value for bb
0 0
[2] stopped at [void DERIVED_trigger(int&) 0x1200021b4]
1 Symbol dd not visible in current scope.
Error: no value for dd	    	    	    	    	    dd should be
visible
Symbol b not visible in current scope.
Error: no value for b
0
Welcome to the Ladebug Debugger Version 4.0-31
------------------  	    	    	    	    	    NONSHARED FORM
object file name: a.out2
Reading symbolic information ...done
[#1: stop in void BASE_trigger(int&) ]
[#2: stop in void DERIVED_trigger(int&) ]
[1] stopped at [void BASE_trigger(int&):6 0x1200021c4]
      6     b++;
0 0 0	    	    	    	    	    	    	    bb is visible
[2] stopped at [void DERIVED_trigger(int&) 0x120002204]
1 0 Symbol b not visible in current scope.  	    	    dd is visible
Error: no value for b
0

T.RTitleUserPersonal
Name
DateLines