1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-19 23:22:16 +03:00
esp8266/tools/sdk/lib/eval_fix_sdks.sh
Max Prokhorov 204d2c93a7
NONOS SDK clean-up (#8770)
Remove nonos-sdk-v2.2.0-28-g89920dc aka 3v0, since we have a real v3
Remove 3.0.0...3.0.4 to reduce overhead in maintaining a bunch or binary patches
Update our docs and menu opts to mention 'experimental' status

Old versions still remains in git history, so anyone wanting to play around with 3.0.x could still make use of that work
2023-01-03 01:40:53 +03:00

129 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# set -e
single_sdk="${2}"
if [[ -n "$single_sdk" ]]; then
if [[ "NONOSDK" != "${single_sdk:0:7}" ]]; then
single_sdk=""
fi
fi
add_path_ifexist() {
if [[ -d $1 ]]; then
export PATH=$( realpath $1 ):$PATH
return 0
fi
return 1
}
if ! which xtensa-lx106-elf-ar | grep "tools/xtensa-lx106-elf/bin" >>/dev/null; then
add_path_ifexist "../../../xtensa-lx106-elf/bin" || add_path_ifexist "../../xtensa-lx106-elf/bin"
fi
help_msg() {
cat <<EOF
Try:
eval_fix_sdks.sh --analyze
or
eval_fix_sdks.sh --patch
EOF
}
list_sdks() {
if [[ -n "$single_sdk" ]]; then
echo -e "$single_sdk"
return
fi
cat <<EOF
NONOSDK22x_190313
NONOSDK22x_190703
NONOSDK22x_191024
NONOSDK22x_191105
NONOSDK22x_191122
NONOSDK221
NONOSDK305
EOF
}
remove_ifexist() {
[[ -f $1 ]] && rm $1
}
cleanup() {
remove_ifexist old.txt
remove_ifexist old2.txt
remove_ifexist new.txt
for sdk in `list_sdks`; do
remove_ifexist $sdk/eap.o
done
}
unasm() {
xtensa-lx106-elf-objdump -d $*
}
analyze() {
cleanup
for sdk in `list_sdks`; do
pushd $sdk
xtensa-lx106-elf-ar x libwpa2.a eap.o
popd
done
echo ""
find . -name eap.o -exec md5sum {} \; | sort -k2
echo ""
unset prev_sdk
for sdk in `list_sdks`; do
unasm -j ".text.eap_peer_config_deinit" ${sdk}/eap.o >new.txt
if [[ -f old.txt ]]; then
echo "eap_peer_config_deinit: diff $prev_sdk $sdk"
diff old.txt new.txt
echo ""
fi
mv new.txt old.txt
prev_sdk=${sdk}
done
unset prev_sdk
for sdk in `list_sdks`; do
unasm -j ".text.wpa2_sm_rx_eapol" ${sdk}/eap.o >new.txt
if [[ -f old2.txt ]]; then
echo "wpa2_sm_rx_eapol: diff $prev_sdk $sdk"
diff old2.txt new.txt
echo ""
fi
mv new.txt old2.txt
prev_sdk=${sdk}
done
# Find offsets for patching vPortFree with z2EapFree
for sdk in `list_sdks`; do
echo -en "\n${sdk}/eap.o:\n "
grep --byte-offset --only-matching --text vPortFree ${sdk}/eap.o
done
cleanup
}
patch_all() {
for sdk in `list_sdks`; do
pushd $sdk
../fix_sdk_libs.sh
popd
done
}
if [[ "${1}" == "--analyze" ]]; then
analyze
elif [[ "${1}" == "--patch" ]]; then
patch_all
else
help_msg
fi
exit 0