aboutsummaryrefslogtreecommitdiff
path: root/NEWS
blob: 61b6cec4d68726796f6154ae72402ec94938cff5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
-*-org-*-
* Version 0.7
** General Features
*** Full support for tracing multi-threaded processes
*** Support for tracing inter-library calls
    -e and -x were extended to allow library selectors.  See the man
    page for details.
*** Better support for parameter passing ("fetch backend")
    This version brings a more complete support for parameter passing,
    including passing structures in registers, passing double on i386,
    and other edge cases that were unsupported before.  Several
    architectures now support fetch backend, see below.
*** Fix detaching from a process
    Earlier, a process that ltrace detached from would sometimes die
    of SIGSEGV, SIGTRAP, or SIGILL.  These were caused by ltrace
    detaching from the process just after that process hit a
    breakpoint.  Program counter would thus be left pointing
    mid-instruction, or signals would be left pending.
*** Fix tracing across vfork
*** Fix tracing across exec in a stripped binary
*** Be aware of deny_ptrace SELinux boolean
*** Limited support for tracing returns from tail call functions
*** -e, -x and -l selectors now allow using globs and regular expressions
*** Argument to -n is now checked for validity
*** Test suite can now be run under valgrind
    Use --enable-valgrind to turn this on.
** Config Files
*** New abstraction: parameter pack
    Parameter packs make it much simpler to add specialized decoding
    logic.  The only parameter pack currently implemented is "format",
    which used to be a special type.  It should be relatively
    straightforward to add more parameter packs for functions like
    execl, strftime, and others.
*** New expression: zero
    When used in array length expressions, it means "this array ends
    at the first element with zero value".  C strigs are essentially
    array(char, zero)*.
*** Lenses
    Lenses are used to change a way that underlying type is rendered.
**** octal
     "octal", which used to be a separate type, is now lens, which can
     be used as octal(short) or octal(long) to render any underlying
     type in base 8.  (Plain "octal" is still valid and means
     "octal(int)".)
**** hex, hide, bool
     Similarly, "hex" lens was introduced to format as base 16.
     "hide" was introduced to conceal given argument.  "bool" lens was
     added to format objects as booleans.
**** enum
     "enum" became lens as well.  The underlying type is selected by
     square brackets: "enum[short](RED,GREEN,BLUE)".
*** Pointers now allow spaces between *'s
** Architecture-specific Changes
*** [x86] ORIG_RAX/ORIG_EAX may not contain original syscall number
    In cases where the system call shouldn't be restarted, these are
    set to -1.  In that case assume that the return is from the
    topmost syscall.  This gets rid of some "unexpected breakpoint"
    messages on x86_64 and i386.
*** [x86] New fetch backend implemented
*** [ppc] Allow stepping over lwarx instruction
*** [ppc] Support both BSS and secure PLTs for 32-bit processes
*** [ppc] Fix races in tracing -e events in 64-bit processes
    As a side effect, events requested via -e now only hit when a PLT
    call is made, which is consistent with other architectures.
*** [ppc] New fetch backend implemented
*** [mips] Implement software singlestepping
*** [mips] Add support for CPIC main programs
*** [ia64] New fetch backend implemented
*** [s390] New fetch backend implemented
*** [m68k] New fetch backend implemented
*** [arm] Tracing is not supported at all on ARM
    ltrace might work on older kernels, but no attempt was made to
    fully support it.  Newer kernels don't support PTRACE_SINGLESTEP,
    which ltrace depends on.  Before singlestepping is implemented in
    software, ARM is considered unsupported.

* Version 0.6
** General Features
*** Use autotools for building
*** New option -b: disables output of signals received by the tracee
*** New option -w: print stack trace of events
    Pass --with-libunwind to configure to enable the feature.  This
    requires libunwind.
*** Support tracing of symbols from libraries opened with dlopen
    These symbols are selected by -x.
** Architecture-specific Changes
*** Various fixes for MIPS and PowerPC
*** Support for ARM Thumb mode
*** Implement fetching of 5th and further function arguments on s390
*** Support fork/exec syscalls on 31-bit s390
*** Support for float and double arguments on x86_64
*** Fixes for return arguments (after '+') in nested calls on x86_64