clang 20.0.0 (based on r547379) from build 12806354. Bug: http://b/379133546 Test: N/A Change-Id: I2eb8938af55d809de674be63cb30cf27e801862b Upstream-Commit: ad834e67b1105d15ef907f6255d4c96e8e733f57
103 lines
4.0 KiB
C++
103 lines
4.0 KiB
C++
//===-- DumpDataExtractor.h -------------------------------------*- C++ -*-===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_CORE_DUMPDATAEXTRACTOR_H
|
|
#define LLDB_CORE_DUMPDATAEXTRACTOR_H
|
|
|
|
#include "lldb/lldb-enumerations.h"
|
|
#include "lldb/lldb-types.h"
|
|
|
|
#include <cstddef>
|
|
#include <cstdint>
|
|
|
|
namespace lldb_private {
|
|
class DataExtractor;
|
|
class ExecutionContextScope;
|
|
class Stream;
|
|
|
|
/// Dumps \a item_count objects into the stream \a s.
|
|
///
|
|
/// Dumps \a item_count objects using \a item_format, each of which
|
|
/// are \a item_byte_size bytes long starting at offset \a offset
|
|
/// bytes into the contained data, into the stream \a s. \a
|
|
/// num_per_line objects will be dumped on each line before a new
|
|
/// line will be output. If \a base_addr is a valid address, then
|
|
/// each new line of output will be preceded by the address value
|
|
/// plus appropriate offset, and a colon and space. Bitfield values
|
|
/// can be dumped by calling this function multiple times with the
|
|
/// same start offset, format and size, yet differing \a
|
|
/// item_bit_size and \a item_bit_offset values.
|
|
///
|
|
/// \param[in] s
|
|
/// The stream to dump the output to. This value can not be nullptr.
|
|
///
|
|
/// \param[in] offset
|
|
/// The offset into the data at which to start dumping.
|
|
///
|
|
/// \param[in] item_format
|
|
/// The format to use when dumping each item.
|
|
///
|
|
/// \param[in] item_byte_size
|
|
/// The byte size of each item.
|
|
///
|
|
/// \param[in] item_count
|
|
/// The number of items to dump.
|
|
///
|
|
/// \param[in] num_per_line
|
|
/// The number of items to display on each line.
|
|
///
|
|
/// \param[in] base_addr
|
|
/// The base address that gets added to the offset displayed on
|
|
/// each line if the value is valid. Is \a base_addr is
|
|
/// LLDB_INVALID_ADDRESS then no address values will be prepended
|
|
/// to any lines.
|
|
///
|
|
/// \param[in] item_bit_size
|
|
/// If the value to display is a bitfield, this value should
|
|
/// be the number of bits that the bitfield item has within the
|
|
/// item's byte size value. This function will need to be called
|
|
/// multiple times with identical \a offset and \a item_byte_size
|
|
/// values in order to display multiple bitfield values that
|
|
/// exist within the same integer value. If the items being
|
|
/// displayed are not bitfields, this value should be zero.
|
|
///
|
|
/// \param[in] item_bit_offset
|
|
/// If the value to display is a bitfield, this value should
|
|
/// be the offset in bits, or shift right amount, that the
|
|
/// bitfield item occupies within the item's byte size value.
|
|
/// This function will need to be called multiple times with
|
|
/// identical \a offset and \a item_byte_size values in order
|
|
/// to display multiple bitfield values that exist within the
|
|
/// same integer value. If the items being displayed are not
|
|
/// bitfields, this value should be zero.
|
|
///
|
|
/// \param[in] exe_scope
|
|
/// If provided, this will be used to lookup language specific
|
|
/// information, address information and memory tags.
|
|
/// (if they are requested by the other options)
|
|
///
|
|
/// \param[in] show_memory_tags
|
|
/// If exe_scope and base_addr are valid, include memory tags
|
|
/// in the output. This does not apply to certain formats.
|
|
///
|
|
/// \return
|
|
/// The offset at which dumping ended.
|
|
lldb::offset_t
|
|
DumpDataExtractor(const DataExtractor &DE, Stream *s, lldb::offset_t offset,
|
|
lldb::Format item_format, size_t item_byte_size,
|
|
size_t item_count, size_t num_per_line, uint64_t base_addr,
|
|
uint32_t item_bit_size, uint32_t item_bit_offset,
|
|
ExecutionContextScope *exe_scope = nullptr,
|
|
bool show_memory_tags = false);
|
|
|
|
void DumpHexBytes(Stream *s, const void *src, size_t src_len,
|
|
uint32_t bytes_per_line, lldb::addr_t base_addr);
|
|
}
|
|
|
|
#endif
|