[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

845.0. "Viewing enums fails for shared objects" by DECC::MJHANS (Matthew Hanselman, DEC C) Tue Feb 18 1997 14:42

    This is a regression between 4.0-30 and 4.0-26 (i.e. worked for 4.0-26)
    
    Viewing the enumerated variable "var" within foo() works fine for a
    statically linked version of the program, but gives a stack trace for
    the shared version.
    
    							- Matt
    
    --------------------------------------------------------
    // share.h
    enum tag {zero, one};
    --------------------------------------------------------
    // share.cxx
    #include "share.h"
    
    extern tag var;
    
    void foo()
    {
      var = one;
    }
    --------------------------------------------------------
    // main.cxx
    #include "share.h"
    
    tag var = zero;
    
    extern void foo();
    
    main()
    {
      foo();
    } 
    
    =========================================================================
    
    non-shared version:
    
    % cxx -g -O0 main.cxx share.cxx
    % ladebug a.out
    Welcome to the Ladebug Debugger Version 4.0-30
    ------------------ 
    object file name: a.out 
    Reading symbolic information ...done
    (ladebug) stop in foo
    [#1: stop in void foo(void) ]
    (ladebug) run
    [1] stopped at [void foo(void):8 0x120002188]
          8   var = one;
    (ladebug) print var
    zero
    (ladebug) 
    
    =========================================================================
    
    shared version:
    
    % cxx -g -O0 -c share.cxx
    % ld -expect_unresolved "*" -taso -o share.so -shared share.o -lots -lc
    % cxx -g -O0 -taso -call_shared -rpath ./ main.cxx share.so
    % ladebug a.out
    Welcome to the Ladebug Debugger Version 4.0-30
    ------------------ 
    object file name: a.out 
    Reading symbolic information ...done
    (ladebug) stop in foo
    [#1: stop in void foo(void) ]
    (ladebug) run
    [1] stopped at [void foo(void):8 0x6fff0b98]
          8   var = one;
    (ladebug) print var
    Assertion failed: isComplete() src/libsrc/ladebug/symbol.C 2165
    This is an unexpected condition and may indicate the presence of a defect.
    If you wish to report this, please include the stack trace that follows.
    Diagnostic stack trace ...
    0x12383f8c
    0x123842d0
    0x1238ddd8
    0x1244ea88
    0x1244eb18
    0x1244f160
    0x1244ede4
    0x1244f184
    0x1244ede4
    0x1244f160
    0x1244ede4
    0x1244f160
    0x122af97c
    0x122a2acc
    0x12251c74
    0x1221ac64
    0x12206154
    0x121f61d4
    0x121f32dc
    end of diagnostic stack trace.
    (ladebug) [1] stopped at [void foo(void):8 0x6fff0b98]
          8   var = one;
    (ladebug)
T.RTitleUserPersonal
Name
DateLines
845.1TLE::MURRAYWanfang MurrayMon Feb 24 1997 08:014
Thanks for the problem report.  We will look into this.

Wanfang