git: e5a4712e6557 - stable/14 - libpmcstat: fix pmcstat -G on older-ish -CURRENT w/ drm-kmod

From: Kyle Evans <kevans_at_FreeBSD.org>
Date: Sat, 26 Apr 2025 03:24:59 UTC
The branch stable/14 has been updated by kevans:

URL: https://cgit.FreeBSD.org/src/commit/?id=e5a4712e6557d1007bfa63b8c83c4e3d8f86564b

commit e5a4712e6557d1007bfa63b8c83c4e3d8f86564b
Author:     Kyle Evans <kevans@FreeBSD.org>
AuthorDate: 2025-04-21 04:00:01 +0000
Commit:     Kyle Evans <kevans@FreeBSD.org>
CommitDate: 2025-04-26 03:24:17 +0000

    libpmcstat: fix pmcstat -G on older-ish -CURRENT w/ drm-kmod
    
    The linuxkpi_gplv2.ko module on older-ish -CURRENT had absolutely no
    .text contents, but it was still loaded.  Instead of hitting the later
    assertion because 0 is not less than 0, we can just skip images like
    this as we should not have any samples from them.
    
    Reviewed by:    gallatin
    
    (cherry picked from commit 77721403c91d67dbfd5a2c5c667e7f5d87acb3f6)
---
 lib/libpmcstat/libpmcstat_image.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/lib/libpmcstat/libpmcstat_image.c b/lib/libpmcstat/libpmcstat_image.c
index f8f76bfc148b..f61e22cc21e3 100644
--- a/lib/libpmcstat/libpmcstat_image.c
+++ b/lib/libpmcstat/libpmcstat_image.c
@@ -194,6 +194,14 @@ pmcstat_image_link(struct pmcstat_process *pp, struct pmcstat_image *image,
 	assert(image->pi_type != PMCSTAT_IMAGE_UNKNOWN &&
 	    image->pi_type != PMCSTAT_IMAGE_INDETERMINABLE);
 
+	/*
+	 * It's possible to have images with nothing of value in .text
+	 * legitimately.  We shouldn't have any samples from this image, so
+	 * don't bother with a map entry either.
+	 */
+	if (image->pi_start == 0 && image->pi_end == 0)
+		return;
+
 	if ((pcmnew = malloc(sizeof(*pcmnew))) == NULL)
 		err(EX_OSERR, "ERROR: Cannot create a map entry");