Minutes, Dwarf 2 meeting, Nov. 9, 1999

The agenda for the meeting was to discuss and clarify the issues which
were mentioned at the Oct. 26 meeting, identify "champions" for each issue,
and encourage committee members to submit written proposals for these
issues.

The following issues list was posted to the email reflector:

Date Prio Status Champion Summary

991007   B I SGI?          Decompose Dwarf2 compilation units
991021   B I Cygnus?      Non-contiguous functions
991026.1 C I ?            Fortran 90 support
991026.2 C I ?            C++ support
991026.3 C I ?            Duplicate Dwarf data deletion
991026.4 C I ?            Java support
991026.5 C I ?            Register overloading
991026.6 C I ?            Optimized code support
991026.7 C I ?            Name demangling
991102   B N D. Anderson  Modify field definitions for 64-bit arch
991108   B I M. Eager     Multiple instruction set support


This list will be updated to include category information.

There were a number of issues posted to the email reflector after this list
was posted. The last issue, as well as the last issue listed above, will
be discussed at the next meeting on November 23.

Please let me know if there are any corrections or clarifications to the
issues discussed below.

Issues
======

Issue 991007 - Decompose Dwarf2 compilation units

    Felix Burton (Diab-SDS) volunteered to be champion for this issue.
    Discussion of this issue appeared to be related to 991026.3 (Duplicate
    Dwarf data deletion). There were comments that it might be possible to
    create dummy compilation units without difficulty. Compilation units
    could also be constructed in the same fashion that C++ static
    initializer routines are built by concatenating similarly named sections
    from different compilation units. Could someone please write a rationale
    for why Compilation Units should be decomposed?

Issue 991026.1 - Fortran 90 support

    This general issue will be decomposed into more specific issues.
    Bevin Brett (Compaq) volunteered to be champion for this issue.

Issue 991026.2 - C++ support

    This general issue will be decomposed into more specific issues.
    Bevin Brett volunteered to champion this issue.

Issue 991026.3 - Duplicate Dwarf data deletion

    Felix Burton volunteered to be champion for this issue.
    Discussion of this issue appears related to parallel ELF ABI proposals.
    Jim Dehnert will post draft of a revised ELF specification which contains
    COMDAT section identification which can be used for merging sections.

    Related to this was an issue raised by Dave Anderson about an ambiguity in
    the description of DW_FORM_ref_addr. This FORM was intended to permit
    references from one compilation unit to another, possibly to permit
    type or other Dwarf descriptions to be placed in library modules. A
    concern was raised that this might require run-time relocation, but it appears
    that this is not likely. After an executable or shared object is linked,
    all DW_FORM_ref_addr references should be resolved as offsets from the start
    of the .debug section. It is not likely that debug sections would be loaded
    into memory in any event. It was also believed that no compiler generates
    DW_FORM_ref_addr attributes.

    Additional discussion emphasized that it was desirable not to place added
    requirements on assemblers or linkers. Extensions to linkers to eliminate
    duplicate data should be a quality of implementation issue, not required
    functionality.

Issue 991026.4 - Java support

    This general issue will be decomposed into more specific issues.
    Jason Merrill (Cygnus) [is this the correct Jason?] volunteered to
    champion this issue.

Issue 991026.5 - Register overloading

    This had been mentioned at the Oct 26 meeting, but no champion was identified.
    It is unclear exactly what the issue is, since Dwarf 2 does address
    registers with different contents at different places in the code.

Issue 991026.6 - Optimized code support

    Bevin Brett volunteered to champion this issue.
    Discussion on this issue concerned about what Dwarf should describe: the
    source or the object code generated from this source. The extent to which
    a debugger wishes to support optimized code is a quality of implementation
    issue. The Dwarf description should not be the limiting factor, so
    extensions which permit (but do not require) debuggers to provide better
    support for optimized code should be identified.

Issue 991026.7 - Name demangling

    Felix Burton volunteered to champion C++/Java name mangling issues. There
    was discussion that Dwarf 2 currently provides mechanisms to clearly
    identify both mangled and source names, but that compilers were not using
    this method. Felix will investigate this and clarify whether extensions are
    needed or whether current practice needs to be modified.

Issue 991102 - Modify field definitions for 64-bit arch

    Dave Anderson (SGI) posted a proposal which was discussed. There appear to
    be two related issues: (1) changes to Dwarf to permit 64-bit addresses and
    (2) support for Dwarf debug files which are greater than 4Gb.

    For (1), it was not clear that any changes were needed, although there were
    places where there were ambiguities in the Dwarf spec which should be
    clarified.

    Support for (2) raises issues of compatibility. This requires all of the
    32-bit offset and length fields be changed to 64-bit. Unless the Dwarf version
    number is changed, it appears that there will be no way that a Dwarf processor
    would be able to distinguish between 32-bit and 64-bit length field.
    It would appear that any debugging file generated with 64-bit offsets would
    contain many bytes of zeros, which to a degree conflicts with an interest
    in compressing Dwarf data. It was also not clear whether or how programs
    consisting of 32-bit offsets and 64-bit offsets could be linked together.