Files
swift-mirror/stdlib/public/RuntimeModule/PDB/PDBFile+SymbolSource.swift
Alastair Houghton 487e173a26 [Backtracing][PDB] Scan the main symbol stream as well.
Without scanning the main symbol stream, we get weird names for the
Swift functions in the backtrace, because the compiler generates C++-style
names for them.  We actually want the mangled names, if possible, which
only seem to be in the symbol stream, so scan that as well and use it
to find mangled names.

rdar://168454023
2026-02-17 10:50:56 +00:00

57 lines
1.6 KiB
Swift

//===--- PDBFile+SymbolSource.swift - PDB support for Swift ---------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2025 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// Implements the SymbolSource protocol for PDB files.
//
//===----------------------------------------------------------------------===//
import Swift
@_spi(SymbolLocation)
extension PDBFile: SymbolSource {
public func lookupSymbol(
address: SymbolSource.Address
) -> SymbolSource.Symbol? {
guard let symbolLookup = lookup(address: UInt32(address)) else {
return nil
}
return SymbolSource.Symbol(name: symbolLookup.rawName ?? symbolLookup.name,
offset: Int(symbolLookup.offset),
size: nil)
}
public func sourceLocation(
for address: SymbolSource.Address
) -> SymbolSource.SourceLocation? {
guard let symbolLookup = lookup(address: UInt32(address)) else {
return nil
}
guard let location = symbolLookup.sourceLocation else {
return nil
}
return SymbolSource.SourceLocation(
path: location.filename,
lineRange: location.lineRange,
columnRange: location.columnRange
)
}
public func inlineCallSites(
at address: SymbolSource.Address
) -> Array<SymbolSource.CallSiteInfo> {
return []
}
}