ups bugs under C++

From: Steffen F. Haeussermann (
Date: Tue Nov 02 1999 - 03:57:52 GMT

  • Next message: Nisha Agarwal: "Unable to step into a function"
    I found several bugs in the 3.34 release during debugging sessions with
    C++ code (C is fine). I do use Solaris releases 2.51, 2.6 and 2.7 with
    the compilers GCC and Sun 4.2.
    C++ step function is extremely slow. For each step the method
    elf_next_symtab is called around 5000 times and the shared libraries are
    opened to check the modification time. This problem does not occur under
    C. The removeal of the comments at line 764-772 will fix the problem.
    However, I guess the idea is here to change a shared library during
    debugging session. This is no longer possible after the below listed
    changes have been applied.
    FILE: ao_elflib.c
    Line 764-772
    /* RGA commented out to get load of dynamic libraries added into
    latest_libdep */
    /**/ if (so->next != NULL) {
      *p_next_st = so->next->symtab;
      return TRUE;
    /* RGA commented out to get load of dynamic libraries added into
    latest_libdep */
    /**/ if (!load_new || so->is_last_symtab)
      return FALSE;/**/
    The step function does not step into any methods of sub classes in the
    case the SUN 4.2 compiler has been used (constructor, overloaded or
    not). The method scan_symtab does ignore the sub class methods in the
    "case N_FUN" section. The "ifdef SUNOS" preprocessor statement does fix
    the problem:
    FILE: ao_symscan.c
    Line 1442-1448
    #ifndef OS_SUNOS   <== ADD THIS LINE
        if ((curfunc != NULL) && (curfunc->fu_addr == nm.n_value))
         stf->stf_flags |= STF_FUNCS_REPEATED;
    #endif   <== ADD THIS LINE
    Variables which have been declared protected or public will not be
    displayed in the case the variable is selected in the code of a sub
    class. The below listed changes in the method match_name_start_in_obj
    will fix the problem.
    FILE: va_menu.c
    Line 1603 (change line to this)
    if (!found) /* go one level up */
    Line 1605 (change line to this)
    if ( (v->va_type->ty_code == TY_UNION || v->va_type->ty_code ==
    TY_STRUCT) &&

    This archive was generated by hypermail 2.1.4 : Wed Feb 13 2002 - 21:56:15 GMT