Download

umlsim main page

 umlsim-67 (30-DEC-2004)
umlsim-67.tar.gz (343 kB)

Changes:

  • removed old $obj->$var code
  • instance variables now have to be marked as "public" (tests/public; updated tests/ooarg, tests/oocall, tests/ooeval, tests/oomisc, tests/ooself, tests/ooselfinst, and tests/oovar)
  • -> now allows instance variables names to be reserved words (tests/ooinstrsv)
  • disksim.include: should now also work when using multiple kernels
  • disksim.include: removed usage example
  • disk simulation now detects attempts to register a disk multiple times or to add zones after registration
  • documented functionality of disksim.umlsim
  • include/*: removed superfluous use of $__ for the dummy function that "uses" other functions
  • removed unused function op.c:do_eq
  • objects and functions can now be compared for (non-)equality, and used as array index and case labels (tests/fncmp, tests/objcmp)
  • "print" can now also print functions and objects (test/printfnobj)

 umlsim-66 (20-DEC-2004)
umlsim-66.tar.gz (337 kB)

Changes:

  • script.y: removed duplicate "statement_expression" entry (reported by Chris Ross)
  • "id" operator now knows all internal types
  • method call arguments were evaluated in context of callee (tests/ooeval)
  • during instantiation, $self now points to the new object (tests/ooselfinst)
  • methods called during instantiation no longer confuse umlsim (tests/oomisc)
  • documented OO functionality
  • include/disksim.umlsim: converted to OO
  • tests/dskrot: converted to OO
  • tests/dskrot: test waiting for "forward" rotation waited for "backward" rotation

 umlsim-65 (21-OCT-2004)
umlsim-65.tar.gz (335 kB)

Changes:

  • upgraded to the 2.6.9 kernel, which doesn't need an additional UML patch
  • moved kernel configuration from arch/um/Kconfig to arch/um/Kconfig.debug, and moved the patch from linux-*-markers.patch to new linux-*-config.patch
  • added support for $obj->var syntax and removed $obj->$var (updated tests/ooarg, tests/oocall, tests/oomisc, tests/oovar)
  • corrected title of last test in tests/oovar
  • added $self variable (tests/ooself)
  • split freeing variable and function descriptor removal into separate phases, to avoid conflicts with objects
  • value_int64 incorrectly assumed that all pointers are 64 bit
  • fixed detection of prototype-less function types at various places, and dwx_add_fn now initializes "arg_types" to NULL, making it prototype-less
  • include/run.umlsim: $run_uml now passes the PATH in a file to avoid overflowing the kernel command line buffer
  • "delete" is now an operator, and can also delete files and directories (tests/delfile; updated tests/sbug.delete)
  • sim/README.OO: added brief description of purpose of OO functionality
  • sim/README.OO: documented that there are no class variables

 umlsim-64 (14-OCT-2004)
umlsim-64.tar.gz (333 kB)

Changes:

  • parentheses around the argument of "delete" can now be omitted
  • variable lookup now yields the base (i.e. all variables with the same name) instead of the current instance (call var_instance for that)
  • test for being ptraced was done too late, completely defeating its purpose
  • compiled y.tab.c and lex.yy.c with warnings enabled, and fixed most of them
  • error.c: renamed "input_file" to "set_input_file" due to conflict with FLEX
  • added basic OO functionality, see sim/README.OO (tests/ooinst, tests/oovar, tests/ooarg, tests/oocall)

 umlsim-63 (10-OCT-2004)
umlsim-63.tar.gz (328 kB)

Changes:

  • tests/szofile: test that RAM disk size is a non-zero multiple of 4096 instead of testing for the exact value, which can differ (reported by Eduardo Grosclaude)
  • run/tcp-peek.umlsim and run/tcp-quarter.umlsim did not check for failed "open" (reported by Nicolas Macia)
  • variable $! now contains error number (tests/errno)
  • pseudo-array $![] contains error message strings (tests/errno)
  • documentation: clarified scoping of special variables
  • README: added that fig2dev is required
  • README: described possible access conflicts on /tmp/uml.ctl
  • opening a read-only file for direct memory access no longer causes umlsim to fail
  • cleaner.c now uses /dev/tty instead of file descriptor 0, making cleanup also work with redirected standard input
  • uml.c now refuses UML execution if NPTL is installed
  • cleaner.c automatically disables itself if running under ptrace
  • to avoid version dependencies on wget, added get80
  • netupA-wget-null: now uses get80 (updated tests/slow/rdmnetxmp)
  • netupB-80d-1MB: no longer uses a pipe

 umlsim-62 (3-OCT-2004)
umlsim-62.tar.gz (325 kB)

Changes:

  • include/run.umlsim: renamed $topdir to $__topdir to avoid name space pollution
  • include/run.umlsim:$run_uml: no longer use "sprintf" for mere string concatenation
  • root/scripts: new launcher script init.umlsim, which allows the real init script to be anywhere in $PATH
  • $run_uml now changes the current directory in UML to the current directory of the umlsim process
  • Makefile: added targets "install-extra" and "uninstall-extra", which add tcplog.pl, uml_switch, and 80d
  • 80d: added option -s to limit total amount of data to transfer
  • kernel/Makefile: enable all traffic control options
  • kernel/rlinux can now pass boot parameters

 umlsim-61 (22-SEP-2004)
umlsim-61.tar.gz (324 kB)

Changes:

  • casting to an integer type now always performs arithmetic conversion (updated tests/id)
  • "print" and "printf" now also support 64 bit numbers (tests/print64)
  • all arithmetic, logical, and relational operators now support 64 bit integers (tests/arith64)
  • "sizeof" on a file and "seek" now use 64 bit file offsets
  • include/disksim.umlsim now uses 64 bit arithmetic
  • umlsim and processes controlled by it (i.e. UML kernel and regular programs using libumlsim) now communicate through Unix domain sockets instead of pipes
  • memory in UML kernels is now accessed directly through the files mapped UML, avoiding ptrace
  • run/dd-read-10MB.umlsim, root/scripts/dd-dsd0-10MB: disk simulation example (tests/slow/rdmdsxmp)

 umlsim-60 (16-SEP-2004)
umlsim-60.tar.gz (319 kB)

Changes:

  • README: added "system setup" section with known compatibility issues
  • renamed "configure" to "configure.sh", and added script "configure" that calls "make config"
  • "make slow-tests" now runs only the slow tests, while new target "all-tests" runs all tests
  • Makefile: print SHA1 sum in addition to MD5 sum
  • added test that CPP considers $ as part of macro name (tests/cppdollar)
  • error messages related to structure elements now include the element name (updated tests/sbug.objiderr)
  • added "typeof" operator (tests/typeof)
  • '*' can now also be used on the left-hand side of a type (tests/typeofptr)
  • "-" without digits in (s)printf could crash umlsim (tests/printfm)
  • added string multiplication with * (tests/strmult)
  • added test that file cannot be "print"ed (tests/printff)
  • removed deprecated option -W[no]globalize (use "-W[no]export" instead)
  • removed deprecated keyword "global" (use "export" instead)
  • removed deprecated special variable $! (use $. instead)
  • many documentation fixes and improvements

 umlsim-59 (30-AUG-2004)
umlsim-59.tar.gz (315 kB)

Changes:

  • upgraded to the 2.6.7 kernel, with the uml-2.6.7-1 patch
  • upgraded to UML user mode utilities 20040406
  • removed long-obsolete "default script"
  • made build process more quiet, like kernel build (for verbose mode, add V=1)
  • lib/Makefile: "make clean" now also removes generated source files
  • "switch" works now more like array indexing (updated tests/assoc, tests/switcherr)
  • "sizeof" now also works on regular files and block devices (tests/szofile)
  • error messages from disksim.umlsim now include more information (updated tests/dskrot)

 umlsim-58 (27-AUG-2004)
umlsim-58.tar.gz (313 kB)

Changes:

  • dwxtype.c:subroutine_type now allows non-parameter entries to have child entries (tests/typerec)
  • include/events.umlsim: added general event handling framework (updated tests/umlsim.include)
  • ptrace.c:pt_terminate now PTRACE_CONTs a stopped killed process, before expecting it to respond to pt_waitpid; only pt_kills running processes, without pt_waitpid
  • dwarfx now automatically strips "typedef" (tests/typdefint; updated tests/sbug.id)
  • "uml" now prints system call names (instead of just numbers) if invoked with -d run,run (this only works if the kernel source tree is already in place)
  • change the kernel command line option "debug" in arch/um/kernel/tt/tracer.c to "umldebug" to avoid conflict with "debug" of regular kernel

 umlsim-57 (23-AUG-2004)
umlsim-57.tar.gz (311 kB)

Changes:

  • integrated README examples into regression tests; run with "make slow-tests" or set RUN_SLOW_TESTS (tests/rdmslpxmp, tests/rdmnetxmp)
  • backticks can now be escaped (tests/escbcktck)
  • run.umlsim now tries environment variables UMLSIM_LIBDIR, UMLSIM_TOPDIR, and TOPDIR, before using `pwd` as the base directory
  • run.umlsim now looks for kernel and uml_switch under instead of under
  • runtests.common: if INPUT is omitted, use /dev/tty (updated tests/debug)
  • umlsim -K is now marked as obsolete and yields a warning
  • cleaner.c now also resets the process group of the controlling terminal, so that scripts invoking umlsim don't run into problems
  • when encountering a signal, pt_wait_once now retrieves the registers, so that they can be examined in debugging output
  • arch-*.c place the function return breakpoint in the _start function instead of on a trampoline on the stack, to avoid conflicts with NX
  • run and uml now print what they were looking for if failing to load program specified with absolute path (tests/nopgm)
  • gcc 3.3.3 and 3.4.1 error message compatibility: updated tests/sbug.markers
  • gcc 3.3.3 and 3.4.1 are more aggressive when removing unused items (updated tests/enum, tests/idquote, tests/sbug.ctxcptasg, tests/sbug.readvar, tests/sbug.retbrkleak, tests/sbug.typedef, tests/sbug.typeid, tests/scopeset, tests/sizofincmp, tests/lib/sbug-manyid.sh)
  • added undocumented option -F to prevent forking of cleaner, so that umlsim can be debugged under gdb
  • added NOP to reliable markers, so that they don't become part of code "following" them
  • replaced some labels with reliable marker (updated tests/sbug.assign, tests/vtimetwo)
  • sbug.inline: made demonstration of unreliability more robust
  • sbug.inlool: remove excessively compiler-dependent inline function inlining test
  • sbug.inlool: gcc 3.4.1 seems to ignore -fkeep-inline-functions, so turn -finline into -fno-inline, which seems to do the trick ...

 umlsim-56 (21-AUG-2004)
umlsim-56.tar.gz (308 kB)

Changes:

  • "print" can now print the undefined value, as "" (updated tests/arrayalias, tests/concat, tests/function, tests/printchk, tests/umlsim.queue, tests/undefined, tests/vaundef)
  • major variable scopes rooted at minor scopes were broken (tests/valocal)
  • began adding a disk simulation framework (tests/dskrot; updated tests/umlsim.include)
  • added operator "write" to write a binary object to a file (tests/write, tests/wrtpart)
  • added operator "seek" to change and query the file position (tests/seekrd, tests/seekwr, tests/seekerr, tests/tell)
  • arithmetic operations now treat the undefined value as a signed 0, not as an unsigned 0 (tests/undefsgn)
  • sim/op.c:is_signed no longer allows value->type == NULL
  • fixed various "const" problems discovered with gcc 3.3.3
  • fixed some 32 bit-isms in tests (tests/cast, tests/inassign, tests/printa)
  • dwarfx/dwxout.c:do_output_data: sign extension was broken on 64 bit
  • split some one-line if constructs into two lines
  • kernel.umlsim: added "kmalloc" and "memset"
  • added C-like string literal concatenation (tests/strlitcat; updated tests/check)
  • failing symbol and type lookups no longer escalate outside explicitly specified scope (tests/scopesc)
  • added tests for correct scope selection for all lookups (tests/scopeset)
  • looking up a type in an empty scope crashed umlsim (tests/scopempty)
  • warn if declaring an argument as local (updated tests/dclaftuse)
  • script.l: added function yyerrorf and improved an error message (updated tests/varglobal)
  • sim/cleanup.c: umlsim now forks, and parent kills process tree and resets tty
  • documented the special role of standard input when running umlsim

 umlsim-55 (14-AUG-2004)
umlsim-55.tar.gz (298 kB)

Changes:

  • documented invocation of umlsim
  • umlsim now warns if using "global" or -W[no]globalize
  • character literals are now signed (tests/schar)
  • when applied to a string, the index operator now returns a signed integer (tests/schar)
  • $strcmp now handles strings containing 8 bit characters like strcmp(3) does (tests/schar; updated tests/umlsim.strcmp)
  • floating-point numbers can now be cast to integers (tests/cast)
  • var.c now complains if nesting more than 65535 minor scopes in a major scope
  • block-local variables are now reset to the undefined value at the point where they are declared (tests/lclinit)
  • local array variables are now already visible when evaluating the index expression (tests/lclinit)
  • statement expressions didn't properly handle statement lists (tests/stmtexli, corrected tests/stmtexpr)
  • rbt/jrb.c: parenthesized macro arguments
  • renamed "sizof_array" to "sizeof_array"
  • assigning the undefined value to an array element no longer deletes the key, the "undef" operator still does (updated tests/szoarr)
  • added support for variable argument lists (tests/vain, tests/vapassint, tests/vapassmix, tests/vapassprc, tests/vaedit, tests/vaundef)
  • printf: simplified evaluation (forgot why it had to be complicated in the first place)

 umlsim-54 (17-APR-2004)
umlsim-54.tar.gz (285 kB)

Changes:

  • documentation still referred to old use of $! and $.
  • documented use of types
  • umlsim now warns if using $!
  • tests/lib/sbug-whywait.sbug: changed $! to $.
  • run/{rttvar,tcp-quarter}.umlsim: replaced "global" with "extern"
  • include/{inet,monitor,netsim,nettap,queue,run,string,}.umlsim: replaced "global" with "extern"
  • tests/{argscope,byreflcl,callstack,dclaftuse,fnvarref,globalize,glolo, sbug.retbrkleak,scopearr,undeclared,unused,unusedarg,unusedfn,varglobal, varscope}: replaced "global" with "extern"
  • sim/*.c: replaced "global" with "extern"
  • option "-Wglobalize" is now deprecated. "-Wexport" should be used instead.
  • tests/sbug.fnptr: added test with cast to function pointer
  • dwarfx: added support for functions without prototype
  • script.y: fixed and greatly simplified type handling (tests/types)
  • script.y: now all of C's integers are recognized, including "unsigned", "short int", and "long signed int" (tests/ints, tests/intserr)

 umlsim-53 (12-APR-2004)
umlsim-53.tar.gz (283 kB)

Changes:

  • dwarfx/elfhelp.h: new header file to help with 64 bit transition
  • dwarfx/elf*.[ch]: changed most "Elf32..." types to "ElfN...", which follows the architecture
  • dwarfx/dwxout.c:{read_size,do_output_data}: added support for 64 bit values
  • dwarfx/dwxloc.c:run_op now increments "pc" by address size intead of 4
  • include/reg-amd64.umlsim: fixed stupid */ glitch
  • include/errno.sh: changed "sort +2" to posixly correct "sort -k 2"
  • sim/ptrace.c:pt_swap_byte: arithmetic defaulting to "int" needed casting to "long"
  • sim/arch-amd64.c:fn_bp_adjusted: added REX prefix to ia32 instructions
  • removed extra newline from calls to clerrorf in stmt_die, __var_data_read, and check_arg
  • "local" and "global" can now also be used with assignments to multi-dimensional arrays (tests/scopearr)
  • introduced keyword "export" as a synonym for "global" (tests/export)
  • now also file handles can be used as array indices (tests/assoc)
  • "print" can now also print associative arrays (tests/printa; updated tests/printchk)
  • "exit" and "die" are now operators, and can therefore be used on the right-hand side of boolean operators (tests/exit, exit/die)
  • began updating the documentation, and converting it to LaTeX

 umlsim-52 (28-MAR-2004)
umlsim-52.tar.gz (263 kB)

Changes:

  • sim/Makefile: removed "dumpbb"
  • sim/Makefile: added various missing "umlsim" dependencies
  • removed "sbug" flag (it would now always be 1)
  • removed dumpbb.c and io.c
  • removed unused umlsim.h and umlsim.c
  • the file argument is now required in all forms of "read" (updated tests/acc16, tests/acc32, tests/acc8, tests/accarray, tests/accstruct, tests/accunion, tests/eof, tests/hexdump, tests/lclwrite, tests/owner, tests/ptrdiff, tests/random, tests/undefined, tests/sizofincmp, tests/fileinerr)
  • moved enum member lookup from script.l to id.c (it only worked in dumpbb; updated tests/enum)
  • removed magic typedef detection, which only worked in dumpbb (updated tests/idquote)
  • moved "op_read" from op.c to file.c, and split it into "op_eof" and "op_read"
  • runtests.sh: removed "dumpbb" wrapper
  • changed all tests using "dumpbb" to use "sbug" and removed dumpbb-only tests
  • removed read(file,"string") (updated tests/filein, tests/fileinerr)
  • sim/README.SBUG incorrectly claimed that the script name (for sbug) is required
  • runtests.common: new option -t to warn if tests leave temporary files behind
  • corrected a.out cleanup in tests/acc8, tests/asgundef, tests/sbug.marker, tests/sbug.retbrkleak, tests/sbug.retbrkref, tests/sbug.returnbrk, tests/sbug.returnerr, tests/varlen, tests/vtimebrk, tests/vtimecall, tests/vtimedefer, tests/vtimestuck, tests/vtimeterm
  • tests/assignop: added tests for "+=" applied to strings and characters
  • added \b escape sequence (tests/stresc)
  • removed for "... .numeric_address" breakpoint syntax ("... .(expression)" is still supported)
  • floating-point numbers may now begin with a dot (tests/float)
  • changed "index beyond string" to "index outside of string" (updated tests/strindex)
  • tests/strindex: added test for negative index
  • newlines and tabs are now allowed in backticks (tests/backticks; updated sim/README.DUMPBB)
  • added modes "<", ">>", "+<", "+>", and "+>>" to "open" (tests/openmode)
  • renamed the "current function" special variable from $. to $= (updated tests/sbug.currfn, sim/README.SBUG)
  • $. now contains the current breakpoint, like $!. The use of $! is deprecated, to allow later re-use for error messages (like in Perl) (updated tests/sbug.brkret, tests/sbug.callasync, tests/sbug.callsync, tests/sbug.calltwice, tests/sbug.context, tests/sbug.idlemsg, tests/sbug.idlenomsg, tests/sbug.inlool, tests/sbug.longjmp, tests/sbug.retbrkleak, tests/sbug.retbrkref, tests/vtimebrk, tests/vtimecall, tests/vtimedefer, tests/vtimeone, tests/vtimetwo, tests/wait_idle_new, include/monitor.umlsim, include/netsim.umlsim, include/run.umlsim, run/ping-peek.umlsim, run/tcp-80d-1MB.umlsim, run/tcp-peek.umlsim, run/tcp-quarter.umlsim, run/tcp-syn-rst.umlsim, sim/README.SBUG, sim/README.UMLSIM)
  • read(file) on a write-only file now yields an error (tests/eof)
  • script.y: moved "sbug_statements" to "non_expression_statement", "sbug_functions" to "postfix_expression", and "sbug_primaries" to "primary_expression"

 umlsim-51 (15-MAR-2004)
umlsim-51.tar.gz (265 kB)

Changes:

  • upgraded to the 2.6.4 kernel, with the uml-2.6.4-1 patch
  • upgraded to UML user mode utilities 20040114
  • changed download site of user mode utilities from uml-pub.ists.dartmouth.edu to www.user-mode-linux.org
  • removed stray test case header from sim/tests/sbug.markers
  • began adding bits of infrastructure for amd64 support
  • POSIX obsoleted "tail -N", using "tail -n N" now (runtests.common)
  • added (not-yet-functional) infrastructure for determining the size of variable-length arrays (tests/varlen)
  • script.y: semicolon after TOK_DELETE wasn't quoted
  • README.DUMPBB: clarified that equivalent case labels are allowed (reported by Erik Bos)
  • README.SBUG: added various incompatibilities with SuSE 9.0 and RedHat 9.0
  • error.c: added "vclwarnf" function
  • sprintf.c: changed "errorf" and "warnf" to use "vcl{error,warn}f" instead of directly calling "fprintf" (tests/sprintferr)
  • sprintf.c: "check_arg" now uses "clerrorf" (updated tests/sprintf)
  • sprintf_generic.c:sprintf_generic: removed redundant test for %s format
  • sprintf: added the %p format (tests/sprintf)
  • data.c: added "value_pointer" function (which just calls "value_int")
  • run/tcplog.pl: filters "snd_una" from "westwood"

 umlsim-50 (26-FEB-2004)
umlsim-50.tar.gz (260 kB)

Changes:

  • upgraded to the 2.6.1 kernel, with Jeff Dike's uml-2.6.1-1 patch
  • kernel/Makefile: removed unused definition of COMBO_PATCH
  • combined parsing of "local" and "global" (tests/glolo)
  • tests/backticks yielded a warning with some bash versions
  • removed unused "stmt_block" declaration from sim/stmt.h
  • dwxtype.c: unexpected items in structs, unions, and subroutines (e.g. type definitions) are now ignored when processing their container
  • sizeof can now be applied to associative arrays and returns the number of non-undefined elements (tests/szoarr; updated tests/sizeof)
  • removed no longer used linux-2.5.66-noise patch
  • dwarfx: added instrumentation for handling arrays whose size is defined through an object
  • $run_uml now redirects stdin to /dev/tty instead of /dev/null
  • removed now useless linux-2.5.69-conhack patch

 umlsim-49 (13-JAN-2004)
umlsim-49.tar.gz (259 kB)

Changes:

  • fixed patch file names in kernel/Makefile
  • "local" and "global" can now also be used with an assignment to an array element, e.g. "global $a[1] = 2;" (tests/scopearr)
  • tests/sbug.strarg could fail with strcmp that doesn't always return -1, 0, or 1
  • SOURCES: added /home/k as a possible uml_utilities location

 umlsim-48 (5-JAN-2004)
umlsim-48.tar.gz (258 kB)

Changes:

  • upgraded to the 2.6.0 kernel, with Paolo Giarrusso's Combo-v7 patch
  • reserved keywords "do" and "goto"
  • umlsim's idle loop now schedules read-copy updates before advancing time
  • hack: umlsim's idle loop calls wakeup_softirqd, because otherwise, softirqs are "lost"
  • sim/*.o and symbolic links in install/ now depend on .config, so changes to UMLSIM_TOP are handled properly
  • configure: renamed "find" to "find_version" and made it return the last version found instead of the first one
  • configure: renamed global variable "items" to "ITEMS"
  • "make config" now always runs "configure", even if an up to date .config file exists
  • README incorrectly told to run "configure", instead of "make config"

 umlsim-47 (2-AUG-2003)
umlsim-47.tar.gz (257 kB)

Changes:

  • sim/README.DUMPBB: documented that type of labels must be compatible with the type of the selection expression
  • "no (struct) member" error message now contains location (updated tests/accstruct, tests/accunion; added tests/sbug.nomember)
  • removed unused skip_n argument from dwx_lookup_type
  • type lookups now return incomplete types if nothing else is available (tests/sbug.nomember)
  • added test that objects whose type is incomplete in current context are not automagically changed to the "complete" type (tests/sbug.nomember)
  • operations trying to use the size of an incomplete type now yield an error (tests/sizofincmp)
  • corrected error message in last test of tests/sbug.typeid
  • added target "tests-valgrind" to sim/Makefile and sim/tests/Makefile

 umlsim-46 (15-JUL-2003)
umlsim-46.tar.gz (256 kB)

Changes:

  • removed old linked-list index handling code
  • cleaned up use of "element" vs. "node" in array.c
  • array.c now uses jrb_*_int for integers, instead of jrb_*_gen
  • added test that -2147483648 is an unsigned quantity (tests/sintodd)
  • signed/unsigned detection for indices was broken (tests/sbug.idxmisc)
  • added tests for pointers from different processes as indices (tests/sbug.idxmisc)
  • runtests.common: path to valgrind is now resolved before tests start (so sbug.run can now be valground, too)

 umlsim-45 (15-JUL-2003)
umlsim-45.tar.gz (256 kB)

Changes:

  • included red-black trees by James S. Plank in sim/rbt/ (with slight changes to tame gcc's anger)
  • "make spotless" in sim/dwarfx/ now also removes libdwarfx.a
  • moved singly linked-list array code from array.c to array_list.c
  • added array indices based on red-black trees in array_rbt.c
  • added tests with two indices of the same type to tests/sbug.array
  • assignments now longer return the result through the lvalue (tests/lvalueasg)

 umlsim-44 (14-JUL-2003)
umlsim-44.tar.gz (239 kB)

Changes:

  • runtests.common: -u now ignores whitespace (diff -w)
  • runtests.common: -u now internally diffs from _out.* to _ref.* but makes it appear as diff'ing from _ref.* to _out.*, to better represent whitespace
  • runtests.common: the -c option had no effect
  • runtests.common: fittingly, the -c option was not mentioned in the usage
  • array indices only used to probe whether an element exists still created that element, holding a reference to the index value, which in turn caused $netsim_loop to keep "external" breakpoints forever (tests/sbug.retbrkleak)
  • added more tests related to break-on-return breakpoint removal (tests/sbug.retbrkref)
  • assignments now hold lvalues until the assignment is complete (tests/lvalueasg)

 umlsim-43 (25-JUN-2003)
umlsim-43.tar.gz (238 kB)

Changes:

  • $loss_fn of $netsim_link now takes a $qid argument (updated tcp-peek.umlsim, tcp-quarter.umlsim, and rttvar.umlsim)
  • added $netsim_set_delay_fn to set a delay function instead of a constant (note: reducing delays can cause packet reordering)
  • in diagnostics, variable names are now printed as '$name' instead of '"name"' (updated tests/dclaftuse, tests/unused, tests/unusedarg, tests/unusedfn, tests/varglobal, tests/varlocal)
  • functions accessing variables from an outer scope would crash umlsim if invoked from a context where this scope does not exist (tests/fnvarref)
  • added warning when invoking a function that uses variables whose scope does not exist, and option -Wmissing-scope to turn it off (tests/fnvarref)
  • added option -c to check only syntax (tests/check)
  • regression tests now check syntax of example scripts (tests/exmplsyn)
  • if the environment variable TOPDIR is not defined, sim/runtests.sh now sets it to `pwd`/.. if not
  • added directory umlsim/util for development tools
  • added experimental option -C to enable caching of type name lookups (saves 20% CPU time in tcp-quarter)
  • added experimental LRU cache for dwx_find_item (saves 35% CPU time in tcp-quarter)

 umlsim-42 (16-JUN-2003)
umlsim-42.tar.gz (234 kB)

Changes:

  • 80d: did not initialize variable "background"
  • 80d: added option -l to loop for more connections
  • 80d: no longer prints "Waiting for connection" if backgrounding
  • configure: added option -i to change installation directory
  • configure: now warns if running with output to a tty
  • directory install/ contains a link tree used for building binary distributions
  • added "bindist", "install", and "uninstall" targets to top-level Makefile
  • sbug/umlsim now uses new variable UMLSIM_LIBDIR (pointing to install/lib/umlsim) instead of UMLSIM_TOPDIR
  • dwarfx/dwxobj.c:read_object did not initialize obj->u.fn.var_args, causing stray type conflicts
  • dwarfx/dwxobj.c:read_object did not initialize obj->u.fn.cfi
  • $netsim_loop now takes a timeout argument and returns either the breakpoint, or undef on timeout (updated tcp-peek.umlsim and tcp-quarter.umlsim accordingly)
  • added debugging flags "trace" and "trace,trace" to print source code location of current statement
  • "die" could free the message before printing it (tests/die)
  • added "jump" statement that acts like "call", except that the function is not expected to return to its caller (tests/sbug.longjmp)
  • added a test that calls return in LIFO order (tests/sbug.longjmp)
  • nettap.umlsim:$deliver_packet now makes a synchronous call to netif_rx, to avoid creating a "null" breakpoint (this is temporary - the breakpoint shouldn't be reported in the first place)
  • "id " now prints more information, including the source code location at which the breakpoint was created (updated tests/sbug.id)
  • netsim.umlsim: added function $create_netdev to create and register a new network interface (based on the "dummy" interface)
  • run.umlsim: added experimental functions $system and $system_async to execute shell commands from a simulation
  • errno.sh: now sorts definitions by numeric error code
  • replaced run/try.umlsim with more advanced prototype run/rttvar.umlsim

 umlsim-41 (11-JUN-2003)
umlsim-41.tar.gz (229 kB)

Changes:

  • include/kernel.umlsim: definitions of items commonly used inside the kernel
  • moved gfp.umlsim and errno.umlsim under new kernel.umlsim (updated tests/umlsim.include)
  • include/clone.sh: generates clone.umlsim with clone flags from linux/sched.h (updated tests/umlsim.include)
  • include/fcntl.sh: generates fcntl.umlsim with values from asm/fcntl.h (updated tests/umlsim.include)
  • + can now add strings to characters and characters to strings (tests/addstrchr; updated tests/callstack, tests/concat, tests/incdec)
  • include/string.umlsim: added $strcpy_from_process and $strcpy_to_process functions (tests/umlsim.strcpy)
  • root/scripts/generic-init: system initialization script for configurations in which all commands are run by the simulator
  • run/try.umlsim: prototype for new simulation-based configuration process

 umlsim-40 (5-JUN-2003)
umlsim-40.tar.gz (226 kB)

Changes:

  • include/gfp.sh: generates gfp.umlsim with definitions from linux/gfp.h (updated tests/umlsim.include)
  • include/errno.sh: generated errno.umlsim with error numbers from asm-generic/errno.h (updated tests/umlsim.include)
  • sim/debug.c:option: help text is now in a single string
  • DBG_TOUCH and DBG_TOUCH_TIMER are now controlled through the variable event_opt and set with -T -T and -T -T -T, instead of -d
  • sim/forward.c:sigchld_handler did not flush the output buffer, causing stray delays and stalls
  • $run_uml now breaks on sys_execve instead of sys_nanosleep, so no explicit synchronization is required in "init" scripts just for starting
  • root/scripts: removed "sleep 1" (for synchronization)
  • added explicit synchronization for the "server" side to run/ping-peek.umlsim, run/tcp-80d-1MB.umlsim, run/tcp-peek.umlsim, run/tcp-quarter.umlsim, and run/tcp-syn-rst.umlsim
  • passing string arguments to functions changed the stack pointer of the caller (tests/sbug.strargesp)
  • arch-ia32.c now remembers the return address directly, without calculating the size of all arguments
  • even when using real time, sim/uml.c/launch_uml tried to enable idle messages, got confused, and did a double free
  • added missing include/stddef.umlsim

 umlsim-39 (4-JUN-2003)
umlsim-39.tar.gz (224 kB)

Changes:

  • pushed pt_read and pt_write functionality into the forwarder, reducing system time of tcp-quarter by almost another 30%, and overall run time by more than 10%
  • idle messages are now used by default for UML processes. -M turns them off, while -M -M also enables them for non-UML processes.
  • include/netsim.umlsim: removed incorrect comment stating that $high and $low were ignored
  • dwarfx mis-read functions pointers types (tests/sbug.fnpvaasg)
  • dwarfx now also includes variable argument lists in type compatibility checks (tests/sbug.fnpvaasg)
  • now all errors reported with arguments include the argument number (tests/sbug.ntharg)
  • function calls can now also use variable argument lists (tests/sbug.vararg)

 umlsim-38 (1-JUN-2003)
umlsim-38.tar.gz (223 kB)

Changes:

  • include/stddef.umlsim: added definition of NULL (tests/sbug.null; updated tests/umlsim.include)
  • changed idle messaging to interrupt using a special message instead of a signal, which solved the unexplained UML crashes (-M accelerates tcp-quarter by about 30%)
  • sim/arch-ia32.c, include/reg-ia32.umlsim: added EFLAGS to registers (tests/sbug.regmacia32)
  • ia32_setup_call no longer pushes actual data when allocating space for the return breakpoint
  • reads and writes on pipes between simulator and forwarders are now buffered, drastically reducing the number of system calls and ptrace relay interventions (tcp-quarter gains roughly another 30%)
  • PTRACE_SETREGS and PTRACE_POKEDATA are now written asynchronously, further reducing system calls (tcp-quarter gains 15%)

 umlsim-37 (31-MAY-2003)
umlsim-37.tar.gz (221 kB)

Changes:

  • umlsim now runs from its own low-priority kernel thread instead of the idle thread, which simplifies things, and removes dependencies on scheduler internals (suggested by Ingo Molnar)
  • sim/umlsim.c: removed obsolete "umlsim" variable
  • a function argument name coinciding with a global variable referenced the global variable (tests/argscope)
  • ptrace.c:sigchld_handler crashed if using -d run,run without setting an output file
  • kernel: umlsim_idle can now exchange messages directly with the simulator, avoiding the redirection through breakpoints. This mode is enabled with vtime=umlsim,in_fd,out_fd
  • lib/umlsim: added idle message mode to umlsim_idle (automatically enabled if UMLSIM_IN_FD and UMLSIM_OUT_FD are set)
  • sbug, umlsim: added experimental (enabled with -M) mode to exchange idle messages directly with processes (tests/sbug.idlemsg)
  • -M -M changes "run" to pass file descriptors for direct idle messages in environment variables UMLSIM_IN_FD and UMLSIM_OUT_FD (tests/sbug.idlemsg)
  • tests/sbug.idlenomsg: "old-style" version generated from tests/sbug.idlemsg
  • uml.c, process.c: CHECK macro now uses clperror instead of clumsy perror/exit
  • include/reg-ia32.umlsim: changed definitions from "(register #)" to "register #" to permit process qualifier (tests/sbug.regmacia32)
  • in case of a type mismatch in a function call, sbug now also prints which argument caused the error (updated tests/sbug.callargerr)
  • a type mismatch in a function return value was reported as "argument type" (updated tests/sbug.returnerr)
  • integers and the undefined value can now also be passed to function arguments which are pointers (tests/sbug.argptrcvt, updated tests/sbug.callargerr)
  • dwarfx didn't strip the "const" off "const void *", causing type conflicts (tests/sbug.constvoid)
  • renamed tests/umlsim.string to tests/umlsim.strcmp
  • include/string.umlsim: added $strlen function (tests/umlsim.strlen)

 umlsim-36 (28-MAY-2003)
umlsim-36.tar.gz (216 kB)

Changes:

  • new option -d malloc to print memory usage statistics (if compiled with -DFIND_MEMORY_LEAKS)
  • undef($array[index]) now also deallocates the index (tests/arraydel)
  • queue.umlsim now uses "undef" to destroy indices, e.g. reducing the peak memory consumption of tcp-quarter.umlsim by 35%
  • added "declared after use" warnings to tests/varglobal and tests/varlocal
  • variable locations are no longer stored in "addr.loc", but instead a pointer to the object is stored in "addr.obj", which provides more information for lower layers and generally makes things cleaner
  • moved tests for "auto" variables from tests/sbug.lstatic to tests/sbug.lauto
  • sbug no longer allows attempts to access a local auto variable from a context with different frame base (tests/sbug.lstatic)

 umlsim-35 (27-MAY-2003)
umlsim-35.tar.gz (214 kB)

Changes:

  • upgraded to UML 2.5.69-1
  • "exit" from a function leaked function reference (cleaned up op_function_call; tests/fnexit)
  • clarified that "without" only works for local values (tests/sbug.without)
  • moved usage of warning options to error.c instead of duplicating it in sbug.c and dumpbb.c
  • sbug, dumpbb: added warning when declaring a variable after use, and option -Wnodeclare-after-use to turn it off (tests/dclaftuse)
  • sbug, dumpbb: added warning when declaring a variable global after declaring it local, and option -Wnoglobalize to turn it off (tests/globalize)
  • umlsim version 34 accidently removed a "continue($b)" from run/tcp-quarter.umlsim
  • dwarfx did not recognize variable argument list declarations and aborted when encountering them in type definitions (tests/sbug.vararg)
  • kernel/rlinux now prints its usage if given an unrecognized option
  • debugging output can now be redirected to a file with -d file=
  • sim/util.c: changed 0x%p to %p in memory debugging functions
  • kernel/linux-2.5.69-conhack.patch: work-around for mysterious console disappearance
  • kernel/Makefile: "clean" and "spotless" targets still referenced old "vtime" directory and "ld.tmp"

 umlsim-34 (19-MAY-2003)
umlsim-34.tar.gz (212 kB)

Changes:

  • sim/README.SBUG: replaced wait_idle() with wait($@)
  • {run,include}/*.umlsim: changed wait_idle() to wait($@)
  • trying to access a local auto variable from a context without frame base crashed dwxloc.c:run_op (tests/sbug.lstatic)
  • run/tcplog.pl: added option "-c cmd" to add gnuplot command "cmd"
  • run/tcplog.pl: added option "-r param" to remove parameter "param"
  • run/tcplog.pl: added option "-y2 min:max" to set y2 range
  • run/tcplog.pl: added option "-m" to choose monochrome output
  • run/tcplog.pl: added option "-s prm=style" to set line style by parameter
  • run/tcp-quarter.umlsim: increased burst tolerance to 5 packets, to illustrate the bug more clearly
  • sbug, dumpbb: added option -Wunused to report unused variables (updated include/monitor.umlsim; tests/unused)
  • sbug, dumpbb: added option -Wunused-argument to report unused function arguments (updated include/inet.umlsim; tests/unusedarg)
  • sbug, dumpbb: added option -Wunused-function to report unused functions (tests/unusedfn)
  • added dummy use of all function variables to include/inet.umlsim, include/netsim.umlsim, include/nettap.umlsim, include/queue.umlsim
  • sim/dumpbb.c: removed ancient and obsolete debugging data retrieval code from the end of main
  • added test for include/queue.umlsim:$wait_for_queue with multiple arrivals within the same nanosecond (tests/queuewfq)

 umlsim-33 (12-MAY-2003)
umlsim-33.tar.gz (210 kB)

Changes:

  • process.c:load_symbols could cache uninitialized objects pointer
  • dwarfx/elf.c:read_elf_types: warnings about missing sections are now printed with clwarnf, so they include the script location (updated tests/nowarn, sbug/sbug.argvundef, tests/varscope, tests/wait_idle_err)
  • umlsim now augments non-defining global declarations of functions and variables with data from ELF symbols (tests/sbug.elfsym)
  • umlsim can now put breakpoints at functions defined only in ELF symbols (tests/sbug.elfsym)
  • umlsim can now put breakpoints at absolute numeric addresses (tests/sbug.breakabs)
  • removed no longer needed special definition of "jiffies" from include/nettap.umlsim

 umlsim-32 (10-MAY-2003)
umlsim-32.tar.gz (208 kB)

Changes:

  • printf no longer appends a newline (tests/newline, updated many tests)
  • print no longer puts a newline between arguments (updated tests/varscope and tests/fileout)
  • print without argument is now allowed (tests/newline)
  • argument separator of print can be controlled with Perl-like variable $, (tests/newline)
  • dwarfx/dwxout.c:dwx_output_data no longer appends a newline to items it prints
  • updated and simplified {run,include}/*.umlsim according to the above changes
  • run/ping-peek.umlsim still used function.entry markers removed in version 27, and daemon_write instead of uml_net_start_xmit

 umlsim-31 (10-MAY-2003)
umlsim-31.tar.gz (207 kB)

Changes:

  • the simulator can now directly pass strings to functions in the process (tests/sbug.strarg)
  • an asynchronous call was not properly removed if followed immediately by another call (tests/sbug.calltwice)
  • added test that synchronous calls indeed don't change $! (tests/sbug.callsync)
  • synchronous calls changed $?, but the documentation claims otherwise (tests/sbug.callsync)
  • changed evaluation sequence inside the index operator such that nonsense like $a[$a = 0] = 1; does not upset umlsim (tests/arraypar, updated tests/undefined)
  • added test that dropping the breakpoint of an asynchronous call does not invalidate it (tests/sbug.drptmpbrk)
  • breakpoints of asynchronous calls can't be deleted (tests/sbug.deltmpbrk)
  • fixed semantics for dropping and deleting break-on-return breakpoints (tests/sbug.drptmpbrk, tests/sbug.deltmpbrk)
  • added tests to show that dropping the breakpoint of an asynchronous call has no effect (tests/sbug.drptmpbrk)
  • new option -Wundeclared to report use of variables not previously declared with "global" or "local" (tests/undeclared)
  • include/inet.umlsim: $isn didn't work because it wasn't declared "global"
  • include/*.umlsim: added explicit declarations for all variables (tests/undeclared)
  • changed lex/yacc warning message format from "warning: : ..." to ": warning: ..." (updated tests/eof)
  • data.c:get now checks that the reference count wasn't zero
  • character literals can now also contain \", \\, \n, \r, and \t (tests/char)
  • string literals can now contain backslash escapes, just like character literals (tests/stresc)

 umlsim-30 (9-MAY-2003)
umlsim-30.tar.gz (203 kB)

Changes:

  • umlsim_kern.c: kernel_is_idle now panics when detecting unexpected activity
  • assigning the undefined value through a local pointer or to a remote variable crashed umlsim (tests/asgundef)
  • integers and the undefined value can now be assigned to pointers (tests/asgptrcvt)
  • sim/README.DUMPBB: explains that lvalues in "global"/"local" can't be indexed
  • sim/README.SBUG: added warnings that functions called in idle system must not sleep
  • forced return is now refused when process is in umlsim_idle (tests/vtimeretidl)
  • if in umlsim_idle, setting up an asynchronous function call without continuing the process, caused the process to be continued regardless (tests/vtimefntout)
  • experimental "isolated" mode is now implied by -d touch
  • removed some cases of unnecessary tagging with -d touch
  • temporarily added several debugging printks (#ifdef DBG) to umlsim_kern.c

 umlsim-29 (6-MAY-2003)
umlsim-29.tar.gz (202 kB)

Changes:

  • processes no longer see absolute virtual time, but use relative virtual time, starting at process creation (tests/vtimezero)
  • vtime.c:do_vtime_wait: turned timeout while processes are starting or stopped into warning (updated tests/vtimestuck)
  • run/tcp-peek.umlsim, run/tcp-quarter.umlsim: changed launch order to avoid timeout while first process is stopped
  • include/run.umlsim:$run_uml now writes stdout to .out if $verbose is set to 2
  • timer.c: next_timer_jiffies could return timer past the earliest timer
  • timer.c: next_timer_head traversed vectors starting with the first element, not the current insertion point
  • umlsim_kern.c: kernel_is_idle calls be_idle only after a timer update has been processed
  • process.c:redirect created files with random mode (usually zero)
  • sim/vtime.c: added experimental "isolated" mode (#define ISOLATED) that reduces the number of iterations through umlsim_idle

 umlsim-28 (29-APR-2003)
umlsim-28.tar.gz (200 kB)

Changes:

  • moved function definitions from netsim.umlsim to nettap.umlsim
  • netsim.umlsim: properly integrated log file and loss count variables
  • netsim.umlsim, tcplog.pl: now also the backlog in the send buffer is recorded
  • tcplog.pl: added options -x and -y to set x and y range, respectively
  • negative integers were treated as unsigned numbers when converting to floating-point numbers (tests/floatadd)
  • auto-decrement operator treated increment as unsigned number (tests/floatadd)
  • run/tcp-quarter.umlsim: example that illustrates a bug in TCP, and tests a proposed fix

 umlsim-27 (29-APR-2003)
umlsim-27.tar.gz (199 kB)

Changes:

  • arch/um/kernel/umlsim_inline.c contains common inline functions
  • include/skbuff.umlsim now uses umlsim_inline.c instead of providing translated versions
  • tests/sbug.brkretinl: test that umlsim notices attempts to break at return from inlined function
  • umlsim crashed in lookup_marker when looking up unknown identifier qualified by unit (tests/sbug.mrkmiss)
  • dwarfx/dwxobj.c:read_object now ignores non-defining declarations of functions and variables (such as "jiffies")
  • include/netsim.umlsim: moved loss events from $__netsim_outbound_handler to $__netsim_buffer_handler, so that lost packets still cost transmission time
  • oops, run/tcp-peek.umlsim had loss handler at backward (ACK) flow instead of forward flow
  • run/tcp-peek.umlsim now logs the time with nanosecond resolution (instead of variable resolution, typically in the order of 100 us to 1 ms)
  • run/tcplog.pl truncated time to seconds
  • include/netsim.umlsim now implements the entire network device, including flow control, instead of twisting arch/um/drivers/daemon_kern.c:daemon_write
  • removed no longer used markers from net/core/dev.c:netif_receive_skb and arch/um/drivers/daemon_kern.c:daemon_write
  • call arguments were evaluated in the wrong order and in the wrong context (tests/sbug.calleval)

 umlsim-26 (27-APR-2003)
umlsim-26.tar.gz (198 kB)

Changes:

  • include/netsim.umlsim: added support for packet losses
  • run/tcp-peek.umlsim now loses 1% of all packets
  • added support for out-of-line instances of inline subroutines (tests/sbug.inlool)
  • dwarfx/dwxobj.c: only abstract instances of inlined functions are stored in object tree (other instances can be accessed through u.fn.concrete_instances)
  • added experimental variable $. containing name of current function (tests/sbug.currfn)
  • sim/README.SBUG: in description of "break", mentioned that "delete" can be used to remove breakpoints
  • sim/README.SBUG: documented that longjmp breaks calls and return breakpoints
  • added construct break([process.]return) to place breakpoints at the return of the current function (tests/sbug.brkret, tests/sbug.brkreterr)
  • run/tcp-peek.umlsim now logs all TCP parameters after processing each incoming segment
  • run/tcplog.pl: script to plot key TCP parameters

 umlsim-25 (23-APR-2003)
umlsim-25.tar.gz (194 kB)

Changes:

  • sim/README.SBUG: clarified that "wait_idle" may report other processes than the one specified
  • timeouts could be missed when there were concurrent breakpoints (updated tests/vtimecall)
  • formal parameters now must be variables and can't be array elements or such (tests/function)
  • experimental: added Pascal-style call-by-reference for local functions (tests/byreflcl, tests/byrefrmt, and tests/byreferr)
  • include/queue.umlsim: queues must now be explicitly created by calling $new_queue (updated tests/umlsim.queue, run/ping-peek.umlsim, and run/tcp-peek.umlsim)
  • "print" can now print processes (PID) and breakpoints (current or first address) (tests/prtprcbrk)
  • include/netsim.umlsim: packaged packet interception, transport, and injection (updated tests/tcp-peek.umlsim to use netsim.umlsim)

 umlsim-24 (17-APR-2003)
umlsim-24.tar.gz (191 kB)

Changes:

  • include/monitor.umlsim: macros for monitoring breakpoints
  • removed overly pessimistic delay loop from tests/vtimedefer
  • fixed memory leak when exiting from within a call, with pending breakpoint (tests/vtimedefer)
  • moved network setup part from scripts in root/scripts/ to netup-common, and enlarged default send and receive buffers
  • lib/markers.body contained left-over symbolic asm argument name "[fn]"
  • run/tcp-peek.umlsim: removed confusing $t0 time base
  • run/tcp-peek.umlsim: added real queuing delay and device start/stop
  • sim/README.SBUG: documented that "wait" may set time slightly after the requested timeout
  • rearranged several debugging messages in classes "run" and "time"
  • sim/vtime.c:do_vtime_wait now yields an error if trying to time out while a process is starting, or is stopped at an already reported breakpoint (tests/vtimestuck)
  • Common.make: removed option -Wnounused-parameter for gcc 3.2 compatibility
  • gcc 3.2 requires -finline to inline (updated tests/sbug.inline)
  • sbug and umlsim are no longer symbolic links to dumpbb, to work around "feature" in gdb 5.2.1, and sbug and umlsim are now in fact identical (updated htons, sbug.htons)
  • dwarfx: work-around for nameless compilation units introduced in RH 8.0
  • lib/Makefile appended content to lib/markers_4.h instead of creating a new file
  • "wait_idle" may now return on breakpoints, signals, and termination, just like "wait" (tests/wait_idle_new; updated tests/vtimeout, tests/wait_idle, and tests/wait_idle_err)
  • kernel/Makefile: added target "patches"
  • added hack to avoid idle task from getting re-prioritized
  • sim/README.SBUG: described "wait" with timeout and "wait_idle"

 umlsim-23 (8-APR-2003)
umlsim-23.tar.gz (188 kB)

Changes:

  • open files are now flushed before exiting, to counter problems hit at that point (like unkillable child processes; updated tests/fileouterr)
  • integers are now signed by default, like in C (tests/signed)
  • unsignedness can be forced by appending "u" or "U" (tests/signed)
  • comparison with signed numbers now works (tests/sintcmp)
  • signedness is taken into account for arithmetic operators (tests/sintarith)
  • signedness is taken into account for bit operators (tests/sintbit)
  • tests/vtimeout: leaving processes running after timeout caused race condition in test "first timeout in umlsim"
  • added proper SMP locking to linux/kernel/timer.c:next_timer_jiffies
  • made umlsim_kern.c:other_runnable return something useful (on non-SMP)
  • markers were free'd more than once if shared by multiple processes
  • with virtual time, processes reaching a breakpoint could get overlooked if using wait() (tests/vtimebrk)
  • likewise for termination (tests/vtimeterm)
  • after wait(), all processes are now stopped (tests/vtimecall; updated tests/vtimeone, tests/vtimeout, tests/vtimetwo)
  • removed call to wait_idle from include/nettap.umlsim
  • "continue" now leaves processes stopped if they have a pending breakpoint (tests/vtimedefer)
  • README: updated text describing which symbols umlsim can use
  • README.SBUG: updated description of synchronization rules
  • sim/debug.c: added new debugging class "perf" for performance counters
  • sim/debug.c: temporarily added new debugging class "touch" to experiment with "lazy" process inactivity updates if processes are isolated from each other
  • dwarf/dwxtype.c now ignores "volatile" and "const" to work around spurious volatile modifier
  • sbug, umlsim: added undocumented option -K to "exit" by killing the process group

 umlsim-22 (6-APR-2003)
umlsim-22.tar.gz (183 kB)

Changes:

  • slight cleanup of kernel code
  • increased number of arguments in markers_kernel.h from 4 to 20
  • added lib/markers_4.h for testing (tests/marker.clobbers)
  • added file I/O: functions "open" and "read", and statements "close", "print", and "printf" take a file argument (tests/filein, tests/fileinerr, tests/fileout, tests/fileouterr)
  • sim/data.c:value_float crashed when passing the undefined value (tests/printf)
  • oops, relational operators didn't know about floats (tests/floatcmp)
  • sim/marker.c:marker_read did not initialize (*label)->obj_cache
  • include/inet.umlsim: added function "$tcp_ack_seq" to extract ack'ed sequence number
  • added cache for dwarfx/dwxobj.c:dwx_find_global_item, reducing CPU cost of tcp-peek.umlsim by a factor of six (for an overall speed increase of a factor of three)
  • added cache for dwarfx/dwxobj.c:dwx_find_fn_by_addr, for a further CPU cost reduction of 50%
  • added architecture-specific bypass mechanism for accessing arguments (tests/sbug.chararg)
  • function calls now also work with character arguments (tests/sbug.chararg)
  • added a C-like "switch" construct (tests/switch, tests/switcherr)
  • error messages for break/continue outside of suitable context now list all possible constructs, not only "while" (updated tests/break, tests/continue, tests/fnjump, tests/stmtexpr)
  • duplicate labels (while, for, switch) are now refused (tests/duplabel)
  • "die" now also prints location if a message is specified (updated tests/die)
  • errors now cause a call stack to be printed (tests/callstack; updated tests/function, tests/stmtexpr, tests/varscope)
  • errors in formal parameter lists are now reported at the location of the function definition (tests/function)
  • option -Wp can now also be used with multiple comma-separated arguments (tests/cpp)
  • added Perl-like rand() function (tests/random)
  • dumpbb, sbug, umlsim: added command-line option -r to initialize random number generator (tests/random)
  • sim/process.c:float2timespec now always rounds up to the next nanoseconds, to ensure that time never goes backward due to rounding errors (updated tests/vtimeout)
  • added new experimental script run/tcp-peek.umlsim (doesn't work yet)

 umlsim-21 (4-APR-2003)
umlsim-21.tar.gz (173 kB)

Changes:

  • kernel/vtime/timer.c:tv_add did not normalize tv_usec = 1000000
  • increased time resolution at the kernel side from 1 usec to 1 nsec (like in the umlsim control program)
  • turned the kernel-side changes into a kernel patch, and removed kernel/vtime
  • eliminated second linking stage from umlsim kernel build process
  • reliable markers weren't, because gcc doesn't care much about the memory clobber, so they now use an explicit list of variables to make available (tests/marker.multiply, tests/marker.count, tests/marker.clobbers)
  • removed sim/TODO.MAPCAR, because it's now implemented in lib/markers.h
  • renamed lib/marker.h to lib/markers.h (updated tests/sbug.marker, tests/sbug.regia32, tests/sbug.regmacia32)
  • umlsim_idle now uses a reliable marker

 umlsim-20 (3-APR-2003)
umlsim-20.tar.gz (170 kB)

Changes:

  • removed various debugging statements from scripts/ping-peek.umlsim and include/nettap.umlsim
  • kernel/Makefile now makes backups of files patched for umlsim
  • sim/TODO.MAPCAR: describes possible extension of marker syntax
  • include/marker.h: added memory clobber
  • dumpbb, sbug, umlsim: added option -w to suppress all warnings (tests/nowarn)
  • dumpbb, sbug, umlsim: added option -Wp,arg to pass arguments to cpp (tests/cpp)
  • umlsim's usage synopsis didn't include -n
  • configure now works, and uses SOURCES to look for source code packages
  • kernel/mkpatch: script to make umlsim-related kernel patches
  • kernel/linux-2.5.66-markers.patch: patch to add markers, and to use them in net/core/dev.c:netif_receive_skb and arch/um/drivers/daemon_kern.c:daemon_write
  • removed kernel/vtime/umlsim_kernel.c and moved code to khelp.c instead (also eliminated special-casing of main.c in Makefile)
  • lookups for markers containing directories in the file name would fail (tests/sbug.marker)
  • include/nettap.umlsim: removed ghastly argument access hacks
  • "make tests" now also works from top-level Makefile
  • README now mentions ping-peek.umlsim

 umlsim-19 (2-APR-2003)
umlsim-19.tar.gz (167 kB)

Changes:

  • upgraded to UML 2.5.66-1
  • README.SBUG: described on how to synchronize access to a process with process execution
  • continue no longer changes $$ if continuing a different process than $$ (tests/sbug.context2)
  • $$ can now be used as a local variable
  • tests/vtimetwo: added test for process termination with concurrent background process
  • added experimental "wait_idle" construct that makes sure the current process is idle (tests/wait_idle, tests/wait_idle_err);
  • sim/TODO.HIDDEN_SYNC: some thoughts on hiding wait_idle()
  • sim/vtime.c:do_vtime_wait now runs processes after advancing the time (tests/vtimeout; updated tests/vtimetwo)
  • removed debugging sleeps from root/scripts/netupA-ping and root/scripts/netupB-wait
  • changed scripts/ping-peek.umlsim to use queues instead of attempting direct calls for transmission between kernels
  • sim/process.c:load_symbols now makes sure the list of objects is NULL-terminated

 umlsim-18 (1-APR-2003)
umlsim-18.tar.gz (165 kB)

Changes:

  • include/queue.umlsim: added primitives for queues with deadlines (tests/umlsim.queue; updated tests/umlsim.include)
  • include/nettap.umlsim: contains primitives for intercepting and inserting network packets (from ping-peek.umlsim; updated tests/umlsim.include)
  • functions did not restore current location (for diagnostics) on return (tests/function)
  • relational operators now also work on strings (tests/strcmp)
  • processes, breakpoints, and pointers can now be used as array indices (tests/sbug.array)
  • when using virtual time, a process not supporting virtual time would defer timeouts indefinitely (tests/vtimemix)
  • run.umlsim: run_uml and run_hub now wait explicitly for process
  • run.umlsim: run_uml and run_hub now remove breakpoints with "delete"
  • finally realized that PTRACE_KILL doesn't kill a running process, no matter what the man page says, so umlsim now always uses kill(2)
  • $$ was not created as global variable (tests/varscope)
  • functions evaluated return value too far, causing unexpected conversions (tests/function)
  • sim/vtime.c:vtime_continue temporarily removed check, so that functions can be called when idle
  • kernel/vtime/timer.c:do_tick changed __TRACE to TRACE
  • index operator can now also be used on strings (tests/strindex)
  • include/string.umlsim: basic string operations (tests/umlsim.string; updated tests/umlsim.include)
  • sim/access.c:do_op_address error message when trying to obtain address of local object with process context to make it clear that this is a limitation of umlsim, not the user's fault (updated tests/sbug.ptrerr)
  • synchronous calls changed the value of $$ (tests/sbug.callsync)
  • added inter-process callback scenario to tests/sbug.callasync

 umlsim-17 (28-MAR-2003)
umlsim-17.tar.gz (160 kB)

Changes:

  • dwarfx/dwxobj.c:dwx_find_unit would never find units with a directory prefix (tests/sbug.findunit)
  • on exit, umlsim didn't clean up op_uml functions (tests/umlsim.uml)
  • added tests that umlsim include files complain if included out of context (tests/umlsim.include)
  • "make whatsmissing" no longer reports generated files and lib/*
  • dwarfx/dwxout.c:do_output_data chopped off the last character in a string (tests/sbug.printstr)
  • dwarfx/dwxout.c:do_output_data did not warn about lack of terminating \0 (tests/sbug.printstr)
  • dwarfx/dwxcfi.c:dwx_cfi_lookup caches current position for a 30% reduction of overall DWARF load time
  • changed debug.c:debugf to inline function for a further 15% reduction of overall DWARF load time
  • changed dwarfx/dwarf.c:read_32 to inline function for a further 15% reduction of overall DWARF load time
  • changed local/global type lookup mechanism to work like object lookup mechanism (tests/...)
  • removed stray "extern debug" from sbug.h
  • sim/debug.c: added new debugging class "id" for debugging operator "id"
  • sim/debugid.c: debugging operator "id" that identifies its value (tests/id, tests/sbug.id)
  • register values now have a process context, so they can be used as pointers if cast immediately, before performing any arithmetic on them (tests/sbug.regia32)
  • array indices could be modified through pointer aliasing (tests/arrayalias)

 umlsim-16 (27-MAR-2003)
umlsim-16.tar.gz (155 kB)

Changes:

  • sim/Makefile of umlsim release 15 accidently enabled memory allocation debugging
  • "make dist": added check for enabled compilation options
  • added gcc-like statement expression ({ stmt; ...; expression [;] }) (tests/stmtexpr)
  • trying to "break" or "continue" out of a function now yields an error (tests/fnjump)
  • casting a pointer to an array yields array at pointer location, not array containing pointer value (tests/sbug.cast)
  • relaxed type checks when casting pointer to/from array
  • lvalues can now be cast too (tests/sbug.cast)
  • trying to print remote values or to pass them as function arguments no longer yields an assertion failure (tests/sbug.printrmt)
  • fixed casting of pointers and added tests for various implementations of a "htons" function (tests/htons, tests/sbug.htons)
  • moved actual definitions from include/default.umlsim into include/inet.umlsim and include/run.umlsim
  • moved general helper macros from run/ping-peek.umlsim to include/byteorder.umlsim and include/skbuff.umlsim
  • cpp was never given the input file name, so in error messages, the script was always identified as "", even if it came from a file with known name (tests/filename)
  • sbug: added construct [process.]register(reg_num) to read architecture-specific registers (tests/sbug.regia32, tests/sbug.regerr)
  • include/register.umlsim include/reg-ia32.umlsim: include file with macros for (ia32) registers (tests/sbug.regmacia32)
  • arch-ia32.c:ia32_set_reg and ia32_get_reg now report an error instead of aborting when access to unknown registers is requested (tests/sbug.regia32)
  • dwarfx: DWARF tags are now only printed for DBG_DPARSE_DETAIL, not DBG_DPARSE
  • dwarfx/dwxobj.c: now moves directories in compilation unit name to comp_dir
  • sim/README.SBUG: added warning that using ccache may yield bogus directory names in debugging information
  • sim/README.SBUG: documented that location information may not include stack location for function arguments, apparently making it infeasible to correctly process the prologue

 umlsim-15 (25-MAR-2003)
umlsim-15.tar.gz (149 kB)

Changes:

  • casting something to void crashed sbug (tests/cast)
  • casting a value modified the original value (tests/cast)
  • can cast local pointers to array (tests/cast)
  • assignment now always copies the rvalue, avoiding aliasing problems (tests/ptralias)
  • can cast remote pointers to array (tests/sbug.cast)
  • assignment of array copies array (test/sbug.cast; updated tests/sbug.ctxcptasg, tests/sbug.alias, tests/sbug.ptrari)
  • local assignments did not check for type compatibility
  • different-size integers are now automatically adjusted in assignments (tests/intassign)

 umlsim-14 (24-MAR-2003)
umlsim-14.tar.gz (148 kB)

Changes:

  • renamed $time to $@
  • added construct to force a function in a process to return (tests/SBUG.return, tests/sbug.returnerr, tests/sbug.returnbrk)
  • runtests.common: now ignores first lines that begin with "# MACHINE" (for warning in machine-generated files)
  • sim/debug.c: moved DWARF parsing messages to new debugging class "dparse"
  • dwarfx/dwxout.c:dwx_type_equal now also compares function arguments
  • sim/access.c: function pointers (&fn) can now be generated in script (tests/sbug.fnptr, tests/sbug.fnptrerr, tests/sbug.fnptrerr2)
  • dwarfx/dwxobj.c:dwx_find_item did not search other compilation units; added new function dwx_find_global_item for this, and trimmed dwx_find_item (tests/sbug.objidctx; updated tests/sbug.objidglo, tests/sbug.objidloc)

 umlsim-13 (21-MAR-2003)
umlsim-13.tar.gz (142 kB)

Changes:

  • include/default.umlsim: now uses undefined arguments for options
  • only the first statement was executed in bare blocks (tests/block)
  • sim/script.y: added placeholder for line number and address locations
  • sim/util.h: added typesafe allocation function alloc_tn
  • sim/debug.c: added new debugging class "var" for variable allocation and use
  • sbug: added variable scoping and "global"/"local" constructs to change default scope (tests/varscope, tests/varlocal, tests/varglobal)
  • include/default.umlsim: added functions $print_ip_hdr and $print_tcp_hdr to print from raw byte arrays
  • run/ping-peek.umlsim: new test setup to test RTT (in progress)

 umlsim-12 (21-MAR-2003)
umlsim-12.tar.gz (138 kB)

Changes:

  • dwarfx: function type now also includes argument types
  • sbug: added delete() statement to de-activate breakpoints (tests/sbug.delete)
  • sbug: added synchronous and asynchronous calls to debugged process (tests/sbug.callsync, tests/sbug.callasync, tests/sbug.callargerr, tests/sbug.callctxerr, tests/sbug.callid, tests/sbug.callfree)
  • sim/README.SBUG: removed warning that $? and $! may be pulled in the future
  • dwarfx: now only prints a warning if object file does not contain debugging information
  • sbug: "run" and "uml" now skip undefined arguments (tests/sbug.argvundef)
  • sim/script.y: added placeholder for forced function return

 umlsim-11 (19-MAR-2003)
umlsim-11.tar.gz (132 kB)

Changes:

  • upgraded to uml_utilities_20030312
  • root/scripts/netupA-wget-null: accidently included debugging version in umlsim release 10
  • README: fixed pointer to uml_utilities
  • added tentative patch kernel/linux-2.5.63-sigkill.patch to work around some process termination problems in UML
  • added reliable code markers (lib/marker.h, etc.), which are used like labels in the umlsim language (tests/sbug.marker)
  • removed sim/README.LABEL
  • kernel/README: documented virtual time extension
  • kernel/vtime: added virtual time in standalone and umlsim mode
  • kernel/rlinux: wrapper to run the UML kernel on the hosts's root file system and with virtual time
  • run/test-sleep-panic.umlsim kernel/scripts/test-sleep-panic: test for virtual time

 umlsim-10 (7-MAR-2003)
umlsim-10.tar.gz (125 kB)

Changes:

  • sim/README.SBUG: clarified experimental nature of "access"
  • sim/Makefile: LDLIBS set -pg, which is rather an item for LDLIBS_DEBUG
  • sim/Makefile: made (commented-out) -pg versions of CFLAGS_DEBUG and LDLIBS_DEBUG permanent members
  • dwarfx/dwarf.c: changed attribute cache to perfect hash, roughly accelerating debugging data loading by 25%
  • sim/debug.c: moved individual cache statistics to generic function
  • removed ancient and obsolete sim/dwarfx/tstdwx.c
  • Common.make: added -Werror to CFLAGS_WARN
  • various Makefiles did not report errors back from subdirectories
  • dwarfx: converted debugging output to use debugf
  • sim/debug.c: added new debugging class "arch" for information from architecture-specific information
  • added support for inline functions (that is, as much as gcc lets us; tests/sbug.inline)
  • cleaned up READMEs, removing old bugs/restrictions
  • sim/README.LABELS describes an approach for putting labels into code that avoids many of gcc's limitations
  • sim/ptrace.c sim/forward.c: fixed various bugs in errno handling for PTRACE_PEEKDATA
  • sim/forward.c: apparently solved UML process termination problem
  • lib/default.umlsim: now removes sys_nanosleep breakpoint when UML is up and running

 umlsim-9 (3-MAR-2003)
umlsim-9.tar.gz (122 kB)

Changes:

  • sbug: added "access" operator to look up variables and functions in current process at run time (tests/sbug.access)
  • added floating-point numbers and operators (tests/floatconv, tests/floatop)
  • sbug/process.c:stmt_continue_process: did not catch attempts to "continue" an already running process (tests/sbug.run)
  • sbug/process.h: removed weird #includes and struct declarations left over from older header file structure
  • the "+" operator concatenates strings (tests/concat)
  • umlsim: added experimental virtual time handling and undocumented option -T to enable virtual time (tests/vtimeone, tests/vtimeout, tests/vtimetravel, tests/vtimetwo)
  • umlsim: added variable "$time" (tests/time)
  • lib/umlsim.c: accidently allowed compiler to optimize away "time_changed"
  • sim/debug.c: added new debugging class "time"
  • sim/process.c: IO-redirection now uses nonblocking open, so that FIFOs can be used without complications
  • Makefile: "whatsmissing" used old umlsim/ directory name instead of sim/

 umlsim-8 (28-FEB-2003)
umlsim-8.tar.gz (115 kB)

Changes:

  • upgraded to UML 2.5.63-1
  • UML processes under umlsim now use the "real" file system, through hostfs (updated run/* accordingly)
  • removed root/setup.root_fs
  • removed kernel/linux-2.5.62-rootlock.patch (the fix was accepted, and added to UML 2.5.63-1)
  • moved common functions from run/* to include/default.umlsim
  • added an overview of the most visible restrictions to top-level README
  • sim/op.c: added Shell/Perl-like `...` construct (tests/backticks)
  • sim/script.l: parse-time error and warning messages now include the file name (tests/syntax)
  • sim/sbug.c: if running as umlsim, now by default includes $UMLSIM_TOPDIR/include/default.umlsim
  • sim/sbug.c: if running as umlsim: option -n to suppress automatic inclusion of default.umlsim

 umlsim-7 (26-FEB-2003)
umlsim-7.tar.gz (114 kB)

Changes:

  • dwarfx/dwxtype.c:get_type: increased type hash size from 4111 to 51001 and removed duplicate modulo operation
  • moved CFLAGS_WARN from sim/Makefile to Common.make
  • root/80d: primitive HTTPD demon for root file system
  • root/setup.root_fs: added "dd" to root file system
  • root file system: renamed netupA-wget to netupA-wget-null, and set output to /dev/null
  • run/tcp-80d-1MB.umlsim: new script that transfers 1MB from /dev/zero to /dev/null
  • sim/access.c:frame_base: accelerate umlsim by several orders of magnitude by avoiding call to hideously expensive dwx_find_fn_by_addr
  • all Makefiles now have recursive "all", "clean", and "spotless" targets
  • added prototype of idle/virtual time interface in lib/
  • sim/debug.c:vdebugf: printed blanks for indentation on standard output instead of standard error
  • sim/ptrace.c:pt_unbreak: don't attempt to remove breakpoints from terminated processes
  • umlsim: added debugging option flags "hash" and "hash,hash" for hash statistics
  • sim/dwarfx/dwxtype.c: added type and enum hash statistics
  • sim/dwarfx/dwxtype.c:enum_type now only adds members to hash if no equivalent entry already exists

 umlsim-6 (25-FEB-2003)
umlsim-6.tar.gz (111 kB)

Changes:

  • moved "to do" items from netbb/README to sim/dwarfx/TODO
  • sim/ptrace.c: process state is now expressed by a single variable instead of four of them
  • sim/process.c: cache debugging data per object file
  • sim/process.c: "run" and "uml" now support shell-like IO-redirection (tests/sbug.ioredir)
  • run/tcp-syn-rst.umlsim: de-noised UML startup and avoided terminal setting changes by redirecting console input and output to /dev/null
  • sim/runtests.sh: looked for dumpbb and sbug in $TOPDIR/dumpbb instead of $TOPDIR/sim
  • sim/runtests.sh: added command "umlsim"
  • added tests that usage lines of dumpbb, sbug, umlsim, and runtests.sh are short enough (tests/usage)
  • added tests for debug flags use (tests/debug)
  • sim/debug.c: added auto-indenting debugf function, and changed all debugging output to use it
  • "read" is now obsolete and "read()" should be used instead (tests/eof)
  • umlsim: added somewhat LISP-like user-defined functions with a C/Perl-like "return" statement (tests/function)
  • dumpbb, sbug, umlsim: added command-line option -V to print version number

 umlsim-5 (24-FEB-2003)
umlsim-5.tar.gz (106 kB)

Changes:

  • merged dumpbb/sbug from netbb with UML kernel and tool tree
  • changed principal name of dumpbb/sbug to "umlsim"
  • umlsim/Makefile: "clean" target now also removes y.output
  • umlsim/Makefile: "spotless" target now also removes dumpbb and sbug
  • Makefiles: file lists are now produced per-directory by local Makefiles
  • removed dbb/, moved dwarfx/ underneath umlsim/
  • sim/tests/sbug.archbrk: added tests for more call frame structures
  • sim/uml.c:launch_uml: returned pointer to gdb-pid=N option stored in local auto variable
  • sim/uml.c couldn't handle more then one UML process (added ptrace forwarder, and eliminated watcher process)
  • umlsim: renamed debug.c to access.c
  • umlsim: -d now takes a list of subsystem names to debug
  • umlsim/access.c: can now read values stored only in registers
  • umlsim/ptrace.c: major redesign to handle ptrace events invisible to scripts
  • kernel/linux-2.5.62-rootlock.patch: work around UML trying to get exclusive lock for root file system, even if using it read-only For older change log entries, see previous versions of umlsim at http://umlsim.sourceforge.net/ and version 12 of netbb at http://www.almesberger.net/netbb/

Last update: 30-DEC-2004   Werner Almesberger