[Lldb-commits] [lldb] a9ffb47 - Fix LLDB build on old Linux kernels (pre-4.1)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Wed Oct 5 01:00:14 PDT 2022
Author: David Spickett
Date: 2022-10-05T08:00:05Z
New Revision: a9ffb473453519bae158e5d9c72431aa0f6aac2b
URL: https://github.com/llvm/llvm-project/commit/a9ffb473453519bae158e5d9c72431aa0f6aac2b
DIFF: https://github.com/llvm/llvm-project/commit/a9ffb473453519bae158e5d9c72431aa0f6aac2b.diff
LOG: Fix LLDB build on old Linux kernels (pre-4.1)
These fields are guarded elsewhere, but were missing here.
Reviewed By: wallace
Differential Revision: https://reviews.llvm.org/D133778
Added:
Modified:
lldb/source/Plugins/Process/Linux/Perf.cpp
Removed:
################################################################################
diff --git a/lldb/source/Plugins/Process/Linux/Perf.cpp b/lldb/source/Plugins/Process/Linux/Perf.cpp
index 19bdca536673f..9617c2df849af 100644
--- a/lldb/source/Plugins/Process/Linux/Perf.cpp
+++ b/lldb/source/Plugins/Process/Linux/Perf.cpp
@@ -125,6 +125,10 @@ llvm::Error PerfEvent::MmapMetadataAndDataBuffer(size_t num_data_pages,
}
llvm::Error PerfEvent::MmapAuxBuffer(size_t num_aux_pages) {
+#ifndef PERF_ATTR_SIZE_VER5
+ return createStringError(inconvertibleErrorCode(),
+ "Intel PT Linux perf event not supported");
+#else
if (num_aux_pages == 0)
return Error::success();
@@ -141,6 +145,7 @@ llvm::Error PerfEvent::MmapAuxBuffer(size_t num_aux_pages) {
return Error::success();
} else
return mmap_aux.takeError();
+#endif
}
llvm::Error PerfEvent::MmapMetadataAndBuffers(size_t num_data_pages,
@@ -170,16 +175,24 @@ perf_event_mmap_page &PerfEvent::GetMetadataPage() const {
}
ArrayRef<uint8_t> PerfEvent::GetDataBuffer() const {
+#ifndef PERF_ATTR_SIZE_VER5
+ llvm_unreachable("Intel PT Linux perf event not supported");
+#else
perf_event_mmap_page &mmap_metadata = GetMetadataPage();
return {reinterpret_cast<uint8_t *>(m_metadata_data_base.get()) +
mmap_metadata.data_offset,
static_cast<size_t>(mmap_metadata.data_size)};
+#endif
}
ArrayRef<uint8_t> PerfEvent::GetAuxBuffer() const {
+#ifndef PERF_ATTR_SIZE_VER5
+ llvm_unreachable("Intel PT Linux perf event not supported");
+#else
perf_event_mmap_page &mmap_metadata = GetMetadataPage();
return {reinterpret_cast<uint8_t *>(m_aux_base.get()),
static_cast<size_t>(mmap_metadata.aux_size)};
+#endif
}
Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyDataBuffer() {
@@ -188,6 +201,10 @@ Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyDataBuffer() {
// this piece of code updates some pointers. See more about data_tail
// in https://man7.org/linux/man-pages/man2/perf_event_open.2.html.
+#ifndef PERF_ATTR_SIZE_VER5
+ return createStringError(inconvertibleErrorCode(),
+ "Intel PT Linux perf event not supported");
+#else
bool was_enabled = m_enabled;
if (Error err = DisableWithIoctl())
return std::move(err);
@@ -224,6 +241,7 @@ Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyDataBuffer() {
}
return output;
+#endif
}
Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyAuxBuffer() {
@@ -232,6 +250,10 @@ Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyAuxBuffer() {
// this piece of code updates some pointers. See more about aux_tail
// in https://man7.org/linux/man-pages/man2/perf_event_open.2.html.
+#ifndef PERF_ATTR_SIZE_VER5
+ return createStringError(inconvertibleErrorCode(),
+ "Intel PT Linux perf event not supported");
+#else
bool was_enabled = m_enabled;
if (Error err = DisableWithIoctl())
return std::move(err);
@@ -264,6 +286,7 @@ Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyAuxBuffer() {
}
return output;
+#endif
}
Error PerfEvent::DisableWithIoctl() {
@@ -295,11 +318,15 @@ Error PerfEvent::EnableWithIoctl() {
}
size_t PerfEvent::GetEffectiveDataBufferSize() const {
+#ifndef PERF_ATTR_SIZE_VER5
+ llvm_unreachable("Intel PT Linux perf event not supported");
+#else
perf_event_mmap_page &mmap_metadata = GetMetadataPage();
if (mmap_metadata.data_head < mmap_metadata.data_size)
return mmap_metadata.data_head;
else
return mmap_metadata.data_size; // The buffer has wrapped.
+#endif
}
Expected<PerfEvent>
More information about the lldb-commits
mailing list