aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-05-03Fix gdb/python/python.c use-after-freePedro Alves2-1/+10
Valgrind shows: ==26964== Invalid read of size 1 ==26964== at 0x6E14100: __GI_strcmp (strcmp.S:180) ==26964== by 0x6DB55AA: setlocale (setlocale.c:238) ==26964== by 0x4E0455: _initialize_python() (python.c:1731) ==26964== by 0x786731: initialize_all_files() (init.c:319) ==26964== by 0x72EF0A: gdb_init(char*) (top.c:1929) ==26964== by 0x60BCAC: captured_main(void*) (main.c:863) ==26964== by 0x606AD5: catch_errors(int (*)(void*), void*, char*, return_mask) (exceptions.c:234) ==26964== by 0x60C608: gdb_main(captured_main_args*) (main.c:1165) ==26964== by 0x40CAEC: main (gdb.c:32) ==26964== Address 0x81d30a0 is 0 bytes inside a block of size 181 free'd ==26964== at 0x4C29CF0: free (vg_replace_malloc.c:530) ==26964== by 0x6DB5B65: setname (setlocale.c:201) ==26964== by 0x6DB5B65: setlocale (setlocale.c:388) ==26964== by 0x4E037F: _initialize_python() (python.c:1712) ==26964== by 0x786731: initialize_all_files() (init.c:319) ==26964== by 0x72EF0A: gdb_init(char*) (top.c:1929) ==26964== by 0x60BCAC: captured_main(void*) (main.c:863) ==26964== by 0x606AD5: catch_errors(int (*)(void*), void*, char*, return_mask) (exceptions.c:234) ==26964== by 0x60C608: gdb_main(captured_main_args*) (main.c:1165) ==26964== by 0x40CAEC: main (gdb.c:32) The problem is doing this: oldloc = setlocale (LC_ALL, NULL); setlocale (LC_ALL, ""); ... setlocale (LC_ALL, oldloc); I.e., the second setlocale call frees 'oldloc'. From http://pubs.opengroup.org/onlinepubs/9699919799/functions/setlocale.html : "The returned string pointer might be invalidated or the string content might be overwritten by a subsequent call to setlocale()." gdb/ChangeLog: 2016-05-03 Pedro Alves <palves@redhat.com> PR python/20037 * python/python.c (_initialize_python) [IS_PY3K]: xstrdup/xfree oldloc.
2016-05-03Remove gdb/python/python.c code that handles strlen failing with -1Pedro Alves2-5/+5
This makes no sense -- strlen doesn't really ever fail with -1. gdb/ChangeLog: 2016-05-03 Pedro Alves <palves@redhat.com> * python/python.c (_initialize_python) [IS_PY3K]: Remove dead code.
2016-05-03[gdb] Fix -Wparentheses warningsKyrylo Tkachov2-37/+50
2016-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * symfile.c (find_pc_overlay): Add braces to avoid -Wparentheses warning. (find_pc_mapped_section): Likewise. (list_overlays_command): Likewise.
2016-05-03Automatic date update in version.inGDB Administrator1-1/+1
2016-05-02Automatic date update in version.inGDB Administrator1-1/+1
2016-05-01Automatic date update in version.inGDB Administrator1-1/+1
2016-04-30Automatic date update in version.inGDB Administrator1-1/+1
2016-04-29Automatic date update in version.inGDB Administrator1-1/+1
2016-04-28Automatic date update in version.inGDB Administrator1-1/+1
2016-04-27Workaround gdbserver<7.7 for setfsJan Kratochvil2-0/+23
With current FSF GDB HEAD and old FSF gdbserver I expected I could do: gdb -ex 'file target:/root/redhat/threadit' -ex 'target remote :1234' (supplying that unsupported qXfer:exec-file:read by "file") But that does not work because: Sending packet: $vFile:setfs:0#bf...Packet received: OK Packet vFile:setfs (hostio-setfs) is supported ... Sending packet: $vFile:setfs:104#24...Packet received: OK "target:/root/redhat/threadit": could not open as an executable file: Invalid argument GDB documentation says: The valid responses to Host I/O packets are: An empty response indicates that this operation is not recognized. This "empty response" vs. "OK" was a bug in gdbserver < 7.7. It was fixed by: commit e7f0d979dd5cc4f8b658df892e93db69d6d660b7 Author: Yao Qi <yao@codesourcery.com> Date: Tue Dec 10 21:59:20 2013 +0800 Fix a bug in matching notifications. Message-ID: <1386684626-11415-1-git-send-email-yao@codesourcery.com> https://sourceware.org/ml/gdb-patches/2013-12/msg00373.html 2013-12-10 Yao Qi <yao@codesourcery.com> * notif.c (handle_notif_ack): Return 0 if no notification matches. with unpatched old FSF gdbserver and patched FSF GDB HEAD: gdb -ex 'file target:/root/redhat/threadit' -ex 'target remote :1234' Sending packet: $vFile:setfs:0#bf...Packet received: OK Packet vFile:setfs (hostio-setfs) is NOT supported ... (gdb) info sharedlibrary From To Syms Read Shared Object Library 0x00007ffff7ddbae0 0x00007ffff7df627a Yes (*) target:/lib64/ld-linux-x86-64.so.2 0x00007ffff7bc48a0 0x00007ffff7bcf514 Yes (*) target:/lib64/libpthread.so.0 gdb/ChangeLog 2016-04-27 Jan Kratochvil <jan.kratochvil@redhat.com> * remote.c (remote_start_remote): Detect PACKET_vFile_setfs.support.
2016-04-27Automatic date update in version.inGDB Administrator1-1/+1
2016-04-26Automatic date update in version.inGDB Administrator1-1/+1
2016-04-25Automatic date update in version.inGDB Administrator1-1/+1
2016-04-24Automatic date update in version.inGDB Administrator1-1/+1
2016-04-23Automatic date update in version.inGDB Administrator1-1/+1
2016-04-22Automatic date update in version.inGDB Administrator1-1/+1
2016-04-21Automatic date update in version.inGDB Administrator1-1/+1
2016-04-20Automatic date update in version.inGDB Administrator1-1/+1
2016-04-19Automatic date update in version.inGDB Administrator1-1/+1
2016-04-18Automatic date update in version.inGDB Administrator1-1/+1
2016-04-17Automatic date update in version.inGDB Administrator1-1/+1
2016-04-16Automatic date update in version.inGDB Administrator1-1/+1
2016-04-16MIPS/Linux: Also recognize TRAP_BRKPT and TRAP_HWBKPTPedro Alves2-4/+13
This makes the MIPS Linux backends recognize TRAP_BRKPT and TRAP_HWBKPT in siginfo.si_code in addition to SI_KERNEL, since Linux 4.6 now reports the finer-grained si_code values too. Refs: https://sourceware.org/ml/gdb-patches/2016-02/msg00756.html https://sourceware.org/ml/gdb-patches/2016-04/msg00090.html On kernels that report SI_KERNEL (<= 4.5), we'll enter the "ambiguous" path of save_stop_reason: if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code) && GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code)) { /* The si_code is ambiguous on this arch -- check debug registers. */ if (!check_stopped_by_watchpoint (lp)) lp->stop_reason = TARGET_STOPPED_BY_SW_BREAKPOINT; } while on kernels that report the finer-grained si_code values (>= 4.6), we'll enter the corresponding branches: else if (GDB_ARCH_IS_TRAP_BRKPT (siginfo.si_code)) { } else if (GDB_ARCH_IS_TRAP_HWBKPT (siginfo.si_code)) { ... gdb/ChangeLog: 2016-04-15 Pedro Alves <palves@redhat.com> * nat/linux-ptrace.h [__mips__] (GDB_ARCH_IS_TRAP_BRKPT): Also accept TRAP_BRKPT. [__mips__] (GDB_ARCH_IS_TRAP_HWBKPT): Also accept TRAP_HWBKPT.
2016-04-16Handle MIPS Linux SIGTRAP siginfo.si_code valuesPedro Alves5-185/+203
This unbreaks pending/delayed breakpoints handling, as well as hardware watchpoints, on MIPS. Ref: https://sourceware.org/ml/gdb-patches/2016-02/msg00681.html The MIPS kernel reports SI_KERNEL for all kernel generated traps, instead of TRAP_BRKPT / TRAP_HWBKPT, but GDB isn't aware of this. Basically, this commit: - Folds watchpoints logic into check_stopped_by_breakpoint, and renames it to save_stop_reason. - Adds GDB_ARCH_IS_TRAP_HWBKPT. - Makes MIPS set both GDB_ARCH_IS_TRAP_BRPT and GDB_ARCH_IS_TRAP_HWBKPT to SI_KERNEL. In save_stop_reason, we handle the case of the same si_code returning true for both TRAP_BRPT and TRAP_HWBKPT by looking at what the debug registers say. Tested on x86-64 Fedora 20, native and gdbserver. gdb/ChangeLog: 2016-04-15 Pedro Alves <palves@redhat.com> * linux-nat.c (save_sigtrap) Delete. (stop_wait_callback): Call save_stop_reason instead of save_sigtrap. (check_stopped_by_breakpoint): Rename to ... (save_stop_reason): ... this. Bits of save_sigtrap folded here. Use GDB_ARCH_IS_TRAP_HWBKPT and handle ambiguous GDB_ARCH_IS_TRAP_BRKPT / GDB_ARCH_IS_TRAP_HWBKPT. Factor out common code between the USE_SIGTRAP_SIGINFO and !USE_SIGTRAP_SIGINFO blocks. (linux_nat_filter_event): Call save_stop_reason instead of save_sigtrap. * nat/linux-ptrace.h: Check for both SI_KERNEL and TRAP_BRKPT si_code for MIPS. * nat/linux-ptrace.h: Fix "TRAP_HWBPT" typo in x86 table. Add comments on MIPS behavior. (GDB_ARCH_IS_TRAP_HWBKPT): Define for all archs. gdb/gdbserver/ChangeLog: 2016-04-15 Pedro Alves <palves@redhat.com> * linux-low.c (check_stopped_by_breakpoint): Rename to ... (save_stop_reason): ... this. Use GDB_ARCH_IS_TRAP_HWBKPT and handle ambiguous GDB_ARCH_IS_TRAP_BRKPT / GDB_ARCH_IS_TRAP_HWBKPT. Factor out common code between the USE_SIGTRAP_SIGINFO and !USE_SIGTRAP_SIGINFO blocks. (linux_low_filter_event): Call save_stop_reason instead of check_stopped_by_breakpoint and check_stopped_by_watchpoint. Update comments. (linux_wait_1): Update comments.
2016-04-15Automatic date update in version.inGDB Administrator1-1/+1
2016-04-14Automatic date update in version.inGDB Administrator1-1/+1
2016-04-13Fix PR remote/19840: gdb crashes on reverse-stepiPedro Alves2-0/+32
Reverse debugging against a remote target that does reverse debugging itself (with the bs/bc packets) always trips on: (gdb) target remote localhost:... (gdb) reverse-stepi ../../gdb/target.c:602: internal-error: default_execution_direction: to_execution_direction must be implemented for reverse async I missed adding a to_execution_direction method to remote.c in commit 3223143295b5 (Adds target_execution_direction to make record targets support async mode), GDB 7.4 time. Later, GDB 7.8 switched to target-async on by default, making the regression user-visible by default too. Fix is simply to add the missing to_execution_direction implementation to target remote. Tested by Andi Kleen against Simics. gdb/ChangeLog: 2016-04-13 Pedro Alves <palves@redhat.com> PR remote/19840 * remote.c (struct remote_state) <last_resume_exec_dir>: New field. (new_remote_state): Default last_resume_exec_dir to EXEC_FORWARD. (remote_open_1): Reset last_resume_exec_dir to EXEC_FORWARD. (remote_resume): Store the last execution direction. (remote_execution_direction): New function. (init_remote_ops): Install it as to_execution_direction target_ops method.
2016-04-13Automatic date update in version.inGDB Administrator1-1/+1
2016-04-12Automatic date update in version.inGDB Administrator1-1/+1
2016-04-11Automatic date update in version.inGDB Administrator1-1/+1
2016-04-10Automatic date update in version.inGDB Administrator1-1/+1
2016-04-09Automatic date update in version.inGDB Administrator1-1/+1
2016-04-08Automatic date update in version.inGDB Administrator1-1/+1
2016-04-07Automatic date update in version.inGDB Administrator1-1/+1
2016-04-06Automatic date update in version.inGDB Administrator1-1/+1
2016-04-05Automatic date update in version.inGDB Administrator1-1/+1
2016-04-04Automatic date update in version.inGDB Administrator1-1/+1
2016-04-03Automatic date update in version.inGDB Administrator1-1/+1
2016-04-02Automatic date update in version.inGDB Administrator1-1/+1
2016-04-01Automatic date update in version.inGDB Administrator1-1/+1
2016-03-31Add regression test for PR gdb/19858 (JIT code registration on attach)Pedro Alves3-10/+97
This test would fail without the previous gdb/jit.c fix: (gdb) attach 23031 Attaching to program: .../build/gdb/testsuite/outputs/gdb.base/jit/jit-main, process 23031 [...] 207 WAIT_FOR_GDB; i = 0; /* gdb break here 1 */ (gdb) PASS: gdb.base/jit.exp: attach: one_jit_test-2: attach set var wait_for_gdb = 0 (gdb) PASS: gdb.base/jit.exp: attach: one_jit_test-2: set var wait_for_gdb = 0 info function ^jit_function All functions matching regular expression "^jit_function": (gdb) FAIL: gdb.base/jit.exp: attach: one_jit_test-2: info function ^jit_function gdb/testsuite/ChangeLog: 2016-03-31 Pedro Alves <palves@redhat.com> PR gdb/19858 * gdb.base/jit-main.c: Include unistd.h. (ATTACH): Define to 0 if not already defined. (wait_for_gdb, mypid): New globals. (WAIT_FOR_GDB): New macro. (MAIN): Set an alarm. Store the process's pid. Wait for GDB at some breakpoint locations. * gdb.base/jit.exp (clean_reattach, continue_to_test_location): New procedures. (one_jit_test): Add REATTACH parameter, and handle it. Use continue_to_test_location. (top level): Test attach, and adjusts calls to one_jit_test.
2016-03-31Make gdb.base/jit.exp binaries uniquePedro Alves2-9/+17
This testcase compiles the same program and library differently multiple times using the same file names. Make them unique, to make it easier to debug test problems. gdb/testsuite/ChangeLog: 2016-03-31 Pedro Alves <palves@redhat.com> PR gdb/19858 * gdb.base/jit.exp (compile_jit_test): Add intro comment. Add BINSUFFIX parameter, and handle it. (top level): Adjust calls compile_jit_test.
2016-03-31Fix PR gdb/19858: GDB doesn't register the JIT libraries on attachYichao Yu2-2/+20
Ref: https://sourceware.org/ml/gdb/2016-03/msg00023.html GDB currently fails to fetch the list of already-registered JIT modules on attach. Nothing is calling jit_inferior_init, which is what is responsible for walking the JIT object list at init time. Despite the misleading naming, jit_inferior_created_hook -> jit_inferior_init is only called when the inferior execs. This regressed with the fix for PR gdb/13431 (03bef283c2d3): https://sourceware.org/ml/gdb-patches/2012-02/msg00023.html which removed the inferior_created (jit_inferior_created_observer) observer. Adding an inferior_created observer back fixes the issue. In turn, this exposes a bug in jit_breakpoint_re_set_internal as well, which is returning the wrong result when we already have the breakpoint at the right address. gdb/ChangeLog: 2016-03-31 Yichao Yu <yyc1992@gmail.com> PR gdb/19858 * jit.c (jit_breakpoint_re_set_internal): Return 0 if we already got the breakpoint at the right address. (jit_inferior_created): New function. (_initialize_jit): Install jit_inferior_created as inferior_created observer. Signed-off-by: Pedro Alves <palves@redhat.com>
2016-03-31Automatic date update in version.inGDB Administrator1-1/+1
2016-03-30Automatic date update in version.inGDB Administrator1-1/+1
2016-03-29Automatic date update in version.inGDB Administrator1-1/+1
2016-03-28Automatic date update in version.inGDB Administrator1-1/+1
2016-03-27Automatic date update in version.inGDB Administrator1-1/+1
2016-03-26Automatic date update in version.inGDB Administrator1-1/+1
2016-03-25Automatic date update in version.inGDB Administrator1-1/+1