This is the mail archive of the
dwarf2@corp.sgi.com
mailing list for the dwarf2 project.
Re: Requested PROPOSAL(S) regarding multisection location and ranges lists
- To: DWARF2 at corp dot sgi dot com, BRENDER at gemgrp dot zko dot dec dot com
- Subject: Re: Requested PROPOSAL(S) regarding multisection location and ranges lists
- From: brender at gemgrp dot zko dot dec dot com (Ron 603-884-2088)
- Date: Fri, 26 Jan 2001 09:46:58 -0500
- Reply-To: brender at gemgrp dot zko dot dec dot com (Ron 603-884-2088)
Michael Eager wrote:
>.debug_aranges is an optional section. Previous proposals would
>have changed it into a required section. It was the general opinion
>that the location lists in the main body of the Dwarf 2 data should
>be complete, not split between the .debug and .debug_aranges sections.
Sorry, but I can not figure out what that last sentence is trying to say.
What does "location lists in the main body of the Dwarf 2 data" refer to?
Location lists have always lived in the .debug_loc section, never in the
.debug or .debug_aranges sections. And never in more than one section.
No proposal has ever suggested otherwise.
And what does "be complete" mean? Location lists are not complete now,
in that they require knowledge of a base address which comes from someplace
other than the .debug_loc section.
My original 000914.1 proposal for ranges lists proposed that they
co-exist with location lists in the .debug_loc section, but it was
decided during discussion to put them into their own .debug_ranges
section. The subsequent 001101.1 proposal says that discontiguous scope
information for the compilation unit as a whole comes from the
.debug_aranges section; as a consequence there is no need for the
DW_AT_ranges attribute to be valid for the DW_TAG_compile_unit DIE.
This does mean that discontiguous scope information comes from the
.debug_aranges section for the compilation unit as a whole and from
the .debug_ranges section in all other cases. (The .debug_aranges
section ends up serving two purposes: it specifies the discontiguous
scope of the compilation unit and it specifies the bases addresses
to be used for location lists and ranges lists. Of course, a third
purpose is its original one.) While this means that ranges list
information (but not location list information) is split between two
different sections, I don't see that this as a significant problem
in practice.
Perhaps the concern is that under the 001101.1 proposal, the (single)
base address (and scope) of a contiguous compilation unit would be found
using the DW_AT_low_pc (and DW_AT_high_pc) attributes of the
DW_TAG_compile_unit node which is in the .debug section, while for
a non-contiguous compilation unit, the (multiple) base addresses (and
scopes) are found elsewhere, namely in the .debug_aranges section?
(It is true that the later proposals, 001130.1 and 010124.1&.2, do not
have this property.) Is this the "split between the .debug and
.debug_aranges sections" that you are talking about?
Could you please clarify?