[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/5] xen/tools: remove usages of `stat -s` in check-endbr.sh


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Wed, 11 Feb 2026 11:46:35 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=9pns87Gx8A+ohsVWJBKd5VQPd6Y2znuMXUnLwimLmow=; b=Vf7DHn796zwAGbEar5gHsTxQUlpF5/dfFYVnqpr5l1DQ/RBJrflXhnymAkXWo6h9xZ/K6C3rvjdKQRFAi0ritaOC6RvPNStSCo1DS24XKRdXYeWTXjGn81GSLw4IZQIrNPj8yj1MjGz4IIU2VUTGaJfApcbVijtSCHzHRg3mBEblEH9scRc+MDP0CHLo2UdCdILTqqsBAncNFlLilTowR3ko5njQevxJOINOsvq5CxXv1zpFkoWwtYWiEawXGlF28rFrANvarOePa5vCya+9wxVwwJzecOBuUlgdP/x9aKV5EIJTQxgu+fwvLGRI93pbA9jZJGmk9lUGfF8x/rUuUg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Fs9WtW0tvnK1koeI6dGfVdZRs3pDIIg5t4lZ/84J8ZF604TMhjfCM2+CAfrWjL5YncJ7WOt99s482J44fEOMFGBhhntpLj1wvHwlnHDkCI1LEmyMxGIMNJDN4lefYVDqAQ3welepVwC5yC7lLQ0X1kPWTnh/uQ/7BbHA4Vc4bas1fNqyPs/+zrtUPioG0a9W/Ww+crxOJVJBxJWk7JQaxJR2tcXn5qXYSQLRhZgt9U2+lUGFgJfHS3ijSZNM8t3bb6ztg0/ODZN9JwFj7RlvSkqnWibYRHc73JqDcxINfggQLWDY5wStWhWlSiMINjhaSbSQfm04G20fccVMkW83CA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=citrix.com;
  • Cc: Roger Pau Monne <roger.pau@xxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>
  • Delivery-date: Wed, 11 Feb 2026 10:47:12 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

The `-s` option to stat is not POSIX compatible, and hence prevents the
check-endbr.sh script from running reliably.

The first instance of `stat -s` can be removed by fetching the section size
from the output of objdump itself, which the script already parses to get
the VMA values.

The other two instances can be replaced by counting the lines in the
respective files.  Those files contain list of addresses, so the size in
bytes is not strictly needed, we can count the number of lines instead.

Suggested-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
 xen/tools/check-endbr.sh | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/xen/tools/check-endbr.sh b/xen/tools/check-endbr.sh
index bf153a570db4..383d7e710a53 100755
--- a/xen/tools/check-endbr.sh
+++ b/xen/tools/check-endbr.sh
@@ -92,14 +92,15 @@ ${OBJDUMP} -j .text $1 -d -w | grep '       endbr64 *$' | 
cut -f 1 -d ':' > $VALID &
 #    check nevertheless.
 #
 eval $(${OBJDUMP} -j .text $1 -h |
-    $AWK '$2 == ".text" {printf "vma_hi=%s\nvma_lo=%s\n", substr($4, 1, 9), 
substr($4, 10, 16)}')
+    $AWK '$2 == ".text" {printf "bin_sz=%s\nvma_hi=%s\nvma_lo=%s\n", "0x" $3, 
substr($4, 1, 9), substr($4, 10, 16)}')
 
-${OBJCOPY} -j .text $1 -O binary $TEXT_BIN
-
-bin_sz=$(stat -c '%s' $TEXT_BIN)
+# Convert objdump hex reported .text size to decimal
+bin_sz=$(printf %u $bin_sz)
 [ "$bin_sz" -ge $(((1 << 28) - $vma_lo)) ] &&
     { echo "$MSG_PFX Error: .text offsets must not exceed 256M" >&2; exit 1; }
 
+${OBJCOPY} -j .text $1 -O binary $TEXT_BIN
+
 # instruction:    hex:           oct:
 # endbr64         f3 0f 1e fa    363 017 036 372
 # endbr32         f3 0f 1e fb    363 017 036 373
@@ -116,8 +117,8 @@ fi | $AWK -F':' '{printf "%s%07x\n", "'$vma_hi'", 
int('$((0x$vma_lo))') + $1}' >
 wait
 
 # Sanity check $VALID and $ALL, in case the string parsing bitrots
-val_sz=$(stat -c '%s' $VALID)
-all_sz=$(stat -c '%s' $ALL)
+val_sz=$(wc -l < $VALID)
+all_sz=$(wc -l < $ALL)
 [ "$val_sz" -eq 0 ]         && { echo "$MSG_PFX Error: Empty valid-addrs" >&2; 
exit 1; }
 [ "$all_sz" -eq 0 ]         && { echo "$MSG_PFX Error: Empty all-addrs" >&2; 
exit 1; }
 [ "$all_sz" -lt "$val_sz" ] && { echo "$MSG_PFX Error: More valid-addrs than 
all-addrs" >&2; exit 1; }
-- 
2.51.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.