diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp index 72aadda8c60002..eb7070f55ca64e 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp @@ -51,22 +51,23 @@ Error DWARFDebugAddrTable::extract(DWARFDataExtractor Data, HeaderOffset); } if (HeaderData.Length + sizeof(uint32_t) < sizeof(Header)) { - uint32_t TmpLength = getLength(); + uint32_t TmpLength = HeaderData.Length; invalidateLength(); return createStringError(errc::invalid_argument, "address table at offset 0x%" PRIx64 - " has too small length (0x%" PRIx32 - ") to contain a complete header", + " has a unit_length value of 0x%" PRIx32 + ", which is too small to contain a complete header", HeaderOffset, TmpLength); } uint64_t End = HeaderOffset + getLength(); if (!Data.isValidOffsetForDataOfSize(HeaderOffset, End - HeaderOffset)) { - uint32_t TmpLength = getLength(); + uint32_t TmpLength = HeaderData.Length; invalidateLength(); - return createStringError(errc::invalid_argument, + return createStringError( + errc::invalid_argument, "section is not large enough to contain an address table " - "of length 0x%" PRIx32 " at offset 0x%" PRIx64, - TmpLength, HeaderOffset); + "at offset 0x%" PRIx64 " with a unit_length value of 0x%" PRIx32, + HeaderOffset, TmpLength); } HeaderData.Version = Data.getU16(OffsetPtr); @@ -87,9 +88,10 @@ Error DWARFDebugAddrTable::extract(DWARFDataExtractor Data, // implementations of .debug_addr table, which doesn't contain a header // and consists only of a series of addresses. if (HeaderData.Version > 5) { - return createStringError(errc::not_supported, "version %" PRIu16 - " of .debug_addr section at offset 0x%" PRIx64 " is not supported", - HeaderData.Version, HeaderOffset); + return createStringError(errc::not_supported, + "address table at offset 0x%" PRIx64 + " has unsupported version %" PRIu16, + HeaderOffset, HeaderData.Version); } // FIXME: For now we just treat version mismatch as an error, // however the correct way to associate a .debug_addr table @@ -105,7 +107,8 @@ Error DWARFDebugAddrTable::extract(DWARFDataExtractor Data, if (HeaderData.AddrSize != 4 && HeaderData.AddrSize != 8) return createStringError(errc::not_supported, "address table at offset 0x%" PRIx64 - " has unsupported address size %" PRIu8, + " has unsupported address size %" PRIu8 + " (4 and 8 are supported)", HeaderOffset, HeaderData.AddrSize); if (HeaderData.AddrSize != AddrSize && AddrSize != 0) WarnCallback(createStringError( diff --git a/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_invalid_addr_size.s b/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_invalid_addr_size.s index 1ba1afebf5da8c..0ad055b2753df3 100644 --- a/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_invalid_addr_size.s +++ b/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_invalid_addr_size.s @@ -4,7 +4,7 @@ # CHECK: .debug_addr contents: # CHECK-NOT: {{.}} -# ERR: unsupported address size 3 +# ERR: unsupported address size 3 (4 and 8 are supported) # ERR-NOT: {{.}} # invalid addr size diff --git a/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_small_length_field.s b/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_small_length_field.s index 50c865f207dcb7..3b12737ddf599e 100644 --- a/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_small_length_field.s +++ b/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_small_length_field.s @@ -4,7 +4,7 @@ # CHECK: .debug_addr contents: # CHECK-NOT: {{.}} -# ERR: address table at offset 0x0 has too small length (0x5) to contain a complete header +# ERR: address table at offset 0x0 has a unit_length value of 0x1, which is too small to contain a complete header # ERR-NOT: {{.}} # too small length value diff --git a/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_too_small_for_section.s b/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_too_small_for_section.s index 98468fa36812a2..5bd90617e259f2 100644 --- a/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_too_small_for_section.s +++ b/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_too_small_for_section.s @@ -4,7 +4,7 @@ # CHECK: .debug_addr contents: # CHECK-NOT: {{.}} -# ERR: section is not large enough to contain an address table of length 0x10 at offset 0x0 +# ERR: section is not large enough to contain an address table at offset 0x0 with a unit_length value of 0xc # ERR-NOT: {{.}} # too small section to contain section of given length diff --git a/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_unsupported_version.s b/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_unsupported_version.s index f30dd8f0b97973..c2afea30e5a0d7 100644 --- a/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_unsupported_version.s +++ b/llvm/test/tools/llvm-dwarfdump/X86/debug_addr_unsupported_version.s @@ -2,7 +2,7 @@ # RUN: llvm-dwarfdump -debug-addr - 2> %t.err | FileCheck %s # RUN: FileCheck %s -input-file %t.err -check-prefix=ERR -# ERR: version 6 of .debug_addr section at offset 0x0 is not supported +# ERR: address table at offset 0x0 has unsupported version 6 # ERR-NOT: {{.}} # CHECK: .debug_addr contents