On Wed, Feb 11, 2026 at 12:40:58PM +0100, Jan Beulich wrote:
> On 11.02.2026 11:46, Roger Pau Monne 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.
> 
> In both paragraphs, s/-s/-c/ ?

Bah, yes.

> > 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.
> 
> Hmm, indeed, just that ...
> 
> > --- 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)
> 
> (Alternatively without this line, but ...
> 
> >  [ "$bin_sz" -ge $(((1 << 28) - $vma_lo)) ] &&
> 
> [ "$(($bin_sz))" -ge $(((1 << 28) - $vma_lo)) ] &&
> 
> ?)

Isn't that bash-specific functionality?  The script interpreter is set
as /bin/sh.

> >      { 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; }
> 
> ... the variables' _sz suffixes then end up a little misleading. Not sure
> in how far we care. Perhaps not enough to warrant the bigger churn:
> Reviewed-by: Jan Beulich <[email protected]>
> (with the description adjustment).

I could rename to _lines or some such, but I didn't see much benefit.
If you don't have a strong opinion towards renaming I will leave
as-is.

Thanks, Roger.

Reply via email to