⎜ http://pastebin.com/GHPm1B7B
10:41⎜<mira|AO:#!/bin/mksh> .oO(wtf is SkyOS?)
10:42⎜<mira|AO:#!/bin/mksh> shf.c:453: warning: format '%zd' expects type 'signed size_t', but argument 4
⎜ has type 'ssize_t'
10:42⎜<mira|AO:#!/bin/mksh> lol…
10:42⎜<mira|AO:#!/bin/mksh> I’ve seen (and fixed!) that in dietlibc too, recently
10:43⎜«RT|Chatzilla:#!/bin/mksh» http://en.wikipedia.org/wiki/SkyOS
10:43⎜<mira|AO:#!/bin/mksh> shell-init: error retrieving current directory: getcwd: cannot access parent
⎜ directories: Not a character device ←←← huh?!?!?!
10:46⎜<mira|AO:#!/bin/mksh> looks like their POSIX layer has got issues (other than this shell-init
⎜ thing, umask and checks for existence upon open() are broken)
10:46⎜<mira|AO:#!/bin/mksh> but mksh is usable, I'd say
10:46⎜<mira|AO:#!/bin/mksh> “mostly”
10:46⎜<mira|AO:#!/bin/mksh> let me commit that
10:46⎜«RT|Chatzilla:#!/bin/mksh» funny posix layer bug, just like "unexpected exit status 1 (signal 1),
⎜ expected 1" signal bug in BeOS5
prerequisites are actually fulfilled, i.e. evrn further down than with
the last commit doing this, and move some prerequisites of stuff that
has wandered outside the !INCLUDES_ONLY block with the compile-time
assert changes to the outside, too
fixes FTBFS on MSYS which has neither <stdint.h> nor uint32_t
reported by RT
• IBM XL C: display version better (tested on V7.0 by cnuke@)
• do not 'IFS=: read nr name', Cygwin 1.7 dash fails it
• disable cd-pe, glob-range-3 on Cygwin (the former cannot
succeed because the mv fails, the latter fails from 1.7 on)
• mark heredoc-tmpfile-8 as need-pass: no
• apply __attribute__ only to a function prototype, not to
the body (even if static), since xlC fails that
• bump version to R40 (beta)
• ensure that bool/true/false are cpp macros, overriding any pre-defined
• document the requirement that tobool(x) must map any-type 'x' into bool
• document the requirement that a bool must only be true or false, and
that it (tobool() rather) must have an identity mapping to 'short'
• possibly fix ksh_func for/and fpFUNCTf – maybe spotted by cnuke@
and switches to the TARGET_OS=Linux
• introduce android as regression test suite category
• add an android specific standard alias
• clean up redundant ‘-o sh’ arg in a few checks
a mirtoconf check, would’ve been a real problem on an LP64 platform
• sh.h: work around a bad interaction between -Wformat on gcc and manual
string pooling for T_synerr, which is used in place of a format string
in some places
– possible integer overflows in memory allocation, mostly
‣ multiplication: all are checked now
‣ addition: reviewed them, most were “proven” or guessed to be
“almost” impossible to run over (e.g. when we have a string
whose length is taken it is assumed that the length will be
more than only a few bytes below SIZE_MAX, since code and
stack have to fit); some are checked now (e.g. when one of
the summands is an off_t); most of the unchecked ones are
annotated now
⇒ cost (MirBSD/i386 static): +76 .text
⇒ cost (Debian sid/i386): +779 .text -4 .data
– on Linux targets, setuid() setresuid() setresgid() can fail
with EAGAIN; check for that and, if so, warn once and retry
infinitely (other targets to be added later once we know that
they are “insane”)
⇒ cost (Debian sid/i386): +192 .text (includes .rodata)
• setmode.c: Do overflow checking for realloc() too; switch back
from calloc() to a checked malloc() for simplification while there
• define -DIN_MKSH and let setmode.c look a tad nicer while here
‣ -combine → -c combine
‣ -llvm → -c llvm -O
‣ -llvm=x → -c llvm -o x
‣ -valgrind → -g²
• new option -v (version)
• new options -c (compile mode³), -o (opt flags), -O (reset opt flags)
• opt flags default to -std-compile-opts (llvm) now
• support⁴ the LLVM dragonegg plugin for GCC
• sync list of removed files (*.bc, *.ll, add missing Rebuild.sh)
① old options still valid but emit a warning
② except this one
③ compile modes are:
• normal
• makefile (-M)
• combine (old -combine, new -c combine)
• dragonegg (new -c dragonegg)
• llvm (old -llvm, old -llvm=*, new -c llvm)
the first two are not settable via -c though…
④ sample use:
tg@seduxbox:~/x$ export PATH=$PATH:/opt/llvm/bin
tg@seduxbox:~/x$ CC='/opt/gcc-4.5.1/bin/gcc-4.5.1 -fplugin=/opt/llvm/lib/dragonegg.so' sh ../mksh/Build.sh -c dragonegg -r
Thanks to «dileX:#grml» for giving ssh access.
now that we use the same name as quiet-by-design autoconf
to please ccache anyway (and no we will not become quiet,
I can't usually get my hand on a buildd's conftest.log)
MKSH_S_EDIT for small (Emacs) editing mode, MKSH_S_FEAT for all the dis-
abled language features), which can be set to 0 despite MKSH_SMALL being
defined to re-enable the Vi command line editing mode (which I wouldn't,
but fits into the general mastermind scheme)
libc function realpath(3) which may not be available on the target
system; compile the realpath builtin unconditionally
looks fine to me, but review is appreciated; this is (very) lightly
based upon MirBSD libc’s realpath(3) and pdksh’s get_phys_path()