From 81949f038e2345e30ef8f8248439f436b13ec089 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Sun, 31 Dec 2023 11:43:13 -0800 Subject: [PATCH] Mint APE Loader v1.10 --- ape/ape-m1.c | 8 ++++---- ape/ape.h | 2 +- ape/apeuninstall.sh | 1 + build/bootstrap/ape.aarch64 | Bin 9104 -> 8816 bytes build/bootstrap/ape.elf | Bin 9435 -> 9248 bytes build/bootstrap/ape.macho | Bin 9435 -> 9248 bytes tool/cosmocc/README.md | 2 +- 7 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ape/ape-m1.c b/ape/ape-m1.c index 4c32ebf85..6b9127054 100644 --- a/ape/ape-m1.c +++ b/ape/ape-m1.c @@ -35,7 +35,7 @@ #include #include -#define pagesz 16384 +#define pagesz 16384 /* maximum path size that cosmo can take */ #define PATHSIZE (PATH_MAX < 1024 ? PATH_MAX : 1024) #define SYSLIB_MAGIC ('s' | 'l' << 8 | 'i' << 16 | 'b' << 24) @@ -726,7 +726,7 @@ __attribute__((__noreturn__)) static void Spawn(const char *exe, int fd, register long *x0 __asm__("x0") = sp; register char *x2 __asm__("x2") = path; - register int x3 __asm__("x3") = 8; /* _HOSTXNU */ + register int x3 __asm__("x3") = 8; /* _HOSTXNU */ register struct Syslib *x15 __asm__("x15") = lib; register long x16 __asm__("x16") = e->e_entry; __asm__ volatile("mov\tx1,#0\n\t" @@ -1012,8 +1012,8 @@ int main(int argc, char **argv, char **envp) { Emit("usage: ape PROG [ARGV1,ARGV2,...]\n" " ape - PROG [ARGV0,ARGV1,...]\n" " ($0 = PROG.ape) [ARGV1,ARGV2,...]\n" - "actually portable executable loader silicon 1.9\n" - "copyright 2023 justine alexandra roberts tunney\n" + "actually portable executable loader silicon 1.10\n" + "copyrights 2023 justine alexandra roberts tunney\n" "https://justine.lol/ape.html\n"); _exit(1); } else { diff --git a/ape/ape.h b/ape/ape.h index 68ab61b0a..d2f589612 100644 --- a/ape/ape.h +++ b/ape/ape.h @@ -2,7 +2,7 @@ #define COSMOPOLITAN_APE_APE_H_ #define APE_VERSION_MAJOR 1 -#define APE_VERSION_MINOR 9 +#define APE_VERSION_MINOR 10 #define APE_VERSION_STR APE_VERSION_STR_(APE_VERSION_MAJOR, APE_VERSION_MINOR) #define APE_VERSION_NOTE APE_VERSION_NOTE_(APE_VERSION_MAJOR, APE_VERSION_MINOR) diff --git a/ape/apeuninstall.sh b/ape/apeuninstall.sh index cde7a7064..70cff8452 100755 --- a/ape/apeuninstall.sh +++ b/ape/apeuninstall.sh @@ -54,6 +54,7 @@ for x in .ape \ .ape-1.7 \ .ape-1.8 \ .ape-1.9 \ + .ape-1.10 \ .ape-blink-0.9.2 \ .ape-blink-1.0.0; do rm -f \ diff --git a/build/bootstrap/ape.aarch64 b/build/bootstrap/ape.aarch64 index 6c8f9305b5a7220e92ff01a6562a4360ec078771..5624ea1ff574d29dc9bdad31786a7298e54f7169 100755 GIT binary patch delta 2887 zcmZ`*4Qx}_6+Z9XXUC46#7>;pPMp|IO4BC%B$N=RLi3ABft76Qs8@j)iXE3VTIhyX zrdk`+CdsC3W>a2oBoIR+G%1SRZlVippmj0JD&DyeS$+K3I5p>hzjYYv$fNyQ`E zvv_2?^lGhHRayeyf7iPsyMqW>uKpfbhM&!?Qv@XM{Qg%fAvSe^he5i?x$L3qMKJUBhK&FMyP~pp$Utwp0mZuGPc2R*UFy^UyTH zFE*!$knD4TR1IRrC(CD?0)#<_dr@zOXzF@VFJy|9!vT?gB+G~I6EP#>`IDsM^2FV| z@Yp@spW3p*^SS`$o3d=}bV0ef10eh&fd3ld>*f$VKUouJ^I7U9kqx3zx<TDVSnLbK=5_u4WXM&!_++A?N5Wj#^{Xm61M@Tbe5iQp}vxzh0` zw7=zcwHHfXH1WkZ#l&u|;Qa|Gy%|H(l|7Tik_TmdV0fbkvDbMa9_2K*ex}L?OQZ&r z0~9FoVIJZW94yIA)TgWG2QBpbx*qN^`Y+wr>(}0w56=)t#$fSx${oXH(m(IZ*4v0p z@NjcjJ^P(9+N}?|ZMgrsSIi9cLO4|@X08!O-3+mz{?O5bJQrU}KhckHA5$sc#c#3F z@%+cFm+ob+_;jO~0kXJWxn{4GewKfrV*WLUT1f}!{NS8G&xoT8J81Id%={R zs{%he7YnVWvpeYNcpJjQmCBh>34?blD9iqL0oF|uN0M#aj_=axfFE%A;O{YrnVMdc zWId(lMM=p!Y!{ws=oNI7l#id8jnZg%7e!8pIZngC^|Br`)3z7=_pr zpqDjW0T1)I14uX9*D1?Q>o7S7wP0q=<-w$n-OVOF_KHYU2uASj%y93VgiKjAeJIa#Sx~AdKCFIcD&b+58W?HZ$WvW zYn_LAd4`sn)>z*H82o}jU5rzn>i~9$y3jrc-D$FO-=RM=HP;@-9l5^29`rz{-yzN7 zdCt2K9?SNOfzUAr{m68Hdyjt8+|B)l{?R<%uowG>lBG{%*3$-3q#_x*RDqo~+g&Ts z=>@cH2tcXq@w3HYLRXbl(Pzt=`NjqsFAG$;T+eL##%9;f)@_@gYh1~G*REW>diAb+ zmn*n;H?>i<1@(}zGJyB`3WA%Tj))9KK(i(l^A=2L?&WyN{3;rmpLLBFj z7_J7>#XuY%B7K={mmY%uJ&RlZ&lz|mGTu}53vS%x3UJ&rH0)kuRx_Y-H+>6HHU26W zY1-YO&lP&aM(e7Z^|{dY+v#_gR>O9htoB;$XabJ0Ts;=xyn^1VuGa@D6#-1s#+qim NSe0FUkEUJD{{po_^LzjR delta 3110 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 Y^efKF%gd{BxtQ5oHr3RUPlZMQ1Du&+djJ3c delta 1779 zcmZuxYfKbZ6rNdNS+?Np@+b%qMp#8+P&R^sMsdt8-mSA%t3*V3Y+-pQEa>ivTIG>p zqc`I;ZEubKsMaQJYV04BHlk^9S&)jcsU@~aH8H70U9z^~o8n`7?xOwG`7_`B?m6E* z_dMs9G*=+oqy=jhNQWME_cCqn|5yQVW?wzg4 zX1SFG9ojQGgzq3}Y$BLJHbrbZLI8Y%$y@!;fN?5Kl`-Ac;P?Uyv{P%?pFb-Cb zi&1^-Y0|FET*pQ;jL_L0$#UJQ7NA^Wkb;^zX_Dm*JOiRmklN!{aK6W{@!~>H0#f33 zfV6p3#INxEU^2*CxwEc9;9X=wn^{=?0uJ=~xr3*`%T{!e^HCshXV(@&eu@U#)6w>; zg>qtoG!?;hAAvn-N&}$xo#@*vyN2Y&WUz>=i?@#(UEIU9Ry)~QtiX_E)6THt<)go^-mHGTQu!pKOR7t4J12NP5X5&a%&h5WXqk zpoph}MPLJEb;UDGXgPp=6yyW=kb?ODKBpiPz$FT10=Pwi0f0(DG=TI3P?3gqZ>bQr z3Kc@7P&J5T@;q)CtB@r#7P3c4{fuH0gKDnYl&x0{NE*~3>4Qne`@}9Io!vL$jTV)- znJ`r3{ERsr*R5vNCdbn@&Oy?Y)~mJ4dv&2?t8dI3Z#9phuBn@}X}C{^gn==wO$r!7 zKihq(S1Vj#3{Y<=prf{0;d>Uk4LYg4%_i?QbQb4&_jY!$jK_nNf^Q(`;Il`n>hpWx zHU-D&`Yx@#72>8hKdE} zpjEs5-nnq&cOegS>Yj!+S$!j(a`RJ!_xA*k&}NqR_jLO`t4X~vD|5#~RTbsZ9vDF^ zLGa*8n*;|${2L@IC_W-95-hozurlY{4lj-K&Wp7H(oDo8R-fO!8~`KrwVs2LseV2Q{#oM`%UH=hB)Ce4lRY&VswX=!eD TxN3QqquKetwz=eH)~bI252~j3 diff --git a/build/bootstrap/ape.macho b/build/bootstrap/ape.macho index 9ba658e6fb808af19f69568ee09d573e1ec8cd95..d289768384dd2f06995a2241f4a75a23d908ee18 100755 GIT binary patch delta 1595 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 GXT{%D7pNlu diff --git a/tool/cosmocc/README.md b/tool/cosmocc/README.md index cef09338b..ea486654d 100644 --- a/tool/cosmocc/README.md +++ b/tool/cosmocc/README.md @@ -108,7 +108,7 @@ On Apple Silicon, `aarch64-unknown-cosmo-cc` produces ELF binaries. If you build a hello world program, then you need to say `ape ./hello`. If you don't have an `ape` command then run `cc -o ape bin/ape-m1.c` which should be moved to `/usr/local/bin/ape`. Your APE interpreter might -already exist under a path like `$TMPDIR/.ape-1.9`. It's important to +already exist under a path like `$TMPDIR/.ape-1.10`. It's important to note this is only a gotcha for the cross compiler. Your `cosmocc` compiler wraps the actual ELF binaries with a shell script that'll extract and compile an APE loader automatically, as needed. This also