Skip to content

Commit 1820ea8

Browse files
George Hukusmour
authored andcommitted
[debuginfod] Add headers for symbol names requested
Summary: We want to emplace symbol names in header so that debuginfod server can know requested/missing symbol name for logging purpose. Test Plan: https://fburl.com/scuba/sde_symbol_storage_retrievals/mwb4kfcv Start to see symbol name: {F1978784860} Reviewers: davidayoung, #lldb_team Reviewed By: davidayoung Subscribers: #lldb_team Differential Revision: https://phabricator.intern.facebook.com/D75710378
1 parent 824d29b commit 1820ea8

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

llvm/lib/Debuginfod/Debuginfod.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -232,16 +232,16 @@ static bool isHeader(StringRef S) {
232232
all_of(Value, [](char C) { return llvm::isPrint(C) || C == '\t'; });
233233
}
234234

235-
static SmallVector<std::string, 0> getHeaders() {
235+
static SmallVector<std::string, 0> getHeaders(StringRef SymbolName) {
236+
SmallVector<std::string, 0> Headers;
237+
Headers.emplace_back("x-fb-debuginfod-symbolname:" + SymbolName.str());
236238
const char *Filename = getenv("DEBUGINFOD_HEADERS_FILE");
237239
if (!Filename)
238-
return {};
240+
return Headers;
239241
ErrorOr<std::unique_ptr<MemoryBuffer>> HeadersFile =
240242
MemoryBuffer::getFile(Filename, /*IsText=*/true);
241243
if (!HeadersFile)
242-
return {};
243-
244-
SmallVector<std::string, 0> Headers;
244+
return Headers;
245245
uint64_t LineNumber = 0;
246246
for (StringRef Line : llvm::split((*HeadersFile)->getBuffer(), '\n')) {
247247
LineNumber++;
@@ -258,6 +258,15 @@ static SmallVector<std::string, 0> getHeaders() {
258258
return Headers;
259259
}
260260

261+
static llvm::StringRef getSymbolName(StringRef UniqueKey) {
262+
llvm::StringRef SymbolName = UniqueKey;
263+
size_t pos = UniqueKey.rfind('-');
264+
if (pos != llvm::StringRef::npos) {
265+
SymbolName = SymbolName.substr(pos + 1);
266+
}
267+
return SymbolName;
268+
}
269+
261270
Expected<std::string> getCachedOrDownloadArtifact(
262271
StringRef UniqueKey, StringRef UrlPath, StringRef CacheDirectoryPath,
263272
ArrayRef<StringRef> DebuginfodUrls, std::chrono::milliseconds Timeout) {
@@ -304,7 +313,7 @@ Expected<std::string> getCachedOrDownloadArtifact(
304313
StreamedHTTPResponseHandler Handler(
305314
[&]() { return CacheAddStream(Task, ""); }, Client);
306315
HTTPRequest Request(ArtifactUrl);
307-
Request.Headers = getHeaders();
316+
Request.Headers = getHeaders(getSymbolName(UniqueKey));
308317
Error Err = Client.perform(Request, Handler);
309318
if (Err)
310319
return std::move(Err);

0 commit comments

Comments
 (0)