[ dwarfdump ] Add symbolic dump of known DWARF attribute values.

David Blaikie dblaikie at gmail.com
Wed Sep 3 14:01:53 PDT 2014


Such a function might even go in Dwarf.h/Dwarf.cpp

(& do we have any (/should we add some) for these various attributes? The
test case updates touch on a few of these attributes, but not all of them)


On Wed, Sep 3, 2014 at 1:56 PM, David Blaikie <dblaikie at gmail.com> wrote:

> Perhaps we could avoid the goto & offload some of the repetition from the
> macro like this:
>
> const char *Name = nullptr;
>
> switch (attr) {
> #define ENUM_TO_STRING_ATTRIBUTE(NAME)
>   if (Optional<uint64_t> Val = formValue.getAsUnsignedConstant())
>     Name = NAME##String(*Val);
>   break;
>
>   case ...
>     ...
>   // no default here
> }
>
> if (Name)
>   OS << Name;
> else
>   formValue.dump(OS, u);
>
> Or even refactor the switch into a function, then you can just have this
> in the macro:
>
>   if (Optional<uint64_t> Val = ...)
>     return *Val;
>
> and a "return nullptr" at the end.
>
>
> On Wed, Sep 3, 2014 at 1:38 PM, Frédéric Riss <friss at apple.com> wrote:
>
>> Here is a new version rebased on the reviewed FormValue accessor patch.
>>
>> OK?
>>
>>
>> On 03 Sep 2014, at 21:12, Adrian Prantl <aprantl at apple.com> wrote:
>>
>>
>> On Sep 3, 2014, at 12:03 PM, Frédéric Riss <friss at apple.com> wrote:
>>
>>
>> On 03 Sep 2014, at 20:57, Adrian Prantl <aprantl at apple.com> wrote:
>>
>>
>> On Sep 3, 2014, at 11:52 AM, Frédéric Riss <friss at apple.com> wrote:
>>
>> This patch introduces symbolic dump of all the DWARF standard values
>> (defined in Dwarf.h). It requires the previous DWARFFormValue accessor
>> patch. The fixed accessibility test shows that it’s much easier to check
>> that the test is actually correct, rather than having to cross-check with
>> the enumerator value.
>>
>> OK?
>> <dwarfdump-SymbolicAttributes.diff>
>>
>>
>> If you look at lib/Support/Dwarf.cpp, there is already a similar switch
>> table for converting all the attribute names. We should probably only have
>> one such implementation.
>>
>>
>> Really, which one? I see tables converting from various enum to const
>> char * value, but my switch associates DW_AT_* attributes with the
>> corresponding attribute enumeration. This patch uses all the switch
>> functions in Dwarf.cpp, but AFAICS it doesn’t duplicate anything. But maybe
>> I’m looking at the wrong place?
>>
>>
>> My apologies, you are correct! That email went out too fast.
>>
>> -- adrian
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140903/ba2687b5/attachment.html>


More information about the llvm-commits mailing list