X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2FNEWS;h=b0da564c36bde288a7d8c1887275bcdeb097867c;hb=7fe550fc4986f19a766650a76551a4ff4985ef5c;hp=17d64fba92862e6e69163c01e556632916bb80ee;hpb=93c26624a73822b9e864c84e0d3ce93a2e79e5cf;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/NEWS b/gdb/NEWS index 17d64fba92..b0da564c36 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -1,7 +1,603 @@ What has changed in GDB? (Organized release by release) -*** Changes since GDB 7.0 +*** Changes since GDB 7.3 + +* GDB has two new commands: "set remote hardware-watchpoint-length-limit" + and "show remote hardware-watchpoint-length-limit". These allows to + set or show the maximum length limit (in bytes) of a remote + target hardware watchpoint. + + This allows e.g. to use "unlimited" hardware watchpoints with the + gdbserver integrated in Valgrind version >= 3.7.0. Such Valgrind + watchpoints are slower than real hardware watchpoints but are + significantly faster than gdb software watchpoints. + +* Python scripting + + ** The "maint set python print-stack on|off" command has been + deprecated, and a new command: "set python print-stack on|off" has + replaced it. Additionally, the default for "print-stack" is now + "off". + + ** A prompt subsitution hook (prompt_hook) is now available to the + Python API. + +* libthread-db-search-path now supports two special values: $sdir and $pdir. + $sdir specifies the default system locations of shared libraries. + $pdir specifies the directory where the libpthread used by the application + lives. + + GDB no longer looks in $sdir and $pdir after it has searched the directories + mentioned in libthread-db-search-path. If you want to search those + directories, they must be specified in libthread-db-search-path. + The default value of libthread-db-search-path on GNU/Linux and Solaris + systems is now "$sdir:$pdir". + + $pdir is not supported by gdbserver, it is currently ignored. + $sdir is supported by gdbserver. + +* New configure option --with-iconv-bin. + When using the internationalization support like the one in the GNU C + library, GDB will invoke the "iconv" program to get a list of supported + character sets. If this program lives in a non-standard location, one can + use this option to specify where to find it. + +* When natively debugging programs on PowerPC BookE processors running + a Linux kernel version 2.6.34 or later, GDB supports masked hardware + watchpoints, which specify a mask in addition to an address to watch. + The mask specifies that some bits of an address (the bits which are + reset in the mask) should be ignored when matching the address accessed + by the inferior against the watchpoint address. See the "PowerPC Embedded" + section in the user manual for more details. + +* The new option --once causes GDBserver to stop listening for connections once + the first connection is made. The listening port used by GDBserver will + become available after that. + +* New commands "info macros", and "info definitions" have been added. + +* Changed commands + +watch EXPRESSION mask MASK_VALUE + The watch command now supports the mask argument which allows creation + of masked watchpoints, if the current architecture supports this feature. + +info auto-load-scripts [REGEXP] + This command was formerly named "maintenance print section-scripts". + It is now generally useful and is no longer a maintenance-only command. + +* Tracepoints can now be enabled and disabled at any time after a trace + experiment has been started using the standard "enable" and "disable" + commands. It is now possible to start a trace experiment with no enabled + tracepoints; GDB will display a warning, but will allow the experiment to + begin, assuming that tracepoints will be enabled as needed while the trace + is running. + +* New remote packets + +QTEnable + + Dynamically enable a tracepoint in a started trace experiment. + +QTDisable + + Dynamically disable a tracepoint in a started trace experiment. + +* Dcache size (number of lines) and line-size are now runtime-configurable + via "set dcache line" and "set dcache line-size" commands. + +*** Changes in GDB 7.3 + +* GDB has a new command: "thread find [REGEXP]". + It finds the thread id whose name, target id, or thread extra info + matches the given regular expression. + +* The "catch syscall" command now works on mips*-linux* targets. + +* The -data-disassemble MI command now supports modes 2 and 3 for + dumping the instruction opcodes. + +* New command line options + +-data-directory DIR Specify DIR as the "data-directory". + This is mostly for testing purposes. + +* The "maint set python auto-load on|off" command has been renamed to + "set auto-load-scripts on|off". + +* GDB has a new command: "set directories". + It is like the "dir" command except that it replaces the + source path list instead of augmenting it. + +* GDB now understands thread names. + + On GNU/Linux, "info threads" will display the thread name as set by + prctl or pthread_setname_np. + + There is also a new command, "thread name", which can be used to + assign a name internally for GDB to display. + +* OpenCL C + Initial support for the OpenCL C language (http://www.khronos.org/opencl) + has been integrated into GDB. + +* Python scripting + + ** The function gdb.Write now accepts an optional keyword 'stream'. + This keyword, when provided, will direct the output to either + stdout, stderr, or GDB's logging output. + + ** Parameters can now be be sub-classed in Python, and in particular + you may implement the get_set_doc and get_show_doc functions. + This improves how Parameter set/show documentation is processed + and allows for more dynamic content. + + ** Symbols, Symbol Table, Symbol Table and Line, Object Files, + Inferior, Inferior Thread, Blocks, and Block Iterator APIs now + have an is_valid method. + + ** Breakpoints can now be sub-classed in Python, and in particular + you may implement a 'stop' function that is executed each time + the inferior reaches that breakpoint. + + ** New function gdb.lookup_global_symbol looks up a global symbol. + + ** GDB values in Python are now callable if the value represents a + function. For example, if 'some_value' represents a function that + takes two integer parameters and returns a value, you can call + that function like so: + + result = some_value (10,20) + + ** Module gdb.types has been added. + It contains a collection of utilities for working with gdb.Types objects: + get_basic_type, has_field, make_enum_dict. + + ** Module gdb.printing has been added. + It contains utilities for writing and registering pretty-printers. + New classes: PrettyPrinter, SubPrettyPrinter, + RegexpCollectionPrettyPrinter. + New function: register_pretty_printer. + + ** New commands "info pretty-printers", "enable pretty-printer" and + "disable pretty-printer" have been added. + + ** gdb.parameter("directories") is now available. + + ** New function gdb.newest_frame returns the newest frame in the + selected thread. + + ** The gdb.InferiorThread class has a new "name" attribute. This + holds the thread's name. + + ** Python Support for Inferior events. + Python scripts can add observers to be notified of events + occurring in the process being debugged. + The following events are currently supported: + - gdb.events.cont Continue event. + - gdb.events.exited Inferior exited event. + - gdb.events.stop Signal received, and Breakpoint hit events. + +* C++ Improvements: + + ** GDB now puts template parameters in scope when debugging in an + instantiation. For example, if you have: + + template int func (void) { return X; } + + then if you step into func<5>, "print X" will show "5". This + feature requires proper debuginfo support from the compiler; it + was added to GCC 4.5. + + ** The motion commands "next", "finish", "until", and "advance" now + work better when exceptions are thrown. In particular, GDB will + no longer lose control of the inferior; instead, the GDB will + stop the inferior at the point at which the exception is caught. + This functionality requires a change in the exception handling + code that was introduced in GCC 4.5. + +* GDB now follows GCC's rules on accessing volatile objects when + reading or writing target state during expression evaluation. + One notable difference to prior behavior is that "print x = 0" + no longer generates a read of x; the value of the assignment is + now always taken directly from the value being assigned. + +* GDB now has some support for using labels in the program's source in + linespecs. For instance, you can use "advance label" to continue + execution to a label. + +* GDB now has support for reading and writing a new .gdb_index + section. This section holds a fast index of DWARF debugging + information and can be used to greatly speed up GDB startup and + operation. See the documentation for `save gdb-index' for details. + +* The "watch" command now accepts an optional "-location" argument. + When used, this causes GDB to watch the memory referred to by the + expression. Such a watchpoint is never deleted due to it going out + of scope. + +* GDB now supports thread debugging of core dumps on GNU/Linux. + + GDB now activates thread debugging using the libthread_db library + when debugging GNU/Linux core dumps, similarly to when debugging + live processes. As a result, when debugging a core dump file, GDB + is now able to display pthread_t ids of threads. For example, "info + threads" shows the same output as when debugging the process when it + was live. In earlier releases, you'd see something like this: + + (gdb) info threads + * 1 LWP 6780 main () at main.c:10 + + While now you see this: + + (gdb) info threads + * 1 Thread 0x7f0f5712a700 (LWP 6780) main () at main.c:10 + + It is also now possible to inspect TLS variables when debugging core + dumps. + + When debugging a core dump generated on a machine other than the one + used to run GDB, you may need to point GDB at the correct + libthread_db library with the "set libthread-db-search-path" + command. See the user manual for more details on this command. + +* When natively debugging programs on PowerPC BookE processors running + a Linux kernel version 2.6.34 or later, GDB supports ranged breakpoints, + which stop execution of the inferior whenever it executes an instruction + at any address within the specified range. See the "PowerPC Embedded" + section in the user manual for more details. + +* New features in the GDB remote stub, GDBserver + + ** GDBserver is now supported on PowerPC LynxOS (versions 4.x and 5.x), + and i686 LynxOS (version 5.x). + + ** GDBserver is now supported on Blackfin Linux. + +* New native configurations + +ia64 HP-UX ia64-*-hpux* + +* New targets: + +Analog Devices, Inc. Blackfin Processor bfin-* + +* Ada task switching is now supported on sparc-elf targets when + debugging a program using the Ravenscar Profile. For more information, + see the "Tasking Support when using the Ravenscar Profile" section + in the GDB user manual. + +* Guile support was removed. + +* New features in the GNU simulator + + ** The --map-info flag lists all known core mappings. + + ** CFI flashes may be simulated via the "cfi" device. + +*** Changes in GDB 7.2 + +* Shared library support for remote targets by default + + When GDB is configured for a generic, non-OS specific target, like + for example, --target=arm-eabi or one of the many *-*-elf targets, + GDB now queries remote stubs for loaded shared libraries using the + `qXfer:libraries:read' packet. Previously, shared library support + was always disabled for such configurations. + +* C++ Improvements: + + ** Argument Dependent Lookup (ADL) + + In C++ ADL lookup directs function search to the namespaces of its + arguments even if the namespace has not been imported. + For example: + namespace A + { + class B { }; + void foo (B) { } + } + ... + A::B b + foo(b) + Here the compiler will search for `foo' in the namespace of 'b' + and find A::foo. GDB now supports this. This construct is commonly + used in the Standard Template Library for operators. + + ** Improved User Defined Operator Support + + In addition to member operators, GDB now supports lookup of operators + defined in a namespace and imported with a `using' directive, operators + defined in the global scope, operators imported implicitly from an + anonymous namespace, and the ADL operators mentioned in the previous + entry. + GDB now also supports proper overload resolution for all the previously + mentioned flavors of operators. + + ** static const class members + + Printing of static const class members that are initialized in the + class definition has been fixed. + +* Windows Thread Information Block access. + + On Windows targets, GDB now supports displaying the Windows Thread + Information Block (TIB) structure. This structure is visible either + by using the new command `info w32 thread-information-block' or, by + dereferencing the new convenience variable named `$_tlb', a + thread-specific pointer to the TIB. This feature is also supported + when remote debugging using GDBserver. + +* Static tracepoints + + Static tracepoints are calls in the user program into a tracing + library. One such library is a port of the LTTng kernel tracer to + userspace --- UST (LTTng Userspace Tracer, http://lttng.org/ust). + When debugging with GDBserver, GDB now supports combining the GDB + tracepoint machinery with such libraries. For example: the user can + use GDB to probe a static tracepoint marker (a call from the user + program into the tracing library) with the new "strace" command (see + "New commands" below). This creates a "static tracepoint" in the + breakpoint list, that can be manipulated with the same feature set + as fast and regular tracepoints. E.g., collect registers, local and + global variables, collect trace state variables, and define + tracepoint conditions. In addition, the user can collect extra + static tracepoint marker specific data, by collecting the new + $_sdata internal variable. When analyzing the trace buffer, you can + inspect $_sdata like any other variable available to GDB. For more + information, see the "Tracepoints" chapter in GDB user manual. New + remote packets have been defined to support static tracepoints, see + the "New remote packets" section below. + +* Better reconstruction of tracepoints after disconnected tracing + + GDB will attempt to download the original source form of tracepoint + definitions when starting a trace run, and then will upload these + upon reconnection to the target, resulting in a more accurate + reconstruction of the tracepoints that are in use on the target. + +* Observer mode + + You can now exercise direct control over the ways that GDB can + affect your program. For instance, you can disallow the setting of + breakpoints, so that the program can run continuously (assuming + non-stop mode). In addition, the "observer" variable is available + to switch all of the different controls; in observer mode, GDB + cannot affect the target's behavior at all, which is useful for + tasks like diagnosing live systems in the field. + +* The new convenience variable $_thread holds the number of the + current thread. + +* New remote packets + +qGetTIBAddr + + Return the address of the Windows Thread Information Block of a given thread. + +qRelocInsn + + In response to several of the tracepoint packets, the target may now + also respond with a number of intermediate `qRelocInsn' request + packets before the final result packet, to have GDB handle + relocating an instruction to execute at a different address. This + is particularly useful for stubs that support fast tracepoints. GDB + reports support for this feature in the qSupported packet. + +qTfSTM, qTsSTM + + List static tracepoint markers in the target program. + +qTSTMat + + List static tracepoint markers at a given address in the target + program. + +qXfer:statictrace:read + + Read the static trace data collected (by a `collect $_sdata' + tracepoint action). The remote stub reports support for this packet + to gdb's qSupported query. + +QAllow + + Send the current settings of GDB's permission flags. + +QTDPsrc + + Send part of the source (textual) form of a tracepoint definition, + which includes location, conditional, and action list. + +* The source command now accepts a -s option to force searching for the + script in the source search path even if the script name specifies + a directory. + +* New features in the GDB remote stub, GDBserver + + - GDBserver now support tracepoints (including fast tracepoints, and + static tracepoints). The feature is currently supported by the + i386-linux and amd64-linux builds. See the "Tracepoints support + in gdbserver" section in the manual for more information. + + GDBserver JIT compiles the tracepoint's conditional agent + expression bytecode into native code whenever possible for low + overhead dynamic tracepoints conditionals. For such tracepoints, + an expression that examines program state is evaluated when the + tracepoint is reached, in order to determine whether to capture + trace data. If the condition is simple and false, processing the + tracepoint finishes very quickly and no data is gathered. + + GDBserver interfaces with the UST (LTTng Userspace Tracer) library + for static tracepoints support. + + - GDBserver now supports x86_64 Windows 64-bit debugging. + +* GDB now sends xmlRegisters= in qSupported packet to indicate that + it understands register description. + +* The --batch flag now disables pagination and queries. + +* X86 general purpose registers + + GDB now supports reading/writing byte, word and double-word x86 + general purpose registers directly. This means you can use, say, + $ah or $ax to refer, respectively, to the byte register AH and + 16-bit word register AX that are actually portions of the 32-bit + register EAX or 64-bit register RAX. + +* The `commands' command now accepts a range of breakpoints to modify. + A plain `commands' following a command that creates multiple + breakpoints affects all the breakpoints set by that command. This + applies to breakpoints set by `rbreak', and also applies when a + single `break' command creates multiple breakpoints (e.g., + breakpoints on overloaded c++ functions). + +* The `rbreak' command now accepts a filename specification as part of + its argument, limiting the functions selected by the regex to those + in the specified file. + +* Support for remote debugging Windows and SymbianOS shared libraries + from Unix hosts has been improved. Non Windows GDB builds now can + understand target reported file names that follow MS-DOS based file + system semantics, such as file names that include drive letters and + use the backslash character as directory separator. This makes it + possible to transparently use the "set sysroot" and "set + solib-search-path" on Unix hosts to point as host copies of the + target's shared libraries. See the new command "set + target-file-system-kind" described below, and the "Commands to + specify files" section in the user manual for more information. + +* New commands + +eval template, expressions... + Convert the values of one or more expressions under the control + of the string template to a command line, and call it. + +set target-file-system-kind unix|dos-based|auto +show target-file-system-kind + Set or show the assumed file system kind for target reported file + names. + +save breakpoints + Save all current breakpoint definitions to a file suitable for use + in a later debugging session. To read the saved breakpoint + definitions, use the `source' command. + +`save tracepoints' is a new alias for `save-tracepoints'. The latter +is now deprecated. + +info static-tracepoint-markers + Display information about static tracepoint markers in the target. + +strace FN | FILE:LINE | *ADDR | -m MARKER_ID + Define a static tracepoint by probing a marker at the given + function, line, address, or marker ID. + +set observer on|off +show observer + Enable and disable observer mode. + +set may-write-registers on|off +set may-write-memory on|off +set may-insert-breakpoints on|off +set may-insert-tracepoints on|off +set may-insert-fast-tracepoints on|off +set may-interrupt on|off + Set individual permissions for GDB effects on the target. Note that + some of these settings can have undesirable or surprising + consequences, particularly when changed in the middle of a session. + For instance, disabling the writing of memory can prevent + breakpoints from being inserted, cause single-stepping to fail, or + even crash your program, if you disable after breakpoints have been + inserted. However, GDB should not crash. + +set record memory-query on|off +show record memory-query + Control whether to stop the inferior if memory changes caused + by an instruction cannot be recorded. + +* Changed commands + +disassemble + The disassemble command now supports "start,+length" form of two arguments. + +* Python scripting + +** GDB now provides a new directory location, called the python directory, + where Python scripts written for GDB can be installed. The location + of that directory is /python, where + is the GDB data directory. For more details, see section `Scripting + GDB using Python' in the manual. + +** The GDB Python API now has access to breakpoints, symbols, symbol + tables, program spaces, inferiors, threads and frame's code blocks. + Additionally, GDB Parameters can now be created from the API, and + manipulated via set/show in the CLI. + +** New functions gdb.target_charset, gdb.target_wide_charset, + gdb.progspaces, gdb.current_progspace, and gdb.string_to_argv. + +** New exception gdb.GdbError. + +** Pretty-printers are now also looked up in the current program space. + +** Pretty-printers can now be individually enabled and disabled. + +** GDB now looks for names of Python scripts to auto-load in a + special section named `.debug_gdb_scripts', in addition to looking + for a OBJFILE-gdb.py script when OBJFILE is read by the debugger. + +* Tracepoint actions were unified with breakpoint commands. In particular, +there are no longer differences in "info break" output for breakpoints and +tracepoints and the "commands" command can be used for both tracepoints and +regular breakpoints. + +* New targets + +ARM Symbian arm*-*-symbianelf* + +* D language support. + GDB now supports debugging programs written in the D programming + language. + +* GDB now supports the extended ptrace interface for PowerPC which is + available since Linux kernel version 2.6.34. This automatically enables + any hardware breakpoints and additional hardware watchpoints available in + the processor. The old ptrace interface exposes just one hardware + watchpoint and no hardware breakpoints. + +* GDB is now able to use the Data Value Compare (DVC) register available on + embedded PowerPC processors to implement in hardware simple watchpoint + conditions of the form: + + watch ADDRESS|VARIABLE if ADDRESS|VARIABLE == CONSTANT EXPRESSION + + This works in native GDB running on Linux kernels with the extended ptrace + interface mentioned above. + +*** Changes in GDB 7.1 + +* C++ Improvements + + ** Namespace Support + + GDB now supports importing of namespaces in C++. This enables the + user to inspect variables from imported namespaces. Support for + namepace aliasing has also been added. So, if a namespace is + aliased in the current scope (e.g. namepace C=A; ) the user can + print variables using the alias (e.g. (gdb) print C::x). + + ** Bug Fixes + + All known bugs relating to the printing of virtual base class were + fixed. It is now possible to call overloaded static methods using a + qualified name. + + ** Cast Operators + + The C++ cast operators static_cast<>, dynamic_cast<>, const_cast<>, + and reinterpret_cast<> are now handled by the C++ expression parser. * New targets @@ -61,6 +657,23 @@ Renesas RX rx tell the target agent whether to continue running a trace if the connection is lost unexpectedly. + ** Trace files + + GDB now has the ability to save the trace buffer into a file, and + then use that file as a target, similarly to you can do with + corefiles. You can select trace frames, print data that was + collected in them, and use tstatus to display the state of the + tracing run at the moment that it was saved. To create a trace + file, use "tsave ", and to use it, do "target tfile + ". + + ** Circular trace buffer + + You can ask the target agent to handle the trace buffer as a + circular buffer, discarding the oldest trace frames to make room for + newer ones, by setting circular-trace-buffer to on. This feature may + not be available for all target agents. + * Changed commands disassemble @@ -71,6 +684,14 @@ info variables The info variables command now displays variable definitions. Files which only declare a variable are not shown. +source + The source command is now capable of sourcing Python scripts. + This feature is dependent on the debugger being build with Python + support. + + Related to this enhancement is also the introduction of a new command + "set script-extension" (see below). + * New commands (for set/show, see "New options" below) record save [] @@ -153,6 +774,45 @@ show disconnected-tracing loses its connection to GDB. If 0, the target is to stop tracing upon disconnection. +set circular-trace-buffer +show circular-trace-buffer + If set to on, the target is instructed to use a circular trace buffer + and discard the oldest trace frames instead of stopping the trace due + to a full trace buffer. If set to off, the trace stops when the buffer + fills up. Some targets may not support this. + +set script-extension off|soft|strict +show script-extension + If set to "off", the debugger does not perform any script language + recognition, and all sourced files are assumed to be GDB scripts. + If set to "soft" (the default), files are sourced according to + filename extension, falling back to GDB scripts if the first + evaluation failed. + If set to "strict", files are sourced according to filename extension. + +set ada trust-PAD-over-XVS on|off +show ada trust-PAD-over-XVS + If off, activate a workaround against a bug in the debugging information + generated by the compiler for PAD types (see gcc/exp_dbug.ads in + the GCC sources for more information about the GNAT encoding and + PAD types in particular). It is always safe to set this option to + off, but this introduces a slight performance penalty. The default + is on. + +* Python API Improvements + + ** GDB provides the new class gdb.LazyString. This is useful in + some pretty-printing cases. The new method gdb.Value.lazy_string + provides a simple way to create objects of this type. + + ** The fields returned by gdb.Type.fields now have an + `is_base_class' attribute. + + ** The new method gdb.Type.range returns the range of an array type. + + ** The new method gdb.parse_and_eval can be used to parse and + evaluate an expression. + * New remote packets QTDV @@ -164,6 +824,9 @@ qTV QTDisconnected Set desired tracing behavior upon disconnection. +QTBuffer:circular + Set the trace buffer to be linear or circular. + qTfP, qTsP Get data about the tracepoints currently in use. @@ -208,8 +871,9 @@ or the "condition" command is available. GDB sends the condition to the target for evaluation using the same bytecode format as is used for tracepoint actions. -* "disassemble" command with a /r modifier, print the raw instructions -in hex as well as in symbolic form." +* The disassemble command now supports: an optional /r modifier, print the +raw instructions in hex as well as in symbolic form, and an optional /m +modifier to print mixed source+assembly. * Process record and replay @@ -301,9 +965,6 @@ qXfer:siginfo:write packet that permited the stub to pass a process id was removed. Remote servers should use the `T' stop reply packet instead. -* The "disassemble" command now supports an optional /m modifier to print mixed -source+assembly. - * GDB now supports multiple function calling conventions according to the DWARF-2 DW_AT_calling_convention function attribute.