mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01:00
bbfbcfbfb2
Summary: This is a result of the discussion at D78113. Previously we would be only giving the current offset at which the error was detected. However, this was phrased somewhat ambiguously (as it could also mean that end of data was at that offset). The new error message includes the current offset as well as the extent of the data being read. I've changed a couple of file-level static functions into private member functions in order to avoid passing a bunch of new arguments everywhere. Reviewers: dblaikie, jhenderson Subscribers: hiraditya, MaskRay, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78558
50 lines
1.9 KiB
C++
50 lines
1.9 KiB
C++
//===- DWARFAcceleratorTableTest.cpp --------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h"
|
|
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
|
|
#include "llvm/Testing/Support/Error.h"
|
|
#include "gtest/gtest.h"
|
|
|
|
using namespace llvm;
|
|
|
|
static Error ExtractDebugNames(StringRef NamesSecData, StringRef StrSecData) {
|
|
DWARFDataExtractor NamesExtractor(NamesSecData,
|
|
/*isLittleEndian=*/true,
|
|
/*AddrSize=*/4);
|
|
DataExtractor StrExtractor(StrSecData,
|
|
/*isLittleEndian=*/true,
|
|
/*AddrSize=*/4);
|
|
DWARFDebugNames Table(NamesExtractor, StrExtractor);
|
|
return Table.extract();
|
|
}
|
|
|
|
namespace {
|
|
|
|
TEST(DWARFDebugNames, ReservedUnitLength) {
|
|
static const char NamesSecData[64] =
|
|
"\xf0\xff\xff\xff"; // Reserved unit length value
|
|
EXPECT_THAT_ERROR(
|
|
ExtractDebugNames(StringRef(NamesSecData, sizeof(NamesSecData)),
|
|
StringRef()),
|
|
FailedWithMessage("parsing .debug_names header at 0x0: unsupported "
|
|
"reserved unit length of value 0xfffffff0"));
|
|
}
|
|
|
|
TEST(DWARFDebugNames, TooSmallForDWARF64) {
|
|
// DWARF64 header takes at least 44 bytes.
|
|
static const char NamesSecData[43] = "\xff\xff\xff\xff"; // DWARF64 mark
|
|
EXPECT_THAT_ERROR(
|
|
ExtractDebugNames(StringRef(NamesSecData, sizeof(NamesSecData)),
|
|
StringRef()),
|
|
FailedWithMessage("parsing .debug_names header at 0x0: unexpected end of "
|
|
"data at offset 0x2b while reading [0x28, 0x2c)"));
|
|
}
|
|
|
|
} // end anonymous namespace
|