@@ -127,6 +127,10 @@ llvm::Error PerfEvent::MmapMetadataAndDataBuffer(size_t num_data_pages,
127127}
128128
129129llvm::Error PerfEvent::MmapAuxBuffer (size_t num_aux_pages) {
130+ #ifndef PERF_ATTR_SIZE_VER5
131+ return createStringError (inconvertibleErrorCode (),
132+ " Intel PT Linux perf event not supported" );
133+ #else
130134 if (num_aux_pages == 0 )
131135 return Error::success ();
132136
@@ -143,6 +147,7 @@ llvm::Error PerfEvent::MmapAuxBuffer(size_t num_aux_pages) {
143147 return Error::success ();
144148 } else
145149 return mmap_aux.takeError ();
150+ #endif
146151}
147152
148153llvm::Error PerfEvent::MmapMetadataAndBuffers (size_t num_data_pages,
@@ -172,16 +177,24 @@ perf_event_mmap_page &PerfEvent::GetMetadataPage() const {
172177}
173178
174179ArrayRef<uint8_t > PerfEvent::GetDataBuffer () const {
180+ #ifndef PERF_ATTR_SIZE_VER5
181+ llvm_unreachable (" Intel PT Linux perf event not supported" );
182+ #else
175183 perf_event_mmap_page &mmap_metadata = GetMetadataPage ();
176184 return {reinterpret_cast <uint8_t *>(m_metadata_data_base.get ()) +
177185 mmap_metadata.data_offset ,
178- static_cast <size_t >(mmap_metadata.data_size )};
186+ static_cast <size_t >(mmap_metadata.data_size )};
187+ #endif
179188}
180189
181190ArrayRef<uint8_t > PerfEvent::GetAuxBuffer () const {
191+ #ifndef PERF_ATTR_SIZE_VER5
192+ llvm_unreachable (" Intel PT Linux perf event not supported" );
193+ #else
182194 perf_event_mmap_page &mmap_metadata = GetMetadataPage ();
183195 return {reinterpret_cast <uint8_t *>(m_aux_base.get ()),
184- static_cast <size_t >(mmap_metadata.aux_size )};
196+ static_cast <size_t >(mmap_metadata.aux_size )};
197+ #endif
185198}
186199
187200Expected<std::vector<uint8_t >> PerfEvent::GetReadOnlyDataBuffer () {
@@ -190,6 +203,10 @@ Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyDataBuffer() {
190203 // this piece of code updates some pointers. See more about data_tail
191204 // in https://man7.org/linux/man-pages/man2/perf_event_open.2.html.
192205
206+ #ifndef PERF_ATTR_SIZE_VER5
207+ return createStringError (inconvertibleErrorCode (),
208+ " Intel PT Linux perf event not supported" );
209+ #else
193210 bool was_enabled = m_enabled;
194211 if (Error err = DisableWithIoctl ())
195212 return std::move (err);
@@ -226,6 +243,7 @@ Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyDataBuffer() {
226243 }
227244
228245 return output;
246+ #endif
229247}
230248
231249Expected<std::vector<uint8_t >> PerfEvent::GetReadOnlyAuxBuffer () {
@@ -234,6 +252,10 @@ Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyAuxBuffer() {
234252 // this piece of code updates some pointers. See more about aux_tail
235253 // in https://man7.org/linux/man-pages/man2/perf_event_open.2.html.
236254
255+ #ifndef PERF_ATTR_SIZE_VER5
256+ return createStringError (inconvertibleErrorCode (),
257+ " Intel PT Linux perf event not supported" );
258+ #else
237259 bool was_enabled = m_enabled;
238260 if (Error err = DisableWithIoctl ())
239261 return std::move (err);
@@ -266,6 +288,7 @@ Expected<std::vector<uint8_t>> PerfEvent::GetReadOnlyAuxBuffer() {
266288 }
267289
268290 return output;
291+ #endif
269292}
270293
271294Error PerfEvent::DisableWithIoctl () {
@@ -297,11 +320,15 @@ Error PerfEvent::EnableWithIoctl() {
297320}
298321
299322size_t PerfEvent::GetEffectiveDataBufferSize () const {
323+ #ifndef PERF_ATTR_SIZE_VER5
324+ llvm_unreachable (" Intel PT Linux perf event not supported" );
325+ #else
300326 perf_event_mmap_page &mmap_metadata = GetMetadataPage ();
301327 if (mmap_metadata.data_head < mmap_metadata.data_size )
302328 return mmap_metadata.data_head ;
303329 else
304330 return mmap_metadata.data_size ; // The buffer has wrapped.
331+ #endif
305332}
306333
307334Expected<PerfEvent>
0 commit comments