[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Issue with check-endbr.sh during Xen build
Hi all, I’ve encountered an issue building Xen for x86_64, basically the script check-endbr.sh was returning an error: “Error: More valid-addrs than all-addrs”. I have found a solution but I’m writing anyway to you to make you aware of the issue. In my setup I’m using a docker container with base image from ubuntu:22.04, when I build from the container it Is failing, instead when I’m building from my machine it is working fine. So I’ve set -x in the script to trace it and I have this for my host machine (xen_x86-docker is just xen-syms): $ ./xen/xen/tools/check-endbr.sh tmp_files/xen_x86-docker + MSG_PFX=check-endbr.sh xen_x86-docker + OBJCOPY=objcopy + OBJDUMP=objdump + ADDR2LINE=addr2line + mktemp -d + D=/tmp/tmp.3TmVp2idCm + trap rm -rf /tmp/tmp.3TmVp2idCm EXIT + TEXT_BIN=/tmp/tmp.3TmVp2idCm/xen-syms.text + VALID=/tmp/tmp.3TmVp2idCm/valid-addrs + ALL=/tmp/tmp.3TmVp2idCm/all-addrs + BAD=/tmp/tmp.3TmVp2idCm/bad-addrs + echo X + grep -aob X -q + perl_re=true + echo X + grep -aobP \x58 -q + objdump -j .text tmp_files/xen_x86-docker -d -w + grep endbr64 *$ + cut -f 1 -d : + objdump -j .text tmp_files/xen_x86-docker -h + awk $2 == ".text" {printf "vma_hi=%s\nvma_lo=%s\n", substr($4, 1, 8), substr($4, 9, 16)} + eval vma_hi=ffff82d0 vma_lo=40200000 + vma_hi=ffff82d0 vma_lo=40200000 + objcopy -j .text tmp_files/xen_x86-docker -O binary /tmp/tmp.3TmVp2idCm/xen-syms.text + true + LC_ALL=C grep -aobP \xf3\x0f\x1e(\xfa|\xfb)|\x66\x0f\x1f\x01 /tmp/tmp.3TmVp2idCm/xen-syms.text + awk -F: {printf "%s%x\n", "ffff82d0", int(0x40200000) + $1} + wait + stat -c %s /tmp/tmp.3TmVp2idCm/valid-addrs + val_sz=24004 + stat -c %s /tmp/tmp.3TmVp2idCm/all-addrs + all_sz=24004 + [ 24004 -eq 0 ] + [ 24004 -eq 0 ] + [ 24004 -lt 24004 ] + sort /tmp/tmp.3TmVp2idCm/valid-addrs /tmp/tmp.3TmVp2idCm/all-addrs + uniq -u + wc -l + nr_bad=0 + [ 0 -eq 0 ] + exit 0 + rm -rf /tmp/tmp.3TmVp2idCm And I have this from my docker container: # ./xen/xen/tools/check-endbr.sh tmp_files/xen_x86-docker + MSG_PFX='check-endbr.sh xen_x86-docker' + OBJCOPY=objcopy + OBJDUMP=objdump + ADDR2LINE=addr2line ++ mktemp -d + D=/tmp/tmp.tR0Vt8l2ie + trap 'rm -rf /tmp/tmp.tR0Vt8l2ie' EXIT + TEXT_BIN=/tmp/tmp.tR0Vt8l2ie/xen-syms.text + VALID=/tmp/tmp.tR0Vt8l2ie/valid-addrs + ALL=/tmp/tmp.tR0Vt8l2ie/all-addrs + BAD=/tmp/tmp.tR0Vt8l2ie/bad-addrs + echo X + grep -aob X -q + perl_re=true + echo X + grep -aobP '\x58' -q + objdump -j .text tmp_files/xen_x86-docker -d -w + grep ' endbr64 *$' + cut -f 1 -d : ++ objdump -j .text tmp_files/xen_x86-docker -h ++ awk '$2 == ".text" {printf "vma_hi=%s\nvma_lo=%s\n", substr($4, 1, 8), substr($4, 9, 16)}' + eval vma_hi=ffff82d0 vma_lo=40200000 ++ vma_hi=ffff82d0 ++ vma_lo=40200000 + objcopy -j .text tmp_files/xen_x86-docker -O binary /tmp/tmp.tR0Vt8l2ie/xen-syms.text + true + LC_ALL=C + grep -aobP '\xf3\x0f\x1e(\xfa|\xfb)|\x66\x0f\x1f\x01' /tmp/tmp.tR0Vt8l2ie/xen-syms.text + awk -F: '{printf "%s%x\n", "ffff82d0", int(0x40200000) + $1}' + wait ++ stat -c %s /tmp/tmp.tR0Vt8l2ie/valid-addrs + val_sz=24004 ++ stat -c %s /tmp/tmp.tR0Vt8l2ie/all-addrs + all_sz=19686 + '[' 24004 -eq 0 ']' + '[' 19686 -eq 0 ']' + '[' 19686 -lt 24004 ']' + echo 'check-endbr.sh xen_x86-docker Error: More valid-addrs than all-addrs' check-endbr.sh xen_x86-docker Error: More valid-addrs than all-addrs + exit 1 + rm -rf /tmp/tmp.tR0Vt8l2ie After spending a bit of time to understand what the script does, I’ve checked the awk version and seems that the script is failing in the Docker container because there is mawk there: # awk -W version mawk 1.3.4 20200120 Copyright 2008-2019,2020, Thomas E. Dickey Copyright 1991-1996,2014, Michael D. Brennan random-funcs: srandom/random regex-funcs: internal compiled limits: sprintf buffer 8192 maximum-integer 2147483647 Instead in my host machine there is gawk: $ awk -W version GNU Awk 4.1.4, API: 1.1 (GNU MPFR 4.0.1, GNU MP 6.1.2) […] So there seems to be a dependency on the interpreter (or at least it doesn’t work with that version of mawk). My solution was to install gawk in the container and everything was working fine afterwards. Cheers, Luca
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |