Files
Deshab-OS/CODE/linux/tmp_diff_libc.sh
T

36 lines
1.0 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -u
IMG=/home/deshab/deshab-dev.img
L=$(losetup --find --show --partscan "$IMG")
sleep 0.3
M=$(mktemp -d)
mount -o ro "${L}p1" "$M"
E=$(mktemp -d); R=$(mktemp -d)
mount -o loop,ro "$M/boot/linux-extra-rootfs.img" "$E"
mount -o loop,ro "$M/boot/linux-rootfs.img" "$R"
cp "$R/usr/lib/libc.so.6" /tmp/libc.vdb
cp "$E/usr/lib/libc.so.6" /tmp/libc.persist
umount "$R"; umount "$E"; umount "$M"
rmdir "$R" "$E" "$M"
losetup -d "$L"
python3 - <<'PY'
a = open('/tmp/libc.vdb','rb').read()
b = open('/tmp/libc.persist','rb').read()
print("len", len(a), len(b))
diffs = [i for i in range(min(len(a),len(b))) if a[i] != b[i]]
print("num_diff_bytes", len(diffs))
if diffs:
# group into ranges
ranges = []
s = p = diffs[0]
for i in diffs[1:]:
if i == p + 1:
p = i
else:
ranges.append((s, p)); s = p = i
ranges.append((s, p))
print("num_ranges", len(ranges))
for s, e in ranges[:40]:
print(f" range 0x{s:x}-0x{e:x} ({e-s+1} bytes) page=0x{s & ~0xfff:x}")
PY