summaryrefslogtreecommitdiff
path: root/scripts/build_al.sh
diff options
context:
space:
mode:
authorclaude <[email protected]>2026-07-12 01:31:26 +0000
committerclaude <[email protected]>2026-07-12 01:31:26 +0000
commitc480e76433f9bb8ce8ce9d5802cdada8883db184 (patch)
treef84928e5a12c234ec44e899198dca9a41d02170b /scripts/build_al.sh
parenta4dce7f4d920e492d38c32ad3e42efdcfef3b3f1 (diff)
downloadplan9-kencc-linux-c480e76433f9bb8ce8ce9d5802cdada8883db184.tar.gz
plan9-kencc-linux-c480e76433f9bb8ce8ce9d5802cdada8883db184.zip
🌭 kernel/: болваночное ядро (пишет в 0xB8000) + загрузчик Plan9 a.out
- kernel.c + kern.s: 386-ядро, пишет строку в VGA-текстбуфер 0xB8000, halt. Собирается 8a+8c+8l в Plan9 a.out (I_MAGIC, entry 0x100000). - loader.c: загрузчик a.out (не ELF — выхлоп у нас a.out): разбор big-endian заголовка, загрузка сегментов по entry, зануление bss, прыжок. - проверено: kernel = валидный a.out с 0xB8000 в коде; loader.aout_parse корректно разбирает реальное ядро (entry/размеры сходятся). - bin/: добавлены 8a, 8l (386 ассемблер + линкер). Co-Authored-By: Claude Opus 4.8 <[email protected]>
Diffstat (limited to 'scripts/build_al.sh')
-rw-r--r--scripts/build_al.sh2
1 files changed, 2 insertions, 0 deletions
diff --git a/scripts/build_al.sh b/scripts/build_al.sh
index 750f9e0..aae150b 100644
--- a/scripts/build_al.sh
+++ b/scripts/build_al.sh
@@ -24,6 +24,8 @@ fi
for c in *.c; do grep -qE '#include[ \t]*[<"]/sys/' "$c" 2>/dev/null && { echo " пропуск: $c"; rm -f "$c"; }; done
sed -i 's|"\.\./[a-zA-Z0-9]*/|"|g' *.c *.h 2>/dev/null || true
sed -i -E 's/\bround\b/p9round/g; s/\blog2\b/p9log2/g' *.c *.h compat macbody lexbody 2>/dev/null || true
+# USED(a,b) — plan9port-овский USED однопараметрный -> расщепляем на два (нужно линкерам)
+sed -i -E 's/\bUSED\(([^(),]+),[[:space:]]*([^()]+)\)/USED(\1); USED(\2)/g' *.c 2>/dev/null || true
python3 - <<'PY'
import glob,re
pat=re.compile(r'\{\s*return\s+sbrk\s*\(\s*(\w+)\s*\)\s*;\s*\}')