<div dir="ltr"><div>Jayvee,</div><div><br></div><div>Your question seems quite clear. I hope this response is equally so.</div><div><br></div><div>First off, the segment attribute names a register, whose contents is added to the address value computed by the other address expression. So in a real sense, a pair of attributes like DW_AT_segment and DW_AT_pc forms "just an address". Whether that address can vary at runtime is a property of the underlying hardware together with the applicable compiler technology. Just because an address expression can describe changing segments does not mean that capability is actually used, usable or useful.</div><div><br></div><div>Second, DW_AT_segment computes a register name, much like other register location descriptions (DW_OP_reg0). Just as you can't add one to the register name R0 and expect it to "compute" the register name R1, you can't do arithmetic on segment names and expect to get a different segment name. You can select among different segment names at different points in a program.</div><div><br></div><div>Relocations, of course, are not part of DWARF as such. They are a compilation tool mechanism used to create the ultimate DWARF seen and used during program execution. DW_AT_segment is "inspired" by the x86 segment registers of course, although potentially usable for other architectures. In the case of the x86, I doubt it would ever be meaningful to use a relocation to change the allocation of segment registers at load time. Thus, for that architecture, I can't imagine that the operand of the DW_AT_segment register would ever be anything other than a simple unrelocated segment register name.</div><div><br></div><div>This is not because other expressions (whether affected by relocations or not) could not be meaningful ever for any architecture but because they are not useful on the x86 specifically.</div><div><br></div><div>Hope that helps,</div><div>Ron Brender</div><div>DWARF Committee Member<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Sep 26, 2019 at 6:33 AM Jayvee Neumann via Dwarf-Discuss <<a href="mailto:dwarf-discuss@lists.dwarfstd.org">dwarf-discuss@lists.dwarfstd.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace">Dear DWARF experts,</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">I have a question regarding the attribute DW_AT_segment. I do not quite understand how to handle it, yet.</div><div class="gmail_default" style="font-family:monospace,monospace">It can appear in a DIE (or its parent) whenever DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges, DW_AT_entry_pc, or a location description that evaluates to an Address are used.</div><div class="gmail_default" style="font-family:monospace,monospace">It can contain a location expression itself. So it can depend not only on compile-time information but also on run-time information.<br></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">Assume, I have an attribute DW_AT_low_pc. If there is no DW_AT_segment, this attribute is simply the low_pc as it was determined during compile-time. While debugging, this value has to be relocated if the image had been relocated. If there is a DW_AT_segment expression is relocation still necessary? Evaluating the expression could also incorporate the usage of run-time information and relocated addresses (i.e. the DS/CS/SS registers).</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">I hope I was able to articulate my question well, English is not my native language.</div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">Kind Regards</div><div class="gmail_default" style="font-family:monospace,monospace">Jayvee<br></div></div>
_______________________________________________<br>
Dwarf-Discuss mailing list<br>
<a href="mailto:Dwarf-Discuss@lists.dwarfstd.org" target="_blank">Dwarf-Discuss@lists.dwarfstd.org</a><br>
<a href="http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org" rel="noreferrer" target="_blank">http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org</a><br>
</blockquote></div>