Index: llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp =================================================================== --- llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp +++ llvm/lib/DebugInfo/DWARF/DWARFDebugAddr.cpp @@ -51,7 +51,7 @@ HeaderOffset); } if (HeaderData.Length + sizeof(uint32_t) < sizeof(Header)) { - uint32_t TmpLength = getLength(); + uint32_t TmpLength = HeaderData.Length; invalidateLength(); return createStringError(errc::invalid_argument, ".debug_addr table at offset 0x%" PRIx64 @@ -61,12 +61,13 @@ } 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, - "section is not large enough to contain a .debug_addr table " - "of length 0x%" PRIx32 " at offset 0x%" PRIx64, - TmpLength, HeaderOffset); + return createStringError( + errc::invalid_argument, + "section is not large enough to contain an address table " + "at offset 0x%" PRIx64 " with a length field of 0x%" PRIx32, + HeaderOffset, TmpLength); } HeaderData.Version = Data.getU16(OffsetPtr); @@ -87,9 +88,10 @@ // 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, + ".debug_addr 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 @@ if (HeaderData.AddrSize != 4 && HeaderData.AddrSize != 8) return createStringError(errc::not_supported, ".debug_addr 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( Index: llvm/test/tools/llvm-dwarfdump/X86/debug_addr_invalid_addr_size.s =================================================================== --- llvm/test/tools/llvm-dwarfdump/X86/debug_addr_invalid_addr_size.s +++ 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 Index: llvm/test/tools/llvm-dwarfdump/X86/debug_addr_small_length_field.s =================================================================== --- llvm/test/tools/llvm-dwarfdump/X86/debug_addr_small_length_field.s +++ llvm/test/tools/llvm-dwarfdump/X86/debug_addr_small_length_field.s @@ -4,7 +4,7 @@ # CHECK: .debug_addr contents: # CHECK-NOT: {{.}} -# ERR: .debug_addr table at offset 0x0 has too small length (0x5) to contain a complete header +# ERR: .debug_addr table at offset 0x0 has too small length (0x1) to contain a complete header # ERR-NOT: {{.}} # too small length value Index: llvm/test/tools/llvm-dwarfdump/X86/debug_addr_too_small_for_section.s =================================================================== --- llvm/test/tools/llvm-dwarfdump/X86/debug_addr_too_small_for_section.s +++ 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 a .debug_addr table of length 0x10 at offset 0x0 +# ERR: section is not large enough to contain an address table at offset 0x0 with a length field of 0xc # ERR-NOT: {{.}} # too small section to contain section of given length Index: llvm/test/tools/llvm-dwarfdump/X86/debug_addr_unsupported_version.s =================================================================== --- llvm/test/tools/llvm-dwarfdump/X86/debug_addr_unsupported_version.s +++ 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: .debug_addr table at offset 0x0 has unsupported version 6 # ERR-NOT: {{.}} # CHECK: .debug_addr contents