LLVM 20.0.0git
Public Member Functions | Public Attributes | List of all members
llvm::gsym::LookupResult Struct Reference

#include "llvm/DebugInfo/GSYM/LookupResult.h"

Public Member Functions

std::string getSourceFile (uint32_t Index) const
 

Public Attributes

uint64_t LookupAddr = 0
 The address that this lookup pertains to.
 
AddressRange FuncRange
 The concrete function address range.
 
StringRef FuncName
 The concrete function name that contains LookupAddr.
 
SourceLocations Locations
 The source locations that match this address.
 
std::vector< StringRefCallSiteFuncRegex
 Function name regex patterns associated with a call site at the lookup address.
 

Detailed Description

Definition at line 38 of file LookupResult.h.

Member Function Documentation

◆ getSourceFile()

std::string LookupResult::getSourceFile ( uint32_t  Index) const

Member Data Documentation

◆ CallSiteFuncRegex

std::vector<StringRef> llvm::gsym::LookupResult::CallSiteFuncRegex

Function name regex patterns associated with a call site at the lookup address.

This vector will be populated when:

  1. The lookup address matches a call site's return address in a function
  2. The call site has associated regex patterns that describe what functions can be called from that location

The regex patterns can be used to validate function calls during runtime checking or symbolication. For example:

  • Patterns like "^foo$" indicate the call site can only call function "foo"
  • Patterns like "^std::" indicate the call site can call any function in the std namespace
  • Multiple patterns allow matching against a set of allowed functions

The patterns are stored as string references into the GSYM string table. This information is typically loaded from:

  • DWARF debug info call site entries
  • External YAML files specifying call site patterns
  • Other debug info formats that encode call site constraints

The patterns will be empty if:

  • The lookup address is not at the return address of a call site
  • The call site has no associated function name constraints
  • Call site info was not included when creating the GSYM file

Definition at line 77 of file LookupResult.h.

Referenced by llvm::gsym::FunctionInfo::lookup(), and llvm::gsym::operator<<().

◆ FuncName

StringRef llvm::gsym::LookupResult::FuncName

The concrete function name that contains LookupAddr.

Definition at line 41 of file LookupResult.h.

Referenced by llvm::gsym::FunctionInfo::lookup().

◆ FuncRange

AddressRange llvm::gsym::LookupResult::FuncRange

The concrete function address range.

Definition at line 40 of file LookupResult.h.

Referenced by llvm::gsym::FunctionInfo::lookup().

◆ Locations

SourceLocations llvm::gsym::LookupResult::Locations

The source locations that match this address.

This information will only be filled in if the FunctionInfo contains a line table. If an address is for a concrete function with no inlined functions, this array will have one entry. If an address points to an inline function, there will be one SourceLocation for each inlined function with the last entry pointing to the concrete function itself. This allows one address to generate multiple locations and allows unwinding of inline call stacks. The deepest inline function will appear at index zero in the source locations array, and the concrete function will appear at the end of the array.

Definition at line 51 of file LookupResult.h.

Referenced by getSourceFile(), llvm::gsym::FunctionInfo::lookup(), and llvm::gsym::operator<<().

◆ LookupAddr

uint64_t llvm::gsym::LookupResult::LookupAddr = 0

The address that this lookup pertains to.

Definition at line 39 of file LookupResult.h.

Referenced by llvm::gsym::FunctionInfo::lookup(), and llvm::gsym::operator<<().


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