fix(fw): M43 系统组件接入 o32 time32(9 组件 + meow_audio CLI)
- 构建脚本链 ../sdk/meow_time32.c + -DMEOW_TIME32_LIBC_OVERRIDES: sysui/svcd/bootmenu/amsd/netmgrd/crash/svc_perf/powermgr/meowpanel, 以及 musl-static 的 meow_audio CLI(monitor 取时/轮询) - meow_audiod 守护例外:glibc-2.22 time_t 32 位,无 musl time64 ABI 错位,不链 - 重编 10 个产物:反汇编 4263=3 / 4403=0,__clock_gettime 按 16 字节布局写回 - test_time32_abi.sh 收紧为 addiu 系统调用号匹配,避免 .text+0x1133x 偏移误报 - fw_content.conf 同步全部新 md5(清单逐行校验通过)
This commit is contained in:
1 parent
96c15a06ec
commit
884d4c4891
22 files changed
+58
-24
No files matched your search
@@ -6,6 +6,9 @@ set -e
|
||||
cd "$(dirname "$0")"
|
||||
CC="$HOME/Project/R3ProII/.tools/zig-mipsel-cc"
|
||||
MEOW_TOUCH_DIR="../meow_launcherd"
|
||||
"$CC" -Os -static -I "$MEOW_TOUCH_DIR" meow_bootmenu.c "$MEOW_TOUCH_DIR/meow_touch.c" -o meow_bootmenu
|
||||
# M43: bootmenu 也不链 meow_ui.a,单独链 time32 修取时/睡眠 ABI。只改语义正确的取时来源,
|
||||
# boot_timeout/按键长按/守候计时行为不变(修复后才是真实毫秒;initramfs 内同样生效)。
|
||||
"$CC" -Os -static -I "$MEOW_TOUCH_DIR" -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
meow_bootmenu.c "$MEOW_TOUCH_DIR/meow_touch.c" ../sdk/meow_time32.c -o meow_bootmenu
|
||||
ls -la meow_bootmenu
|
||||
file meow_bootmenu
|
||||
Binary file not shown.
@@ -33,7 +33,10 @@ if [ "$1" = "am" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
"$CC" -I"$ROOT/patch_v2/meow_launcherd" -Os -Wall -Wextra -static meow_amsd.c -o meow_amsd
|
||||
# meow_time32.c:独立 o32 time32 取时/睡眠(amsd 不链 meow_ui.a);同时修 now_ms 与
|
||||
# usleep 退避。am CLI 无取时/睡眠调用,保持原样。
|
||||
"$CC" -I"$ROOT/patch_v2/meow_launcherd" -Os -Wall -Wextra -static \
|
||||
-DMEOW_TIME32_LIBC_OVERRIDES meow_amsd.c ../sdk/meow_time32.c -o meow_amsd
|
||||
echo "== meow_amsd (mipsel static) =="
|
||||
ls -la meow_amsd
|
||||
md5sum meow_amsd
|
||||
|
||||
Binary file not shown.
@@ -43,7 +43,10 @@ if [ "$1" = "host" ]; then
|
||||
fi
|
||||
|
||||
if [ "$1" = "cli" ]; then
|
||||
"$CC" $INC -Os -Wall -Wextra -static meow_audio.c -o meow_audio -lm
|
||||
# M43: meow_audio 是 musl-static(当前 zig 链),与其它系统组件同源受损 → 链 time32 修
|
||||
# clock_gettime/usleep(monitor 的 100ms 窗口/轮询)。
|
||||
"$CC" $INC -Os -Wall -Wextra -static -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
meow_audio.c ../sdk/meow_time32.c -o meow_audio -lm
|
||||
echo "== meow_audio (mipsel static CLI) =="
|
||||
ls -la meow_audio
|
||||
md5sum meow_audio
|
||||
@@ -52,6 +55,9 @@ if [ "$1" = "cli" ]; then
|
||||
fi
|
||||
|
||||
# meow_audiod:mipsel glibc-dynamic,BT 直链 libasound(-Llibbt -lasound)。-lpthread 供播放线程。
|
||||
# M43 例外:本守护走 glibc-2.22(time_t 32 位、struct timespec 8 字节),头/实现 ABI 一致,
|
||||
# 不存在 zig-musl 的 time64 头 vs time32 实现错位;meow_time32.c 的 __clock_* 接管是 musl 内部
|
||||
# 符号,对 glibc 目标无意义且可能引入符号冲突,故**不链**。musl-static 的 meow_audio CLI 已链。
|
||||
# 链接源 libbt/libasound.so.2.0.0(设备固件 libasound.so.2 副本);缺失时从固件镜像自拷贝(idempotent)。
|
||||
LIBBT="libbt"
|
||||
ASOUND_SRC="$ROOT/hiby_os_crack/r3proii/squashfs-root-example/usr/lib/libasound.so.2.0.0"
|
||||
|
||||
Binary file not shown.
@@ -21,7 +21,9 @@ if [ "$1" = "host" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
"$CC" -Os -Wall -Wextra -static meow_crash.c -o meow_crash
|
||||
# meow_time32.c:独立 o32 time32 取时/睡眠(crash 不链 meow_ui.a);扫描/清理节拍恢复真实毫秒。
|
||||
"$CC" -Os -Wall -Wextra -static -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
meow_crash.c ../sdk/meow_time32.c -o meow_crash
|
||||
echo "== meow_crash (mipsel static) =="
|
||||
ls -la meow_crash
|
||||
md5sum meow_crash
|
||||
|
||||
Binary file not shown.
@@ -26,7 +26,10 @@ if [ "$1" = "host" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
"$CC" -Os -Wall -Wextra -static -I"$I_HDR" meow_netmgrd.c -o meow_netmgrd
|
||||
# meow_time32.c:独立 o32 time32 取时/睡眠(netmgrd 不链 meow_ui.a);修 DNS TTL 基准
|
||||
# 与 nanosleep 退避。守护/CLI 同一二进制,一次构建两处安装。
|
||||
"$CC" -Os -Wall -Wextra -static -I"$I_HDR" -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
meow_netmgrd.c ../sdk/meow_time32.c -o meow_netmgrd
|
||||
echo "== meow_netmgrd (mipsel static) =="
|
||||
ls -la meow_netmgrd
|
||||
md5sum meow_netmgrd
|
||||
|
||||
Binary file not shown.
@@ -24,7 +24,10 @@ if [ "$1" = "host" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
"$CC" -Os -Wall -Wextra -static -I"$I_HDR" meow_powermgr.c -o meow_powermgr
|
||||
# meow_time32.c:独立 o32 time32 取时/睡眠(powermgr 不链 meow_ui.a);采样时间戳与
|
||||
# usleep 轮询恢复真实毫秒。
|
||||
"$CC" -Os -Wall -Wextra -static -I"$I_HDR" -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
meow_powermgr.c ../sdk/meow_time32.c -o meow_powermgr
|
||||
echo "== meow_powermgr (mipsel static) =="
|
||||
ls -la meow_powermgr
|
||||
md5sum meow_powermgr
|
||||
|
||||
Binary file not shown.
@@ -22,7 +22,10 @@ if [ "$1" = "host" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
"$CC" -Os -Wall -Wextra -static -I"$I_HDR" meow_svc_perf.c -o meow_svc_perf
|
||||
# meow_time32.c:独立 o32 time32 取时/睡眠(svc_perf 不链 meow_ui.a);采样间隔/卡死快照
|
||||
# 冷却恢复真实毫秒。
|
||||
"$CC" -Os -Wall -Wextra -static -I"$I_HDR" -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
meow_svc_perf.c ../sdk/meow_time32.c -o meow_svc_perf
|
||||
echo "== meow_svc_perf (mipsel static) =="
|
||||
ls -la meow_svc_perf
|
||||
md5sum meow_svc_perf
|
||||
|
||||
Binary file not shown.
@@ -21,7 +21,10 @@ if [ "$1" = "host" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
"$CC" -Os -Wall -Wextra -static meow_svcd.c -o meow_svcd
|
||||
# meow_time32.c:独立 o32 time32 取时/睡眠(svcd 不链 meow_ui.a);LIBC_OVERRIDES 在静态
|
||||
# 链接期接管 clock_gettime/time/usleep/nanosleep,修 musl time64 头与 time32 实现的 ABI 错位。
|
||||
"$CC" -Os -Wall -Wextra -static -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
meow_svcd.c ../sdk/meow_time32.c -o meow_svcd
|
||||
echo "== meow_svcd (mipsel static) =="
|
||||
ls -la meow_svcd
|
||||
md5sum meow_svcd
|
||||
|
||||
Binary file not shown.
@@ -21,7 +21,10 @@ if [ "$1" = "host" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
"$CC" -Os -Wall -Wextra -static meow_sysui.c -o meow_sysui
|
||||
# meow_time32.c:独立 o32 time32 取时/睡眠(sysui 不链 meow_ui.a);LIBC_OVERRIDES 在静态
|
||||
# 链接期接管 clock_gettime/time/usleep/nanosleep,修 musl time64 头与 time32 实现的 ABI 错位。
|
||||
"$CC" -Os -Wall -Wextra -static -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
meow_sysui.c ../sdk/meow_time32.c -o meow_sysui
|
||||
echo "== meow_sysui (mipsel static) =="
|
||||
ls -la meow_sysui
|
||||
md5sum meow_sysui
|
||||
|
||||
Binary file not shown.
@@ -25,7 +25,10 @@ if [ "$1" = "host" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
"$CC" -Os -Wall -Wextra -static -I. -I"$I_HDR" src/*.c mp_jpeg.c -o meowpanel
|
||||
# meow_time32.c:独立 o32 time32 取时/睡眠(meowpanel 不链 meow_ui.a);修 time(NULL)
|
||||
# 会话过期基准与 usleep 手势/按键节奏。
|
||||
"$CC" -Os -Wall -Wextra -static -I. -I"$I_HDR" -DMEOW_TIME32_LIBC_OVERRIDES \
|
||||
src/*.c mp_jpeg.c ../sdk/meow_time32.c -o meowpanel
|
||||
echo "== meowpanel (mipsel static) =="
|
||||
ls -la meowpanel
|
||||
md5sum meowpanel
|
||||
|
||||
Binary file not shown.
@@ -21,8 +21,10 @@ for bin in "$@"; do
|
||||
dis="$("$OD" -d --triple=mipsel "$bin" 2>/dev/null)" || {
|
||||
echo "FAIL objdump 失败: $bin"; fail=1; continue;
|
||||
}
|
||||
n_time32=$(printf '%s\n' "$dis" | grep -c '0x10a7' || true)
|
||||
n_time64=$(printf '%s\n' "$dis" | grep -c '0x1133' || true)
|
||||
# 只匹配「把系统调用号装进 a0」的指令,不能裸 grep 0x1133:分支/跳转目标的
|
||||
# 十六进制偏移(如 <.text+0x11338>)也含该子串,会把已修好的二进制误判为残留 4403。
|
||||
n_time32=$(printf '%s\n' "$dis" | grep -cE 'addiu[[:space:]]+\$[0-9a-z]+,[[:space:]]*\$zero,[[:space:]]*0x10a7' || true)
|
||||
n_time64=$(printf '%s\n' "$dis" | grep -cE 'addiu[[:space:]]+\$[0-9a-z]+,[[:space:]]*\$zero,[[:space:]]*0x1133' || true)
|
||||
printf '%-60s SYS_clock_gettime(4263)=%s clock_gettime64(4403)=%s\n' \
|
||||
"$bin" "$n_time32" "$n_time64"
|
||||
if [ "$n_time32" -lt 1 ]; then
|
||||
|
||||
Reference in new issue
Block a user