NEWS revision dc2a325d01a19414185f6ab30526b23f1f343782
1-*-org-*-
2* Version 0.7.0
3** Tracing Features
4*** Full support for tracing multi-threaded processes
5    Ltrace now understands thread groups, and it stops all threads
6    before manipulating breakpoints.  The downside is that performance
7    of multi-threaded processes is rather bad, because handling any
8    event implies stopping the whole job.  The upside is that
9    individual threads don't get random SIGILL's and SIGSEGV's and
10    events are not missed.
11*** Support for tracing inter-library calls
12    -e and -x were extended to allow library selectors.  See the man
13    page for details.
14*** Better support for parameter passing ("fetch backend")
15    This version brings a more complete support for parameter passing,
16    including passing structures in registers, passing double on i386,
17    and other edge cases that were unsupported before.  The following
18    architectures now have implementation of fetch backend: x86, ppc,
19    ia64, s390, m68k.
20*** Awareness of deny_ptrace SELinux boolean
21    The deny_ptrace boolean denies all processes from being able to
22    use ptrace to manipulate other processes.  Ltrace now understands
23    that this boolean exists, and recommends turning it off, if it is
24    on and ltrace fails to attach to a process.
25*** Limited support for tracing returns from tail call functions
26*** -e, -x and -l selectors now allow using globs and regular expressions
27    See the man page for details of the selector syntax.
28*** Test suite can now be run under valgrind
29    Use --enable-valgrind to turn this on.
30*** [ppc] Support both BSS and secure PLTs for 32-bit processes
31*** [mips] Implement software singlestepping
32*** [mips] Add support for CPIC main programs
33*** Support tracing PIE binaries
34** Configuration Files
35*** New abstraction: parameter pack
36    Parameter packs make it much simpler to add specialized decoding
37    logic.  The only parameter pack currently implemented is "format"
38    for decoding printf-style format strings.  It should be relatively
39    straightforward to add more parameter packs for functions like
40    execl, strftime, and others.
41*** New expression: zero
42    When used in array length expressions, it means "this array ends
43    at the first element with zero value".  C strigs are essentially
44    array(char, zero)*.
45*** Lenses: change the way that underlying type is rendered
46    Lenses are used similarly to parametrized types, e.g.:
47    | void func(lens(int)); |
48**** octal
49     "octal", which used to be a separate type, is now lens, which can
50     be used to render any underlying type in base 8.  Plain "octal"
51     is still valid and means the same as "octal(int)".
52**** hex, hide, bool
53     Similarly, "hex" lens was introduced to format as base 16.
54     "hide" was introduced to conceal given argument.  "bool" lens was
55     added to format objects as either true, or false.
56**** enum
57     "enum" became lens as well.  Because enum already uses
58     parentheses to denote the list of enumeration values, the
59     underlying type is selected by square brackets:
60     | void func(enum[short](RED,GREEN,BLUE)); |
61**** string
62     "string" was also turned to lens.  The argument can be either a
63     char*, or pointer to array of char, or array of char.  The latter
64     is useful in cases like the following:
65     | void func_struct_2(struct(string(array(char, 6)))); |
66*** Using void as sole argument to a function now obsolete
67    Functions that take no arguments shouldn't pretend to take one
68    parameter of void type.  That use is now obsolete (but still
69    accepted):
70    | void func(void); |
71    Instead, such functions should be declared like this:
72    | void func(); |
73*** Using void to hide one argument is no longer supported
74    Instead use "hide" lens (see above).  ltrace needs to know the
75    exact underlying type to decide what the calling convention is.
76    In the following two declarations, how the second argument is
77    passed may depend on the exact type of the hidden argument:
78    | void func(hide(int), int);                 |
79    | void func(hide(struct(float,float)), int); |
80** Bugfixes
81*** Fix detaching from a process
82    Earlier, a process that ltrace detached from would sometimes die
83    of SIGSEGV, SIGTRAP, or SIGILL.  These were caused by ltrace
84    detaching from the process just after that process hit a
85    breakpoint.  Program counter would thus be left pointing
86    mid-instruction, or signals would be left pending.
87*** Argument to -n is now checked for validity
88*** Fix tracing across exec in a stripped binary
89*** [x86] ORIG_RAX/ORIG_EAX may not contain original syscall number
90    In cases where the system call shouldn't be restarted, these are
91    set to -1.  In that case assume that the return is from the
92    topmost syscall.  This gets rid of some "unexpected breakpoint"
93    messages on x86_64 and i386.
94*** [ppc] Fix races in tracing -e events in 64-bit processes
95    As a side effect, events requested via -e now only hit when a PLT
96    call is made, which is consistent with other architectures.
97*** [ppc] Allow stepping over lwarx instruction
98** Known bugs
99*** [arm] Tracing is not supported at all on ARM
100    ltrace might work on older kernels, but no attempt was made to
101    fully support it.  Newer kernels don't support PTRACE_SINGLESTEP,
102    which ltrace depends on.  Before singlestepping is implemented in
103    software, ARM is considered unsupported.
104
105* Version 0.6.0
106** General Features
107*** Use autotools for building
108*** New option -b: disables output of signals received by the tracee
109*** New option -w: print stack trace of events
110    Pass --with-libunwind to configure to enable the feature.  This
111    requires libunwind.
112*** Support tracing of symbols from libraries opened with dlopen
113    These symbols are selected by -x.
114** Architecture-specific Changes
115*** Various fixes for MIPS and PowerPC
116*** Support for ARM Thumb mode
117*** Implement fetching of 5th and further function arguments on s390
118*** Support fork/exec syscalls on 31-bit s390
119*** Support for float and double arguments on x86_64
120*** Fixes for return arguments (after '+') in nested calls on x86_64
121