[lldb] Fix 7b73de9ec2b19df040c919d3004dfbead9b6ac59
authorWalter Erquinigo <wallace@fb.com>
Tue, 10 May 2022 04:01:05 +0000 (21:01 -0700)
committerWalter Erquinigo <wallace@fb.com>
Tue, 10 May 2022 04:02:40 +0000 (21:02 -0700)
This commit causes
https://lab.llvm.org/buildbot/#/builders/17/builds/21743 to fail
seemingly because of bad handling of the PERF_ATTR_SIZE_VER5 symbol.

This patch tries to handle better the absence of this symbol.

lldb/source/Plugins/Process/Linux/IntelPTSingleBufferTrace.cpp

index 47d5877..30c30eb 100644 (file)
@@ -146,6 +146,7 @@ static Error CheckPsbPeriod(size_t psb_period) {
   return createStringError(inconvertibleErrorCode(), error.str().c_str());
 }
 
+#ifdef PERF_ATTR_SIZE_VER5
 static Expected<uint64_t>
 GeneratePerfEventConfigValue(bool enable_tsc, Optional<size_t> psb_period) {
   uint64_t config = 0;
@@ -179,9 +180,8 @@ GeneratePerfEventConfigValue(bool enable_tsc, Optional<size_t> psb_period) {
 static Expected<perf_event_attr>
 CreateIntelPTPerfEventConfiguration(bool enable_tsc,
                                     llvm::Optional<size_t> psb_period) {
-#ifndef PERF_ATTR_SIZE_VER5
-  return llvm_unreachable("Intel PT Linux perf event not supported");
-#else
+  return createStringError(inconvertibleErrorCode(),
+                           "Intel PT Linux perf event not supported");
   perf_event_attr attr;
   memset(&attr, 0, sizeof(attr));
   attr.size = sizeof(attr);
@@ -204,8 +204,8 @@ CreateIntelPTPerfEventConfiguration(bool enable_tsc,
     return intel_pt_type.takeError();
 
   return attr;
-#endif
 }
+#endif
 
 size_t IntelPTSingleBufferTrace::GetTraceBufferSize() const {
   return m_perf_event.GetAuxBuffer().size();
@@ -263,6 +263,10 @@ IntelPTSingleBufferTrace::GetTraceBuffer(size_t offset, size_t size) const {
 Expected<IntelPTSingleBufferTraceUP>
 IntelPTSingleBufferTrace::Start(const TraceIntelPTStartRequest &request,
                                 lldb::tid_t tid) {
+#ifndef PERF_ATTR_SIZE_VER5
+  return createStringError(inconvertibleErrorCode(),
+                           "Intel PT Linux perf event not supported");
+#else
   Log *log = GetLog(POSIXLog::Trace);
 
   LLDB_LOG(log, "Will start tracing thread id {0}", tid);
@@ -299,4 +303,5 @@ IntelPTSingleBufferTrace::Start(const TraceIntelPTStartRequest &request,
   } else {
     return perf_event.takeError();
   }
+#endif
 }