[PATCH] D26526: Clean up DWARFFormValue by reducing duplicated code and removing DWARFFormValue::getFixedFormSizes()

Adrian Prantl via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 10 15:39:39 PST 2016


> On Nov 10, 2016, at 3:33 PM, Adrian Prantl <aprantl at apple.com> wrote:
> 
> aprantl accepted this revision.
> aprantl added a comment.
> This revision is now accepted and ready to land.
> 
> Thanks, I think this is looking good now!
> (with outstanding inline comments addressed)

I just noticed I had an in-flight collision with David's comment about laziness. I'll leave it up to you two to come up with a reasonable design before landing this.

-- adrian
> 
> 
> 
> ================
> Comment at: include/llvm/Support/Dwarf.h:436
> 
> +// Constants that define the DWARF format as 32 or 64 bit.
> +enum DwarfFormat { DWARF32, DWARF64 };
> ----------------
> ///
> 
> 
> ================
> Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:61
> +// is needed because we have two clients: ones that passed in a DWARFUnit, and
> +// ones that pass in a version, address byte size and a DWARFFormat.
> +class FormSizeHelper {
> ----------------
> ///
> 
> 
> ================
> Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:97
> +// FormSizeHelperManual enables us to determine the sizes of some forms using
> +// the supplied Version, AddrSize and Format.
> +class FormSizeHelperManual : public FormSizeHelper {
> ----------------
> ///
> 
> 
> ================
> Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:196
> +
> +static bool skipFormValue(dwarf::Form form, const DataExtractor &DebugInfoData,
> +                   uint32_t *offset_ptr, const FormSizeHelper &FSH) {
> ----------------
> `Form`
> 
> 
> ================
> Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:197
> +static bool skipFormValue(dwarf::Form form, const DataExtractor &DebugInfoData,
> +                   uint32_t *offset_ptr, const FormSizeHelper &FSH) {
> +  bool indirect = false;
> ----------------
> `OffsetPointer` or `OffsetPtr`
> 
> 
> ================
> Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:198
> +                   uint32_t *offset_ptr, const FormSizeHelper &FSH) {
> +  bool indirect = false;
> +  do {
> ----------------
> `Indirect`
> 
> 
> ================
> Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:202
> +    // Blocks if inlined data that have a length field and the data bytes
> +    // inlined in the .debug_info
> +    case DW_FORM_exprloc:
> ----------------
> .
> 
> 
> ================
> Comment at: lib/DebugInfo/DWARF/DWARFFormValue.cpp:253
> +
> +    // signed or unsigned LEB 128 values
> +    case DW_FORM_sdata:
> ----------------
> S ... .
> 
> 
> ================
> Comment at: tools/llvm-dwp/llvm-dwp.cpp:136
>   DataExtractor InfoData(Info, true, 0);
> -  InfoData.getU32(&Offset); // Length
> +  llvm::dwarf::DwarfFormat Format = llvm::dwarf::DwarfFormat::DWARF32;
> +  uint64_t Length = InfoData.getU32(&Offset);
> ----------------
> I think this is file might be using the llvm namespace already?
> 
> 
> ================
> Comment at: unittests/DebugInfo/DWARF/DWARFFormValueTest.cpp:27
> +  Optional<uint8_t> AddrSize;
> +  // Test 32 bit DWARF version 2 with 4 byte addresses
> +  RefSize = DWARFFormValue::getFixedByteSize(DW_FORM_ref_addr, 2, 4, DWARF32);
> ----------------
> .
> 
> 
> ================
> Comment at: unittests/DebugInfo/DWARF/DWARFFormValueTest.cpp:34
> +
> +  // Test 32 bit DWARF version 2 with 8 byte addresses
> +  RefSize = DWARFFormValue::getFixedByteSize(DW_FORM_ref_addr, 2, 8, DWARF32);
> ----------------
> .
> 
> 
> https://reviews.llvm.org/D26526
> 
> 
> 



More information about the llvm-commits mailing list