Hi Roger, > On 11 Feb 2026, at 11:46, Roger Pau Monne <[email protected]> wrote: > > 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.
I can confirm compilation works on my side and changes seem coherent but i would like an x86 maintainer to review/ack this one to confirm that functionally it is ok. > > Suggested-by: Bertrand Marquis <[email protected]> > Signed-off-by: Roger Pau Monné <[email protected]> Acked-by: Bertrand Marquis <[email protected]> Cheers Bertrand > --- > 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 >
