Commit Graph

1348 Commits

Author SHA1 Message Date
tg 31d1499219 * back out almost all of the memory allocator related changes, as aalloc
was hard to type and hard to fix, galloc is also hard to fix, and some
  things I learned will probably improve things more but make me use the
  original form as base (especially for space savings)
* let sizeofN die though, remove even more casts
* optimise, polish
* regen Makefiles
* sprinkle a few /* CONSTCOND */ while here
2008-12-13 17:02:18 +00:00
tg 732e10c982 comment on slow machines and OEs like GNU/Cygwin32 2008-12-08 13:57:35 +00:00
tg 042086e49e rename utf8-hack to utf8-mode (use set -U or set +U instead, anyway)
and announce less hackish things
2008-12-04 18:11:08 +00:00
tg a19bf7253a * sh.h: note that file descriptors SHALL be <100
* syn.c: fix bashiop-4 regression test; failed due to me using a
  simple string when a wdstring was expected, sorry; the new code
  assumes file descriptors take up a maximum of two characters
2008-12-02 13:20:40 +00:00
tg ef5a465acd fix botched testcase from 10049352E9F5DBF7056 - check.pl offers
a time-limit functionality after all...
2008-12-02 13:19:28 +00:00
tg 330948eafd add a test case for the recursion limit fix 2008-12-02 12:48:16 +00:00
tg 4897682502 Alias expansion has a recursion check which tries to break the cycle if
encountered. However, when reading end of input, the source type is set
to SEOF while popping, whereas the recursion check code only checks for
an SALIAS type.

Fix: add a new SF_HASALIAS flag; change u.tblp from being valid if type
is SALIAS to being valid if SF_HASALIAS is set; set SF_HASALIAS for the
created SALIAS sources; set SF_HASALIAS and u.tblp when creating SALIAS
whose next is SEOF on the SEOF source as well.

Reported by Michael Hlavinka as Redhat Bug #474115
2008-12-02 12:39:38 +00:00
tg 177f707a9f ah, so this is how it fails, in a function! 2008-11-30 16:57:40 +00:00
tg 667c0ba026 add another regression test (XXX why did a similar thing fail?) 2008-11-30 16:53:15 +00:00
tg 65b1e6c09c forgot to bump version here too
savings: 523 .text, 16 .data, 32 .bss (small), ceteris paribus (full)
2008-11-30 10:45:42 +00:00
tg c0703f5f26 if MKSH_SMALL and HAVE_ARC4RANDOM, there is no need to use rand()/srand(3)
ever, since MKSH_SMALL is not required to be as close to compatibility as
normal/generic shells; we can also get rid of time(3) calls
2008-11-30 10:33:40 +00:00
tg abb6bea6d8 b0rken for now… 2008-11-19 21:05:48 +00:00
tg d97691ca61 by the principle of the working tree, we cannot enable aalloc as of now.
damn, pointers in C are so uselessly complicated… in asm it’s much easier
2008-11-17 01:14:57 +00:00
tg 90e8e7ea72 rewrite the cookie logic… while this is better than previously,
we still have issues:

(gdb) r
Starting program: /usr/obj/bin/mksh/mksh -c print\ \$KSH_VERSION
mksh in free(): error: modified (chunk-) pointer

Program received signal SIGABRT, Aborted.
2008-11-15 11:42:18 +00:00
tg 1ca9790f1d typo 2008-11-15 09:05:29 +00:00
tg 546d5d0def give hints to anew() according to aalloc stats output for testsuite and a
little interactive use, to reduce the number realloc(3) must be called
2008-11-15 09:00:19 +00:00
tg 6be05862db meet AALLOC_STATS 2008-11-15 08:52:01 +00:00
tg 6b9cdbbfd6 globalise internal_verrorf() 2008-11-15 08:42:36 +00:00
tg cd716426e4 introduce AALLOC_STATS, which somewhat breaks the encapsulation for need
of a friendly name
2008-11-15 08:03:24 +00:00
tg d8bc1cf161 thread-safety in the atexit function, justin case 2008-11-15 07:59:46 +00:00
tg 24a23d52d8 add plugs for thread-safety, requested by Jonathan Schleifer
example:
#define AALLOC_THREAD_ENTER(ap)	@synchronized(aalloc_guard) {
#define AALLOC_THREAD_LEAVE(ap)	}

notes:
• you must declare and define eventual guard objects yourself
• while there will not be any direct “return” calls inside the
  locked area, AALLOC_ABORT and AALLOC_WARN may be called
• AALLOC_RANDOM does not need to be thread-safe, but malloc
  and free should be; if “ap” is used for locking, all functions
  called must be thread-safe though
2008-11-15 07:51:53 +00:00
tg 32e1ecf5b3 enable passing of a hint how many pointers we’ll need to anew()
if 0, the default is used
2008-11-15 07:35:25 +00:00
tg 03acb8ce51 this was NOT intended to be committed; my sincere apologies 2008-11-13 00:36:07 +00:00
tg 4e975aa081 make silently leaking a define for better integration into other programmes 2008-11-12 23:34:02 +00:00
tg e0853c5908 it is, apparently, not portably guaranteed that realloc can deal with NULL 2008-11-12 19:23:09 +00:00
tg 255c77ff32 use -DAALLOC_TRACK in MirOS-current but not releases, similar to
-DMKSH_AFREE_DEBUG, which is even similar in functionality

cost 412 code, 32 bss
2008-11-12 07:38:42 +00:00
tg d099b00b53 leave at least a working tree, with zero-penalty -DAALLOC_NO_COOKIES
XXX cookies are still broken?

cost for aalloc.c: data -= (4, 0, 4, 0); text += (1665, ?, 2115, 2217)
2008-11-12 07:36:19 +00:00
tg 079e86501a fix the cookie checks 2008-11-12 07:02:47 +00:00
tg 518d37b6bf same fuckup as in commitid 100491A793F1CA8D9CA, different place 2008-11-12 06:58:49 +00:00
tg 1cf58ac17e more silently 2008-11-12 06:44:04 +00:00
tg bfec7328d4 allow mksh to leak silently 2008-11-12 06:42:22 +00:00
tg 28a0e28b1d adelete is supposed to be quiet on valid pointers 2008-11-12 06:38:08 +00:00
tg 3c07bc66f0 fix up the fuckage in afree() 2008-11-12 06:35:27 +00:00
tg c6bcbc7bb0 improve error reporting 2008-11-12 06:14:26 +00:00
tg 364a7d116a mergo 2008-11-12 06:12:56 +00:00
tg 548c86147e more careful about disabling cookies 2008-11-12 06:10:51 +00:00
tg 4d62063eca and fix another set of CPPFLAGS for debugging 2008-11-12 06:05:54 +00:00
tg 42b789fc04 no %t and %z specifiers in shf_vfprintf ☹ so use %p and %l instead 2008-11-12 05:55:43 +00:00
tg c113091e2d forgot to charge for the extra size in the abstraction 2008-11-12 05:46:45 +00:00
tg b08956d6a7 raise AALLOC_INITSZ to be less expensive 2008-11-12 05:46:14 +00:00
tg 18b38ac5c7 if the address of bp changes, all backpointers must be adjusted as well ☹
pretty expensive
2008-11-12 05:45:28 +00:00
tg 7f17e3fc91 temporarily disable cookies for debugging 2008-11-12 05:40:23 +00:00
tg b1673ff1a3 with other combinations too 2008-11-12 05:34:20 +00:00
tg c3e17d8f0b get the debugging methods to build 2008-11-12 05:32:34 +00:00
tg 1211cf79cc • bp->last == bp->endp is allowed
• do the realloc properly
2008-11-12 05:27:01 +00:00
tg 4b456b1457 __CRAZY cleanliness: pointer arithmetic 2008-11-12 05:11:05 +00:00
tg 7cbc0b6fa2 this one I could have seen by myself if not for the late time of the day 2008-11-12 05:05:17 +00:00
tg e56b1f628e alloc.c is now not always included any more, aalloc.c is MirOS licenced 2008-11-12 05:00:40 +00:00
tg d15671f6f6 fix first batch of compile warnings, enable aalloc for mirbsd 2008-11-12 04:59:42 +00:00
tg 3c1e46ee4d prepare for aalloc.c, which I have just written myself, as an area-based
allocator using malloc and free, with mmap malloc and omalloc in mind,
not counterfeiting its security measures such as guard pages, and having
some of our own, e.g. XOR random cookies, optional mprotect, etc.

zero cost (for we have arc4random())
2008-11-12 04:55:19 +00:00