@@ -144,18 +144,16 @@ static bool getSymbolNameAddr(llvm::StringRef libraryName,
144
144
void swift::dumpStackTraceEntry (unsigned index, void *framePC,
145
145
bool shortOutput) {
146
146
#if SWIFT_STDLIB_SUPPORTS_BACKTRACE_REPORTING && SWIFT_STDLIB_HAS_DLADDR
147
- SymbolInfo syminfo;
148
-
149
- // 0 is failure for lookupSymbol
150
- if (0 == lookupSymbol (framePC, &syminfo)) {
147
+ auto syminfo = SymbolInfo::lookup (framePC);
148
+ if (!syminfo.has_value ()) {
151
149
return ;
152
150
}
153
151
154
- // If lookupSymbol succeeded then fileName is non-null. Thus, we find the
152
+ // If SymbolInfo:lookup succeeded then fileName is non-null. Thus, we find the
155
153
// library name here. Avoid using StringRef::rsplit because its definition
156
154
// is not provided in the header so that it requires linking with
157
155
// libSupport.a.
158
- llvm::StringRef libraryName{syminfo. getFilename ()};
156
+ llvm::StringRef libraryName{syminfo-> getFilename ()};
159
157
libraryName = libraryName.substr (libraryName.rfind (' /' )).substr (1 );
160
158
161
159
// Next we get the symbol name that we are going to use in our backtrace.
@@ -165,12 +163,12 @@ void swift::dumpStackTraceEntry(unsigned index, void *framePC,
165
163
// we just get HexAddr + 0.
166
164
uintptr_t symbolAddr = uintptr_t (framePC);
167
165
bool foundSymbol =
168
- getSymbolNameAddr (libraryName, syminfo, symbolName, symbolAddr);
166
+ getSymbolNameAddr (libraryName, syminfo. value () , symbolName, symbolAddr);
169
167
ptrdiff_t offset = 0 ;
170
168
if (foundSymbol) {
171
169
offset = ptrdiff_t (uintptr_t (framePC) - symbolAddr);
172
170
} else {
173
- auto baseAddress = syminfo. getBaseAddress ();
171
+ auto baseAddress = syminfo-> getBaseAddress ();
174
172
offset = ptrdiff_t (uintptr_t (framePC) - uintptr_t (baseAddress));
175
173
symbolAddr = uintptr_t (framePC);
176
174
symbolName = " <unavailable>" ;
0 commit comments