aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-01-26Epilogue unwinder for PowerPC.Wei-cheng Wang2-4/+109
gdb/ChangeLog Backport from mainline: * rs6000-tdep.c (rs6000_in_function_epilogue_p): Rename to rs6000_in_function_epilogue_frame_p and add an argument for frame_info. (rs6000_epilogue_frame_cache, rs6000_epilogue_frame_this_id, rs6000_epilogue_frame_prev_register, rs6000_epilogue_frame_sniffer): New functions. (rs6000_epilogue_frame_unwind): New. (rs6000_gdbarch_init): Append epilogue unwinder.
2015-01-26Automatic date update in version.inGDB Administrator1-1/+1
2015-01-25Fix 100x slowdown regression on DWZ filesJan Kratochvil2-13/+163
Since Fedora started to use DWZ DWARF compressor: http://fedoraproject.org/wiki/Features/DwarfCompressor GDB has slowed down a lot. To make it clear - DWZ is DWARF structure rearrangement, "compressor" does not mean any zlib style data compression. This patch reduces LibreOffice backtrace from 5 minutes to 3 seconds (100x) and it also reduces memory consumption 20x. [ benchmark is at the bottom of this mail ] Example of DWZ output: ------------------------------------------------------------------------------ Compilation Unit @ offset 0xc4: <0><cf>: Abbrev Number: 17 (DW_TAG_partial_unit) <d0> DW_AT_stmt_list : 0x0 <d4> DW_AT_comp_dir : (indirect string, offset: 0x6f): /usr/src/debug/gdb-7.7.1/build-x86_64-redhat-linux-gnu/gdb <1><d8>: Abbrev Number: 9 (DW_TAG_typedef) <d9> DW_AT_name : (indirect string, offset: 0x827dc): size_t <dd> DW_AT_decl_file : 4 <de> DW_AT_decl_line : 212 <df> DW_AT_type : <0xae> Compilation Unit @ offset 0xe4: <0><ef>: Abbrev Number: 13 (DW_TAG_partial_unit) <f0> DW_AT_stmt_list : 0x0 <f4> DW_AT_comp_dir : (indirect string, offset: 0x6f): /usr/src/debug/gdb-7.7.1/build-x86_64-redhat-linux-gnu/gdb <1><f8>: Abbrev Number: 45 (DW_TAG_typedef) <f9> DW_AT_name : (indirect string, offset: 0x251): __off_t <fd> DW_AT_decl_file : 3 <fe> DW_AT_decl_line : 131 <ff> DW_AT_type : <0x68> Compilation Unit @ offset 0x62d9f9: <0><62da04>: Abbrev Number: 20 (DW_TAG_compile_unit) [...] <62da12> DW_AT_low_pc : 0x807e10 <62da1a> DW_AT_high_pc : 134 <62da1c> DW_AT_stmt_list : 0xf557e <1><62da20>: Abbrev Number: 7 (DW_TAG_imported_unit) <62da21> DW_AT_import : <0xcf> [Abbrev Number: 17] ------------------------------------------------------------------------------ One can see all DW_TAG_partial_unit have DW_AT_stmt_list 0x0 which causes repeated decoding of that .debug_line unit on each DW_TAG_imported_unit. This was OK before as each DW_TAG_compile_unit has its own .debug_line unit. But since the introduction of DW_TAG_partial_unit by DWZ one should cache read-in DW_AT_stmt_list .debug_line units. Fortunately one does not need to cache whole struct linetable *symtab->linetable and other data from .debug_line mapping PC<->lines ------------------------------------------------------------------------------ Line Number Statements: Extended opcode 2: set Address to 0x45c880 Advance Line by 25 to 26 Copy ------------------------------------------------------------------------------ as the only part of .debug_line which GDB needs for DW_TAG_partial_unit is: ------------------------------------------------------------------------------ The Directory Table: ../../gdb /usr/include/bits [...] The File Name Table: Entry Dir Time Size Name 1 1 0 0 gdb.c 2 2 0 0 string3.h [...] ------------------------------------------------------------------------------ specifically referenced in GDB for DW_AT_decl_file at a single place: ------------------------------------------------------------------------------ fe = &cu->line_header->file_names[file_index - 1]; SYMBOL_SYMTAB (sym) = fe->symtab; ------------------------------------------------------------------------------ This is because for some reason DW_TAG_partial_unit never contains PC-related DWARF information. I do not know exactly why, the compression ratio is a bit lower due to it but thanksfully currently it is that way: dwz.c: ------------------------------------------------------------------------------ /* These attributes reference code, prevent moving DIEs with them. */ case DW_AT_low_pc: case DW_AT_high_pc: case DW_AT_entry_pc: case DW_AT_ranges: die->die_ck_state = CK_BAD; + /* State of checksum computation. Not computed yet, computed and suitable for moving into partial units, currently being computed and finally determined unsuitable for moving into partial units. */ enum { CK_UNKNOWN, CK_KNOWN, CK_BEING_COMPUTED, CK_BAD } die_ck_state : 2; ------------------------------------------------------------------------------ I have also verified also real-world Fedora debuginfo files really comply with that assumption with dwgrep https://github.com/pmachata/dwgrep using: ------------------------------------------------------------------------------ dwgrep -e 'entry ?DW_TAG_partial_unit child* ( ?DW_AT_low_pc , ?DW_AT_high_pc , ?DW_AT_ranges )' /usr/lib/debug/** ------------------------------------------------------------------------------ BTW I think GDB already does not support the whole DW_TAG_imported_unit and DW_TAG_partial_unit usage possibilities as specified by the DWARF standard. I think GDB would not work if DW_TAG_imported_unit was used in some inner level and not at the CU level (readelf -wi level <1>) - this is how DWZ is using DW_TAG_imported_unit. Therefore I do not think further assumptions about DW_TAG_imported_unit and DW_TAG_partial_unit usage by DWZ are a problem for GDB. One could save the whole .debug_line decoded PC<->lines mapping (and not just the DW_AT_decl_file table) but: * there are some problematic corner cases so one could do it incorrectly * there are no real world data to really test such patch extension * such extension could be done perfectly incrementally on top of this patch ------------------------------------------------------------------------------ benchmark - on Fedora 20 x86_64 and FSF GDB HEAD: echo -e 'thread apply all bt\nset confirm no\nq'|./gdb -p `pidof soffice.bin` -ex 'set pagination off' -ex 'maintenance set per-command space' -ex 'maintenance set per-command symtab' -ex 'maintenance set per-command time' FSF GDB HEAD ("thread apply all bt"): Command execution time: 333.693000 (cpu), 335.587539 (wall) ---sec Space used: 1736404992 (+1477189632 for this command) ----MB vs. THIS PATCH ("thread apply all bt"): Command execution time: 2.595000 (cpu), 2.607573 (wall) -sec Space used: 340058112 (+85917696 for this command) --MB FSF GDB HEAD ("thread apply all bt full"): Command execution time: 466.751000 (cpu), 468.345837 (wall) ---sec Space used: 2330132480 (+2070974464 for this command) ----MB vs. THIS PATCH ("thread apply all bt full"): Command execution time: 18.907000 (cpu), 18.964125 (wall) --sec Space used: 364462080 (+110325760 for this command) ---MB ------------------------------------------------------------------------------ gdb/ChangeLog 2015-01-25 Jan Kratochvil <jan.kratochvil@redhat.com> Fix 100x slowdown regression on DWZ files. * dwarf2read.c (struct dwarf2_per_objfile): Add line_header_hash. (struct line_header): Add offset and offset_in_dwz. (dwarf_decode_lines): Add parameter decode_mapping to the declaration. (free_line_header_voidp): New declaration. (line_header_hash, line_header_hash_voidp, line_header_eq_voidp): New functions. (dwarf2_build_include_psymtabs): Update dwarf_decode_lines caller. (handle_DW_AT_stmt_list): Use line_header_hash. (free_line_header_voidp): New function. (dwarf_decode_line_header): Initialize offset and offset_in_dwz. (dwarf_decode_lines): New parameter decode_mapping, use it. (dwarf2_free_objfile): Free line_header_hash.
2015-01-25Automatic date update in version.inGDB Administrator1-1/+1
2015-01-24Automatic date update in version.inGDB Administrator1-1/+1
2015-01-23Linux: make target_is_async_p return false when async is offPedro Alves5-13/+163
linux_nat_is_async_p currently always returns true, even when the target is _not_ async. That confuses gdb_readline_wrapper/gdb_readline_wrapper_cleanup, which force-disables target-async while the secondary prompt is active. As a result, when gdb_readline_wrapper returns, the target is left async, even through it was sync to begin with. That can result in weird bugs, like the one the test added by this commit exposes. Ref: https://sourceware.org/ml/gdb-patches/2015-01/msg00592.html gdb/ChangeLog: 2015-01-23 Pedro Alves <palves@redhat.com> * linux-nat.c (linux_is_async_p): New macro. (linux_nat_is_async_p): (linux_nat_terminal_inferior): Check whether the target can async instead of whether it is already async. (linux_nat_terminal_ours): Don't check whether the target is async. (linux_async_pipe): Use linux_is_async_p. gdb/testsuite/ChangeLog: 2015-01-23 Pedro Alves <palves@redhat.com> * gdb.threads/continue-pending-after-query.c: New file. * gdb.threads/continue-pending-after-query.exp: New file.
2015-01-23compile: Fix function pointersJan Kratochvil4-3/+17
TBH while I always comment reasons for each of the compilation options in reality I tried them all and chose that combination that needs the most simple compile/compile-object-load.c (ld.so emulation) implementation. gdb/ChangeLog 2015-01-23 Jan Kratochvil <jan.kratochvil@redhat.com> * compile/compile.c (_initialize_compile): Use -fPIE for compile_args. gdb/testsuite/ChangeLog 2015-01-23 Jan Kratochvil <jan.kratochvil@redhat.com> * gdb.compile/compile.exp (pointer to jit function): New test.
2015-01-23Fix filename in one of the recent gdb/ChangeLog entries (remove "gdb/").Joel Brobecker1-1/+1
2015-01-23Automatic date update in version.inGDB Administrator1-1/+1
2015-01-22mingw32: fix windows-termcap/curses checkPedro Alves4-6/+10
When GDB is configured with "--without-tui --with-curses" or "--with-tui", $prefer_curses is set to yes. But, that still doesn't mean that curses will be used. configure will still search for the curses library, and continue building without it. That's done here: curses_found=no if test x"$prefer_curses" = xyes; then ... AC_SEARCH_LIBS(waddstr, [ncurses cursesX curses]) if test "$ac_cv_search_waddstr" != no; then curses_found=yes fi fi So if waddstr is not found, meaning curses is not really available, even though it'd be preferred, $prefer_curses is 'yes', but $curses_found is 'no'. So the right fix to tell whether we're linking with curses is $curses_found=yes. gdb/ChangeLog: 2015-01-22 Pedro Alves <palves@redhat.com> * configure.ac [*mingw32*]: Check $curses_found instead of $prefer_curses. * configure: Regenerate. * windows-termcap.c: Remove HAVE_CURSES_H, HAVE_NCURSES_H and HAVE_NCURSES_NCURSES_H checks.
2015-01-22Fix MinGW TUI buildEli Zaretskii2-1/+18
gdb/ 2015-01-22 Eli Zaretskii <eliz@gnu.org> * gdb/tui/tui.c (tui_enable) [__MINGW32__]: If the call to 'newterm' fails with the 1st arg NULL, try again with "unknown". Don't test the "cup" capability: it isn't supported by the Windows port of ncurses, but the Windows console driver is still capable of supporting TUI. (cherry picked from commit 6b8a872ff1038e2b8618ea33bb1113b78f39976d)
2015-01-22Partial fix for "make TAGS".Eli Zaretskii2-2/+7
gdb/ 2015-01-22 Eli Zaretskii <eliz@gnu.org> * Makefile.in (HFILES_NO_SRCDIR): Remove ada-varobj.h. (ALLDEPFILES): Remove irix5-nat.c. These two are part of the reason that "make TAGS" is broken. (cherry picked from commit 82a864f96aff83edb0c8bb21ead5c28cd10363fe)
2015-01-22Automatic date update in version.inGDB Administrator1-1/+1
2015-01-21Automatic date update in version.inGDB Administrator1-1/+1
2015-01-20Automatic date update in version.inGDB Administrator1-1/+1
2015-01-19Don't use windows-termcap.c when linking against a curses libraryEli Zaretskii4-6/+25
gdb/ 2015-01-17 Eli Zaretskii <eliz@gnu.org> * configure.ac [*mingw32*]: Only add windows-termcap.o to CONFIG_OBS if not building with a curses library. * configure: Regenerate. * windows-termcap.c: Include defs.h. Make the whole body empty if either one of HAVE_CURSES_H or HAVE_NCURSES_H or HAVE_NCURSES_NCURSES_H is defined. (cherry picked from commit 63413d85873c450fa4ed2494f21fb1a65bdaf554)
2015-01-19strerror.c: Do not declare sys_nerr or sys_errlist if already macrosJoel Brobecker2-0/+10
This fixes a MinGW warning in libiberty/strerror.c. 2015-01-19 Eli Zaretskii <eliz@gnu.org> * strerror.c <sys_nerr, sys_errlist>: Declare only if they aren't macros. (cherry picked from commit 1f99f6d0689d20db44c0c7d88e8af1ebe900d187)
2015-01-19Automatic date update in version.inGDB Administrator1-1/+1
2015-01-18Automatic date update in version.inGDB Administrator1-1/+1
2015-01-17Automatic date update in version.inGDB Administrator1-1/+1
2015-01-16Really add a prototype for tui_rehighlight_all.Eli Zaretskii1-0/+1
(cherry picked from commit 2ef60e94e7d10fb9dd5afaf246b960cb4fdf404e)
2015-01-16Make setting TUI border attributes take effect immediatelyEli Zaretskii3-3/+31
gdb/ 2015-01-16 Eli Zaretskii <eliz@gnu.org> * tui/tui-win.c (tui_rehighlight_all, tui_set_var_cmd): New functions. (_initialize_tui_win) <border-kind, border-mode>: <active-border-mode>: Use tui_set_var_cmd as the "set" function. * tui/tui-win.h: Add prototype for tui_rehighlight_all. (cherry picked from commit 6cdb25f4df143e8d98bd71bf943bbe61c702e239)
2015-01-16Make the change of tab size in TUI mode effective immediatelyEli Zaretskii2-3/+24
gdb/ChangeLog: 2015-01-16 Eli Zaretskii <eliz@gnu.org> * tui/tui-win.c (tui_set_tab_width_command): Delete and recreate the source and the disassembly windows, to show the effect of the changed tab size immediately. (cherry picked from commit cb86fcc13bea494007a103424c8a61f1cb372717)
2015-01-16Fix TUI-related documentation.Eli Zaretskii4-4/+19
tui/tui-win.c (tui_scroll_left_command, tui_scroll_right_command): Doc fix. doc/gdb.texinfo (TUI Commands): Document the possible values of NAME argument to 'winheight' command. Explain the effect of 'tabset' setting better. (cherry picked from commit bf555842fccfc0e2cdc4a2f329df6358f991732c)
2015-01-16Leave more space in TUI mode for thread ID.Eli Zaretskii2-2/+8
gdb/tui/tui-data.h (LINE_PREFIX): Make shorter (MAX_PID_WIDTH): Enlarge from 14 to 19, to leave enough space for "Thread NNNNN.XXXX" thread ID notation on Windows. (cherry picked from commit 9f2850baa3ce341f0ba42bd9519cb3c1bf1287c7)
2015-01-16Automatic date update in version.inGDB Administrator1-1/+1
2015-01-15Build failure in sim/rx/gdb-if.c on windowsJoel Brobecker2-4/+10
This should fix a build failure reported on x86_64-mingw32 by Daniel Calcoen due to conflicting declarations of "open". This patch just renames the static global in sim/rx/gdb-if.c into "rx_sim_is_open". sim/rx/ChangeLog: * gdb-if.c (open): Rename to... (rx_sim_is_open): This. Replace all uses of "open" by uses of "rx_sim_is_open" throughout. Tested by rebuilding on x86_64-linux.
2015-01-15Automatic date update in version.inGDB Administrator1-1/+1
2015-01-14Merge include/libiberty.h from GCCJan-Benedict Glaw2-0/+44
This pulls in some missing prototypes and also adds corresponding entries to the ChangeLog file. Please note that for one function, strverscmp(), the ChangeLog entry was already there, but the actual prototype wasn't. These ChangeLog entries are added: 2014-10-28 Yury Gribov <y.gribov@samsung.com> * libiberty.h (strtol, strtoul, strtoll, strtoull): New prototypes. 2014-10-15 David Malcolm <dmalcolm@redhat.com> * libiberty.h (choose_tmpdir): New prototype.
2015-01-14PR17525 - breakpoint commands not executed when program run from -x scriptPedro Alves6-2/+147
Executing a gdb script that runs the inferior (from the command line with -x), and has it hit breakpoints with breakpoint commands that themselves run the target, is currently broken on async targets (Linux, remote). While we're executing a command list or a script, we force the interpreter to be sync, which results in some functions nesting an event loop and waiting for the target to stop, instead of returning immediately and having the top level event loop handle the stop. The issue with this bug is simply that bpstat_do_actions misses checking whether the interpreter is sync. When we get here, in the case of executing a script (or, when the interpreter is sync), the program has already advanced to the next breakpoint, through maybe_wait_sync_command_done. We need to process its breakpoints immediately, just like with a sync target. Tested on x86_64 Fedora 20. gdb/ 2015-01-14 Pedro Alves <palves@redhat.com> PR gdb/17525 * breakpoint.c: Include "interps.h". (bpstat_do_actions_1): Also check whether the interpreter is async. gdb/testsuite/ 2015-01-14 Pedro Alves <palves@redhat.com> Joel Brobecker <brobecker@adacore.com> PR gdb/17525 * gdb.base/bp-cmds-execution-x-script.c: New file. * gdb.base/bp-cmds-execution-x-script.exp: New file. * gdb.base/bp-cmds-execution-x-script.gdb: New file.
2015-01-14PR cli/17828: -batch -ex r breaks terminalPedro Alves5-0/+230
Commit d3d4baed (PR python/17372 - Python hangs when displaying help()) had the side effect of causing 'gdb -batch' to leave the terminal in the wrong state if the program was run. E.g,. $ echo 'main(){*(int*)0=0;}' | gcc -x c -; ./gdb/gdb -batch -ex r ./a.out Program received signal SIGSEGV, Segmentation fault. 0x00000000004004ff in main () $ If you start typing the next command, seemingly nothing happens - GDB left the terminal with echo disabled. The issue is that that "r" ends up in fetch_inferior_event, which calls reinstall_readline_callback_handler_cleanup, which causes readline to prep the terminal (raw, echo disabled). But "-batch" causes GDB to exit before the top level event loop is first started, and then nothing de-preps the terminal. The reinstall_readline_callback_handler_cleanup function's intro comment mentions: "Need to do this as we go back to the event loop, ready to process further input." but the implementation forgets the case of when the interpreter is sync, which indicates we won't return to the event loop yet, or as in the case of -batch, we have not started it yet. The fix is to not install the readline callback in that case. For the test, in this case, checking that command echo still works is sufficient. Comparing stty output before/after running GDB is even better. Because stty may not be available, the test tries both ways. In any case, since expect's spawn (what we use to start gdb) creates a new pseudo tty, another expect spawn or tcl exec after GDB exits would not see the wrong terminal settings. So instead, the test spawns a shell and runs stty and GDB in it. Tested on x86_64 Fedora 20. gdb/ 2015-01-14 Pedro Alves <palves@redhat.com> PR cli/17828 * infrun.c (reinstall_readline_callback_handler_cleanup): Don't reinstall if the interpreter is sync. gdb/testsuite/ 2015-01-14 Pedro Alves <palves@redhat.com> PR cli/17828 * gdb.base/batch-preserve-term-settings.c: New file. * gdb.base/batch-preserve-term-settings.exp: New file.
2015-01-14Automatic date update in version.inGDB Administrator1-1/+1
2015-01-13Bump GDB version number to 7.8.90.DATE-cvs.Joel Brobecker2-1/+5
gdb/ChangeLog: * version.in: Set GDB version number to 7.8.90.DATE-cvs.
2015-01-13Document the GDB 7.8.90 release in gdb/ChangeLogJoel Brobecker1-0/+4
gdb/ChangeLog: GDB 7.8.90 released.
2015-01-13gdb/testsuite: Make clean mostlyclean should not delete *.py.Joel Brobecker2-1/+5
A sanity-check in my release scripts caught something: After having created the tarballs, I verify that no checked-in file disappeared in the process, and lo and behod, it found that the following file got wiped: - gdb/testsuite/dg-extract-results.py: And it's not part of the tarball either. I don't understand while we delete all *.py files in gdb/testsuite, since I don't see a rule that expected to create one. A run of the testsuite also doesn't seem to be creating .py files there. I traced this to the following commit, which unfortunately provided no explanation. Perhaps we used to run some tests in the gdb/testsuite directory and caused files to be left behind there. Perhaps we still do today? In the meantime, Executive Decision: In order to allow me to create tarballs without losing files, I removed it. It's easy to put something back if we find out why it might still be needed. gdb/testsuite/ChangeLog: * Makefile.in (clean mostlyclean): Do not delete *.py. Tested on x86_64-linux by running the src-release.sh script again, and this time, dg-extract-results.py no longer gets wiped.
2015-01-13Set GDB version number to 7.8.90.Joel Brobecker2-1/+5
gdb/ChangeLog: * version.in: Set GDB version number to 7.8.90.
2015-01-13Set development mode to "off" by default.Joel Brobecker2-1/+5
bfd/ChangeLog: * development.sh (development): Set to false.
2015-01-13Bump version to 7.8.90.DATE-cvs.Joel Brobecker2-1/+6
Now that the GDB 7.9 branch has been created, we can bump the version number. gdb/ChangeLog: GDB 7.9 branch created (92fc2e6978d9a7c8324c7e851dbee59e22ec7a37): * version.in: Bump version to 7.8.90.DATE-cvs.
2015-01-13[ARI] Remove trailing new-line in argument of call to warning.gdb-7.9-branchpointJoel Brobecker2-1/+6
gdb/ChangeLog: * nat/linux-procfs.c (linux_proc_attach_tgid_threads): Remove trailing new-line in argument of call to warning.
2015-01-13[ARI] Remove trailing new-line in argument of call to warning.Joel Brobecker2-1/+6
gdb/ChangeLog: * linux-nat.c (attach_proc_task_lwp_callback): Remove trailing new-line in argument of call to "warning".
2015-01-13[python/Ada] gdb.lookup_type fails to looking primitive typeJoel Brobecker4-1/+100
The following change... commit 1994afbf19892c9e614a034fbf1a5233e9addce3 Date: Tue Dec 23 07:55:39 2014 -0800 Subject: Look up primitive types as symbols. ... caused the following regression: % gdb (gdb) set lang ada (gdb) python print gdb.lookup_type('character') Traceback (most recent call last): File "<string>", line 1, in <module> gdb.error: No type named character. Error while executing Python code. This is because the language_lookup_primitive_type_as_symbol call was moved to the la_lookup_symbol_nonlocal hook. A couple of implementations have been upated accordingly, but the Ada version has not. This patch fixes this omission. gdb/ChangeLog: * ada-lang.c (ada_lookup_symbol_nonlocal): If name not found in static block, then try searching for primitive types. gdb/testsuite/ChangeLog: * gdb.python/py-lookup-type.exp: New file.
2015-01-13Automatic date update in version.inGDB Administrator1-1/+1
2015-01-12Append to input history file instead of overwriting itPatrick Palka4-4/+84
This patch makes readline append new history lines to the GDB history file on exit instead of overwriting the entire history file on exit. This change allows us to run multiple simultaneous GDB sessions without having each session overwrite the added history of each other session on exit. Care must be taken to ensure that the history file doesn't get corrupted when multiple GDB processes are trying to simultaneously append to and then truncate it. Safety is achieved in such a situation by using an intermediate local history file to mutually exclude multiple processes from simultaneously performing write operations on the global history file. gdb/ChangeLog: * top.h (gdb_add_history): Declare. * top.c (command_count): New variable. (gdb_add_history): New function. (gdb_safe_append_history): New static function. (quit_force): Call it. (command_line_input): Use gdb_add_history instead of add_history. * event-top.c (command_line_handler): Likewise.
2015-01-12Properly check abbrev sizeH.J. Lu2-4/+9
abbrev_base is independent of abbrev_size. We should use abbrev_base + abbrev_size to check abbrev section size. * dwarf.c (process_debug_info): Properly check abbrev size.
2015-01-12Another fix for memory access errors trigegred by running readelf on a ↵Nick Clifton2-22/+39
corrupt binary. PR binutils/17531 * dwarf.c (display_debug_addr): Use xcalloc to allocate the debug_addr_info array. Check for an address_base that is too large.
2015-01-12[darwin/gdb] Use <setjmp.h> instead of <machine/setjmp.h>James Clarke2-1/+7
The `machine/setjmp.h' header is no longer present on OS X 10.10, and is non-standard. Instead, `darwin-nat.c' should be using the standard `setjmp.h' header. gdb/ChangeLog: 2015-01-12 James Clarke <jrtc27@jrtc27.com> (tiny patch) PR gdb/17046 * darwin-nat.c: Replace <machine/setjmp.h> #include by <setjmp.h> #include.
2015-01-12gdb.python/py-prompt.exp: restore GDBFLAGSPedro Alves2-0/+6
The previous change to py-prompt.exp made it return without restoring GDBFLAGS, resulting in breaking the following tests: $ make check RUNTESTFLAGS="--target_board=native-gdbserver --directory=gdb.python" ... Running src/gdb/testsuite/gdb.python/py-prompt.exp ... Running src/gdb/testsuite/gdb.python/py-section-script.exp ... ERROR: (timeout) GDB never initialized after 10 seconds. ERROR: no fileid for gdbuild ERROR: Couldn't send python print ('test') to GDB. ERROR: no fileid for gdbuild ERROR: Couldn't send python print (sys.version_info[0]) to GDB. ERROR: no fileid for gdbuild ERROR: Couldn't send python print (sys.version_info[1]) to GDB. ERROR: no fileid for gdbuild ERROR: no fileid for gdbuild ... gdb/testsuite/ 2015-01-12 Pedro Alves <palves@redhat.com> * gdb.python/py-prompt.exp: When the board can't spawn for attach, restore GDBFLAGS before returning.
2015-01-12More fixes for memory access errors when running readelf on fuzzed binaries.Nick Clifton3-3/+30
PR binutils/17531 * dwarf.c (process_debug_info): Check for abbrev_base being larger than the section size. (process_cu_tu_index): Use xcalloc2 to allocate the CU and TU arrays. (xcalloc2): New function. Like xcalloc, but checks for overflow. * dwarf.h (xcalloc2): Prototype.
2015-01-12gas: allow labeling of CFI instructionsJan Beulich9-2/+130
When runtime patching code (like e.g. done by the Linux kernel) there may be cases where the set of stack frame alterations differs between unpatched and patched code. Consequently the corresponding unwind data needs patching too. Locating the right places within an FDE, however, is rather cumbersome without a way to insert labels in the resulting section. Hence this patch introduces a new directive, .cfi_label. Note that with the way CFI data gets emitted currently (at the end of the assembly process) this can't support local FB- and dollar-labels. gas/ 2015-01-12 Jan Beulich <jbeulich@suse.com> * gas/dw2gencfi.c (cfi_add_label, dot_cfi_label): New. (cfi_pseudo_table): Add "cfi_label". (output_cfi_insn): Handle CFI_label. (select_cie_for_fde): Als terminate CIE when encountering CFI_label. * dw2gencfi.h (cfi_add_label): Declare. (struct cfi_insn_data): New member "sym_name". (CFI_label): New. * read.c (read_symbol_name): Drop "static". * read.h (read_symbol_name): Declare. gas/testsuite/ 2015-01-12 Jan Beulich <jbeulich@suse.com> gas/cfi/cfi-label.d, gas/cfi/cfi-label.s: New. gas/cfi/cfi.exp: Run new tests.
2015-01-12Fix GDB crash caused by discarding grouped debug sectionsTerry Guo2-6/+57
Keep a group containing just debug sections or the other special sections we currently mark against garbage collection. * elflink.c (_bfd_elf_gc_mark_debug_special_section_group): New function. (_bfd_elf_gc_mark_extra_sections): Use it.