LLDB mainline
Public Types | Public Member Functions | List of all members
lldb_private::MemoryTagManagerAArch64MTE Class Reference

#include <MemoryTagManagerAArch64MTE.h>

Inheritance diagram for lldb_private::MemoryTagManagerAArch64MTE:
Inheritance graph
[legend]

Public Types

enum  MTETagTypes { eMTE_logical = 0 , eMTE_allocation = 1 }
 
- Public Types inherited from lldb_private::MemoryTagManager
typedef Range< lldb::addr_t, lldb::addr_tTagRange
 
typedef std::function< size_t(lldb::offset_t, size_t, void *)> CoreReaderFn
 

Public Member Functions

lldb::addr_t GetGranuleSize () const override
 
int32_t GetAllocationTagType () const override
 
size_t GetTagSizeInBytes () const override
 
lldb::addr_t GetLogicalTag (lldb::addr_t addr) const override
 
lldb::addr_t RemoveTagBits (lldb::addr_t addr) const override
 
ptrdiff_t AddressDiff (lldb::addr_t addr1, lldb::addr_t addr2) const override
 
TagRange ExpandToGranule (TagRange range) const override
 
llvm::Expected< TagRangeMakeTaggedRange (lldb::addr_t addr, lldb::addr_t end_addr, const lldb_private::MemoryRegionInfos &memory_regions) const override
 
llvm::Expected< std::vector< TagRange > > MakeTaggedRanges (lldb::addr_t addr, lldb::addr_t end_addr, const lldb_private::MemoryRegionInfos &memory_regions) const override
 
llvm::Expected< std::vector< lldb::addr_t > > UnpackTagsData (const std::vector< uint8_t > &tags, size_t granules=0) const override
 
std::vector< lldb::addr_tUnpackTagsFromCoreFileSegment (CoreReaderFn reader, lldb::addr_t tag_segment_virtual_address, lldb::addr_t tag_segment_data_address, lldb::addr_t addr, size_t len) const override
 
llvm::Expected< std::vector< uint8_t > > PackTags (const std::vector< lldb::addr_t > &tags) const override
 
llvm::Expected< std::vector< lldb::addr_t > > RepeatTagsForRange (const std::vector< lldb::addr_t > &tags, TagRange range) const override
 
- Public Member Functions inherited from lldb_private::MemoryTagManager
virtual lldb::addr_t GetLogicalTag (lldb::addr_t addr) const =0
 
virtual lldb::addr_t RemoveTagBits (lldb::addr_t addr) const =0
 
virtual ptrdiff_t AddressDiff (lldb::addr_t addr1, lldb::addr_t addr2) const =0
 
virtual lldb::addr_t GetGranuleSize () const =0
 
virtual TagRange ExpandToGranule (TagRange range) const =0
 
virtual llvm::Expected< TagRangeMakeTaggedRange (lldb::addr_t addr, lldb::addr_t end_addr, const lldb_private::MemoryRegionInfos &memory_regions) const =0
 
virtual llvm::Expected< std::vector< TagRange > > MakeTaggedRanges (lldb::addr_t addr, lldb::addr_t end_addr, const lldb_private::MemoryRegionInfos &memory_regions) const =0
 
virtual int32_t GetAllocationTagType () const =0
 
virtual size_t GetTagSizeInBytes () const =0
 
virtual llvm::Expected< std::vector< lldb::addr_t > > UnpackTagsData (const std::vector< uint8_t > &tags, size_t granules=0) const =0
 
virtual std::vector< lldb::addr_tUnpackTagsFromCoreFileSegment (CoreReaderFn reader, lldb::addr_t tag_segment_virtual_address, lldb::addr_t tag_segment_data_address, lldb::addr_t addr, size_t len) const =0
 
virtual llvm::Expected< std::vector< uint8_t > > PackTags (const std::vector< lldb::addr_t > &tags) const =0
 
virtual llvm::Expected< std::vector< lldb::addr_t > > RepeatTagsForRange (const std::vector< lldb::addr_t > &tags, TagRange range) const =0
 
virtual ~MemoryTagManager ()=default
 

Detailed Description

Definition at line 16 of file MemoryTagManagerAArch64MTE.h.

Member Enumeration Documentation

◆ MTETagTypes

Enumerator
eMTE_logical 
eMTE_allocation 

Definition at line 20 of file MemoryTagManagerAArch64MTE.h.

Member Function Documentation

◆ AddressDiff()

ptrdiff_t MemoryTagManagerAArch64MTE::AddressDiff ( lldb::addr_t  addr1,
lldb::addr_t  addr2 
) const
overridevirtual

Implements lldb_private::MemoryTagManager.

Definition at line 33 of file MemoryTagManagerAArch64MTE.cpp.

References RemoveTagBits().

Referenced by MakeTaggedRange(), and MakeTaggedRanges().

◆ ExpandToGranule()

MemoryTagManagerAArch64MTE::TagRange MemoryTagManagerAArch64MTE::ExpandToGranule ( TagRange  range) const
overridevirtual

◆ GetAllocationTagType()

int32_t MemoryTagManagerAArch64MTE::GetAllocationTagType ( ) const
overridevirtual

Implements lldb_private::MemoryTagManager.

Definition at line 42 of file MemoryTagManagerAArch64MTE.cpp.

References eMTE_allocation.

◆ GetGranuleSize()

lldb::addr_t MemoryTagManagerAArch64MTE::GetGranuleSize ( ) const
overridevirtual

◆ GetLogicalTag()

lldb::addr_t MemoryTagManagerAArch64MTE::GetLogicalTag ( lldb::addr_t  addr) const
overridevirtual

Implements lldb_private::MemoryTagManager.

Definition at line 20 of file MemoryTagManagerAArch64MTE.cpp.

References MTE_START_BIT, and MTE_TAG_MAX.

◆ GetTagSizeInBytes()

size_t MemoryTagManagerAArch64MTE::GetTagSizeInBytes ( ) const
overridevirtual

Implements lldb_private::MemoryTagManager.

Definition at line 46 of file MemoryTagManagerAArch64MTE.cpp.

Referenced by PackTags(), and UnpackTagsData().

◆ MakeTaggedRange()

llvm::Expected< MemoryTagManager::TagRange > MemoryTagManagerAArch64MTE::MakeTaggedRange ( lldb::addr_t  addr,
lldb::addr_t  end_addr,
const lldb_private::MemoryRegionInfos memory_regions 
) const
overridevirtual

◆ MakeTaggedRanges()

llvm::Expected< std::vector< MemoryTagManager::TagRange > > MemoryTagManagerAArch64MTE::MakeTaggedRanges ( lldb::addr_t  addr,
lldb::addr_t  end_addr,
const lldb_private::MemoryRegionInfos memory_regions 
) const
overridevirtual

◆ PackTags()

llvm::Expected< std::vector< uint8_t > > MemoryTagManagerAArch64MTE::PackTags ( const std::vector< lldb::addr_t > &  tags) const
overridevirtual

Implements lldb_private::MemoryTagManager.

Definition at line 315 of file MemoryTagManagerAArch64MTE.cpp.

References GetTagSizeInBytes(), and MTE_TAG_MAX.

◆ RemoveTagBits()

lldb::addr_t MemoryTagManagerAArch64MTE::RemoveTagBits ( lldb::addr_t  addr) const
overridevirtual

◆ RepeatTagsForRange()

llvm::Expected< std::vector< lldb::addr_t > > MemoryTagManagerAArch64MTE::RepeatTagsForRange ( const std::vector< lldb::addr_t > &  tags,
TagRange  range 
) const
overridevirtual

◆ UnpackTagsData()

llvm::Expected< std::vector< lldb::addr_t > > MemoryTagManagerAArch64MTE::UnpackTagsData ( const std::vector< uint8_t > &  tags,
size_t  granules = 0 
) const
overridevirtual

Implements lldb_private::MemoryTagManager.

Definition at line 218 of file MemoryTagManagerAArch64MTE.cpp.

References GetTagSizeInBytes(), and MTE_TAG_MAX.

◆ UnpackTagsFromCoreFileSegment()

std::vector< lldb::addr_t > MemoryTagManagerAArch64MTE::UnpackTagsFromCoreFileSegment ( CoreReaderFn  reader,
lldb::addr_t  tag_segment_virtual_address,
lldb::addr_t  tag_segment_data_address,
lldb::addr_t  addr,
size_t  len 
) const
overridevirtual

The documentation for this class was generated from the following files: