[Lldb-commits] [lldb] [lldb] Fix data buffer regression in ObjectFileELF (PR #177724)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Fri Jan 23 17:46:00 PST 2026
https://github.com/JDevlieghere updated https://github.com/llvm/llvm-project/pull/177724
>From 7d18162b5261e32d515d707ac81ceea504595a00 Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jonas at devlieghere.com>
Date: Fri, 23 Jan 2026 17:27:28 -0800
Subject: [PATCH 1/2] [lldb] Fix data buffer regression in ObjectFileELF
This fixes a regression in ObjectFileELF introduced by #171574.
The original code created a `DataBuffer` using `MapFileDataWritable`.
```
data_sp = MapFileDataWritable(*file, length, file_offset);
if (!data_sp)
return nullptr;
data_offset = 0;
```
The new code requires converting the `DataBuffer` to a `DataExtractor`:
```
DataBufferSP buffer_sp = MapFileDataWritable(*file, length, file_offset);
if (!buffer_sp)
return nullptr;
extractor_sp = std::make_shared<DataExtractor>();
extractor_sp->SetData(buffer_sp, data_offset, buffer_sp->GetByteSize());
data_offset = 0;
```
The issue is that once we get a data buffer back from
MapFileDataWritable, we don't have to adjust for the `data_offset`
anymore as the `DataBuffer` is already normalized to have a zero start
offset.
---
lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
index 7d783d5dd6b9f..5330268cc77f5 100644
--- a/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
+++ b/lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
@@ -397,8 +397,7 @@ ObjectFile *ObjectFileELF::CreateInstance(const lldb::ModuleSP &module_sp,
DataBufferSP buffer_sp = MapFileDataWritable(*file, length, file_offset);
if (!buffer_sp)
return nullptr;
- extractor_sp = std::make_shared<DataExtractor>();
- extractor_sp->SetData(buffer_sp, data_offset, buffer_sp->GetByteSize());
+ extractor_sp = std::make_shared<DataExtractor>(buffer_sp);
data_offset = 0;
mapped_writable = true;
}
>From f3ae4629ad6c7bbbe9822d59d6496c2540a8a204 Mon Sep 17 00:00:00 2001
From: Jonas Devlieghere <jonas at devlieghere.com>
Date: Fri, 23 Jan 2026 17:45:25 -0800
Subject: [PATCH 2/2] Fix the same issue in ObjectFile
---
lldb/source/Symbol/ObjectFile.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lldb/source/Symbol/ObjectFile.cpp b/lldb/source/Symbol/ObjectFile.cpp
index 1dfd84c4b61e3..7ffae99e988bf 100644
--- a/lldb/source/Symbol/ObjectFile.cpp
+++ b/lldb/source/Symbol/ObjectFile.cpp
@@ -88,8 +88,7 @@ ObjectFileSP ObjectFile::FindPlugin(const lldb::ModuleSP &module_sp,
// not 0 size, but we can't make a data buffer for it.
if (DataBufferSP buffer_sp = FileSystem::Instance().CreateDataBuffer(
file->GetPath(), g_initial_bytes_to_read, file_offset)) {
- extractor_sp = std::make_shared<DataExtractor>();
- extractor_sp->SetData(buffer_sp, data_offset, buffer_sp->GetByteSize());
+ extractor_sp = std::make_shared<DataExtractor>(buffer_sp);
data_offset = 0;
}
}
More information about the lldb-commits
mailing list