aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-07-11Move duplicated code into new filesGary Benson9-1068/+718
This commit moves the duplicated code in {i386,amd64}-linux-nat.c into the new files x86-linux-nat.[ch]. Additionally, a new file i386-linux-nat.h was required to expose a value required by the 32-bit code in x86-linux-nat.c. gdb/ 2014-07-11 Gary Benson <gbenson@redhat.com> * i386-linux-nat.h: New file. * x86-linux-nat.h: Likewise. * x86-linux-nat.c: Likewise. * Makefile.in (HFILES_NO_SRCDIR): Add the above new headers. * config/i386/linux.mh (NATDEPFILES): Add x86-linux-nat.o. * config/i386/linux64.mh (NATDEPFILES): Likewise. * amd64-linux-nat.c (x86-linux-nat.h): New include. (PTRACE_GETREGSET): Now in x86-linux-nat.h. (PTRACE_SETREGSET): Likewise. (arch_lwp_info): Now in x86-linux-nat.c. (have_ptrace_getregset): Now in x86-linux-nat.h. (x86_linux_dr_get): Now in x86-linux-nat.c. (x86_linux_dr_set): Likewise. (x86_linux_dr_get_addr): Likewise. (x86_linux_dr_get_control): Likewise. (x86_linux_dr_get_status): Likewise. (update_debug_registers_callback): Likewise. (x86_linux_dr_set_control): Likewise. (x86_linux_dr_set_addr): Likewise. (x86_linux_prepare_to_resume): Likewise. (x86_linux_new_thread): Likewise. (x86_linux_new_fork): Likewise. (x86_linux_get_thread_area): Likewise. (super_post_startup_inferior): Likewise. (x86_linux_child_post_startup_inferior): Likewise. (AMD64_LINUX_USER64_CS): Likewise. (AMD64_LINUX_X32_DS): Likewise. (x86_linux_read_description): Likewise. (x86_linux_enable_btrace): Likewise. (x86_linux_disable_btrace): Likewise. (x86_linux_teardown_btrace): Likewise. (x86_linux_read_btrace): Likewise. (x86_linux_create_target): Likewise. (x86_linux_add_target): Likewise. * i386-linux-nat.c (x86-linux-nat.h): New include. (PTRACE_GETREGSET): Now in x86-linux-nat.h. (PTRACE_SETREGSET): Likewise. (arch_lwp_info): Now in x86-linux-nat.c. (have_ptrace_getregset): Now in x86-linux-nat.h. (x86_linux_dr_get): Now in x86-linux-nat.c. (x86_linux_dr_set): Likewise. (x86_linux_dr_get_addr): Likewise. (x86_linux_dr_get_control): Likewise. (x86_linux_dr_get_status): Likewise. (update_debug_registers_callback): Likewise. (x86_linux_dr_set_control): Likewise. (x86_linux_dr_set_addr): Likewise. (x86_linux_prepare_to_resume): Likewise. (x86_linux_new_thread): Likewise. (x86_linux_new_fork): Likewise. (x86_linux_get_thread_area): Likewise. (super_post_startup_inferior): Likewise. (x86_linux_child_post_startup_inferior): Likewise. (AMD64_LINUX_USER64_CS): Likewise. (AMD64_LINUX_X32_DS): Likewise. (x86_linux_read_description): Likewise. (x86_linux_enable_btrace): Likewise. (x86_linux_disable_btrace): Likewise. (x86_linux_teardown_btrace): Likewise. (x86_linux_read_btrace): Likewise. (x86_linux_create_target): Likewise. (x86_linux_add_target): Likewise.
2014-07-11Comment and whitespace changesGary Benson3-3/+20
This commit merges the comments and whitespace in the common parts of i386-linux-nat.c and amd64-linux-nat.c. gdb/ 2014-07-11 Gary Benson <gbenson@redhat.com> * amd64-linux-nat.c: Comment and whitespace changes. * i386-linux-nat.c: Comment and whitespace changes.
2014-07-11Pull out common parts of _initialize_{i386,amd64}_linux_natGary Benson3-40/+89
This commit adds two new helpers, x86_linux_create_target and x86_linux_add_target, to hold the parts of _initialize_i386_linux_nat and _initialize_amd64_linux_nat which are common. gdb/ 2014-07-11 Gary Benson <gbenson@redhat.com> * amd64-linux-nat.c (x86_linux_create_target): New function. (x86_linux_add_target): Likewise. (_initialize_amd64_linux_nat): Delegate to the above new functions. * i386-linux-nat.c (x86_linux_create_target): New function. (x86_linux_add_target): Likewise. (_initialize_i386_linux_nat): Delegate to the above new functions.
2014-07-11Merge ps_get_thread_areaGary Benson3-28/+88
This commit adds a new helper, x86_linux_get_thread_area, to hold the common parts of the ps_get_thread_area functions in i386-linux-nat.c and amd64-linux-nat.c. gdb/ 2014-07-11 Gary Benson <gbenson@redhat.com> * amd64-linux-nat.c (x86_linux_get_thread_area): New function. (ps_get_thread_area): Delegate to the above in 32-bit mode. * i386-linux-nat.c (x86_linux_get_thread_area): New function. (ps_get_thread_area): Delegate to the above.
2014-07-11Merge {i386,amd64}_linux_read_descriptionGary Benson3-92/+198
This commit merges i386_ and amd64_linux_read_description, renaming both to x86_linux_read_description. gdb/ 2014-07-11 Gary Benson <gbenson@redhat.com> * amd64-linux-nat.c (amd64_linux_read_description): Renamed to x86_linux_read_description. All uses updated. amd64-specific code conditionalized. Conditionalized i386-specific code added. Redundant cast removed. * i386-linux-nat.c (i386_linux_read_description): Renamed to x86_linux_read_description. All uses updated. i386-specific code conditionalized. Conditionalized amd64-specific code added. One sizeof replaced with the actual type it is describing.
2014-07-11Rename identical functionsGary Benson3-80/+143
amd64-linux-nat.c and i386-linux-nat.c contain a number of functions which are identical but for prefix on their names. This commit renames all such functions to have the prefix x86_ instead of the prefixes amd64_ or i386_ and updates all uses of those functions. The now-identical x86_ functions will be pulled out to a separate shared file in a later commit. gdb/ 2014-07-11 Gary Benson <gbenson@redhat.com> * amd64-linux-nat.c (amd64_linux_dr_get): Renamed to x86_linux_dr_get. All uses updated. (amd64_linux_dr_set): Renamed to x86_linux_dr_set. All uses updated. (amd64_linux_dr_get_addr): Renamed to x86_linux_dr_get_addr. All uses updated. (amd64_linux_dr_get_control): Renamed to x86_linux_dr_get_control. All uses updated. (amd64_linux_dr_get_status): Renamed to x86_linux_dr_get_status. All uses updated. (amd64_linux_dr_set_control): Renamed to x86_linux_dr_set_control. All uses updated. (amd64_linux_dr_set_addr): Renamed to x86_linux_dr_set_addr. All uses updated. (amd64_linux_prepare_to_resume): Renamed to x86_linux_prepare_to_resume. All uses updated. (amd64_linux_new_thread): Renamed to x86_linux_new_thread. All uses updated. (amd64_linux_new_fork): Renamed to x86_linux_new_fork. All uses updated. (amd64_linux_child_post_startup_inferior): Renamed to x86_linux_child_post_startup_inferior. All uses updated. (amd64_linux_enable_btrace): Renamed to x86_linux_enable_btrace. All uses updated. (amd64_linux_disable_btrace): Renamed to x86_linux_disable_btrace. All uses updated. (amd64_linux_teardown_btrace): Renamed to x86_linux_teardown_btrace. All uses updated. (amd64_linux_read_btrace): Renamed to x86_linux_read_btrace. All uses updated. * i386-linux-nat.c (i386_linux_dr_get): Renamed to x86_linux_dr_get. All uses updated. (i386_linux_dr_set): Renamed to x86_linux_dr_set. All uses updated. (i386_linux_dr_get_addr): Renamed to x86_linux_dr_get_addr. All uses updated. (i386_linux_dr_get_control): Renamed to x86_linux_dr_get_control. All uses updated. (i386_linux_dr_get_status): Renamed to x86_linux_dr_get_status. All uses updated. (i386_linux_dr_set_control): Renamed to x86_linux_dr_set_control. All uses updated. (i386_linux_dr_set_addr): Renamed to x86_linux_dr_set_addr. All uses updated. (i386_linux_prepare_to_resume): Renamed to x86_linux_prepare_to_resume. All uses updated. (i386_linux_new_thread): Renamed to x86_linux_new_thread. All uses updated. (i386_linux_new_fork): Renamed to x86_linux_new_fork. All uses updated. (i386_linux_child_post_startup_inferior): Renamed to x86_linux_child_post_startup_inferior. All uses updated. (i386_linux_enable_btrace): Renamed to x86_linux_enable_btrace. All uses updated. (i386_linux_disable_btrace): Renamed to x86_linux_disable_btrace. All uses updated. (i386_linux_teardown_btrace): Renamed to x86_linux_teardown_btrace. All uses updated. (i386_linux_read_btrace): Renamed to x86_linux_read_btrace. All uses updated.
2014-07-11Don't print symbol on address 0x0Yao Qi2-1/+7
We see the following fails on arm-none-eabi target, print (void*)v_signed_char^M $190 = (void *) 0x0 <_ftext>^M (gdb) FAIL: gdb.base/exprs.exp: print (void*)v_signed_char (print (void*)v_signed_char) GDB behaves correctly but the test assumes there is no symbol on address 0x0. This patch is set print symbol off, so that tests below can match the address only. gdb/testsuite: 2014-07-11 Yao Qi <yao@codesourcery.com> * gdb.base/exprs.exp: "set print symbol off".
2014-07-11GDBserver crashes when killing a multi-thread processPedro Alves5-26/+194
Here's an example, with the new test: gdbserver :9999 gdb.threads/kill gdb gdb.threads/kill (gdb) b 52 Breakpoint 1 at 0x4007f4: file kill.c, line 52. Continuing. Breakpoint 1, main () at kill.c:52 52 return 0; /* set break here */ (gdb) k Kill the program being debugged? (y or n) y gdbserver :9999 gdb.threads/kill Process gdb.base/watch_thread_num created; pid = 9719 Listening on port 1234 Remote debugging from host 127.0.0.1 Killing all inferiors Segmentation fault (core dumped) Backtrace: (gdb) bt #0 0x00000000004068a0 in find_inferior (list=0x66b060 <all_threads>, func=0x427637 <kill_one_lwp_callback>, arg=0x7fffffffd3fc) at src/gdb/gdbserver/inferiors.c:199 #1 0x00000000004277b6 in linux_kill (pid=15708) at src/gdb/gdbserver/linux-low.c:966 #2 0x000000000041354d in kill_inferior (pid=15708) at src/gdb/gdbserver/target.c:163 #3 0x00000000004107e9 in kill_inferior_callback (entry=0x6704f0) at src/gdb/gdbserver/server.c:2934 #4 0x0000000000406522 in for_each_inferior (list=0x66b050 <all_processes>, action=0x4107a6 <kill_inferior_callback>) at src/gdb/gdbserver/inferiors.c:57 #5 0x0000000000412377 in process_serial_event () at src/gdb/gdbserver/server.c:3767 #6 0x000000000041267c in handle_serial_event (err=0, client_data=0x0) at src/gdb/gdbserver/server.c:3880 #7 0x00000000004189ff in handle_file_event (event_file_desc=4) at src/gdb/gdbserver/event-loop.c:434 #8 0x00000000004181c6 in process_event () at src/gdb/gdbserver/event-loop.c:189 #9 0x0000000000418f45 in start_event_loop () at src/gdb/gdbserver/event-loop.c:552 #10 0x0000000000411272 in main (argc=3, argv=0x7fffffffd8d8) at src/gdb/gdbserver/server.c:3283 The problem is that linux_wait_for_event deletes lwps that have exited (even those not passed in as lwps of interest), while the lwp/thread list is being walked on with find_inferior. find_inferior can handle the current iterated inferior being deleted, but not others. When killing lwps, we don't really care about any of the pending status handling of linux_wait_for_event. We can just waitpid the lwps directly, which is also what GDB does (see linux-nat.c:kill_wait_callback). This way the lwps are not deleted while we're walking the list. They'll be deleted by linux_mourn afterwards. This crash triggers several times when running the testsuite against GDBserver with the native-gdbserver board (target remote), but as GDB can't distinguish between GDBserver crashing and "kill" being sucessful, as in both cases the connection is closed (the 'k' packet doesn't require a reply), and the inferior is gone, that results in no FAIL. The patch adds a generic test that catches the issue with extended-remote mode (and works fine with native testing too). Here's how it fails with the native-extended-gdbserver board without the fix: (gdb) info threads Id Target Id Frame 6 Thread 15367.15374 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 5 Thread 15367.15373 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 4 Thread 15367.15372 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 3 Thread 15367.15371 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 2 Thread 15367.15370 0x000000373bcbc98d in nanosleep () at ../sysdeps/unix/syscall-template.S:81 * 1 Thread 15367.15367 main () at .../gdb.threads/kill.c:52 (gdb) kill Kill the program being debugged? (y or n) y Remote connection closed ^^^^^^^^^^^^^^^^^^^^^^^^ (gdb) FAIL: gdb.threads/kill.exp: kill Extended remote should remain connected after the kill. gdb/gdbserver/ 2014-07-11 Pedro Alves <palves@redhat.com> * linux-low.c (kill_wait_lwp): New function, based on kill_one_lwp_callback, but use my_waitpid directly. (kill_one_lwp_callback, linux_kill): Use it. gdb/testsuite/ 2014-07-11 Pedro Alves <palves@redhat.com> * gdb.threads/kill.c: New file. * gdb.threads/kill.exp: New file.
2014-07-11remote: call remote_check_symbols after attachingAdrian Sendroiu2-0/+20
When debugging a remote bare-metal target with "target extended-remote" + attach, GDB won't send a qSymbol packet to initiate symbol lookup. This happens because all the previous places in which GDB might have done this are guarded by conditions that don't hold in the said scenario: there are no shared libraries, no vsyscall page and the binary file didn't change in the time passed between the "file" and the "attach" commands. To solve this problem remote_check_symbols is called in the target_post_attach hook. gdb/ 2014-07-11 Adrian Sendroiu <adrian.sendroiu@freescale.com> * remote.c (extended_remote_post_attach): New function. (init_extended_remote_ops): Install it as to_post_attach method.
2014-07-11daily updateAlan Modra1-1/+1
2014-07-10Revert gdbthread.h (any_running): Declare.Doug Evans3-20/+0
Not properly marked as 1/2. This reverts commit 1a76d598884a052dacd8feb49f1999e1a0d537f1.
2014-07-10 * gdbthread.h (any_running): Declare.Doug Evans3-0/+20
* thread.c (any_running): New function.
2014-07-10Fix xtensa ld segfault when linking linux modulesMax Filippov2-1/+7
is_inconsistent_linkonce_section makes an assumption that section name that starts with ".gnu.linkonce.prop." has one more dot in its suffix. However gas generates such section name by insertion of "prop." right after ".gnu.linkonce." part of the name of the original section. So, for section named ".gnu.linkonce.this_module" corresponding property section name does not satisfy the assumption. Such section names are common in linux modules. This bug was exposed by the patch "a35d5e8 Fix alignment for the first section frag on xtensa", that makes gas produce property section for each section that has ".align" directive in it. Use suffix that immediately follows ".gnu.linkonce.prop." when there are no more dots following it. 2014-07-10 Max Filippov <jcmvbkbc@gmail.com> ld/ * emultempl/xtensaelf.em (is_inconsistent_linkonce_section): correctly handle missing dot in section name after ".gnu.linkonce.prop.".
2014-07-10gas/ARM: Fix testsuite failure for arm-elfWill Newton4-19/+7
At some point the arm-elf output became the same as arm-eabi. Remove the special handling of arm-elf. gas/testsuite/ChangeLog: 2014-07-10 Will Newton <will.newton@linaro.org> * gas/elf/elf.exp: Remove special handling of arm-elf for section2 test. * gas/elf/section2.e-armeabi: Rename to... * gas/elf/section2.e-arm: ...here. * gas/elf/section2.e-armelf: Remove file.
2014-07-10Fix tests when configured for arm-linux and arm-elfWill Newton32-219/+259
With this change all gas and most ld tests pass when configured for arm-linux. It doesn't look like these configurations have been tested in a long time but this attempts to stem the bit-rot slightly. gas/testsuite/ChangeLog: 2014-07-10 Will Newton <will.newton@linaro.org> * gas/arm/bl-local-2.d: Only enable the test on EABI and NaCl configurations. * gas/arm/bl-local-v4t.d: Likewise. * gas/arm/blx-local.d: Likewise. * gas/arm/branch-reloc.d: Likewise. ld/testsuite/ChangeLog: 2014-07-10 Will Newton <will.newton@linaro.org> * ld-arm/arm-elf.exp (armelftests_nonacl): Move Cortex-A8 fix tests, IFUNC tests and other EABI requiring tests to... (armeabitests_nonacl): ...here. * ld-arm/arm-app-abs32.d: Loosen regex for architecture type to allow test to pass on configurations without an attributes section. * ld-arm/arm-app.d: Likewise. * ld-arm/arm-lib-plt32.d: Likewise. * ld-arm/arm-lib.d: Likewise. * ld-arm/arm-static-app.d: Likewise. * ld-arm/armthumb-lib.d: Likewise. * ld-arm/cortex-a8-far.d: Likewise. * ld-arm/farcall-mixed-app.d: Likewise. * ld-arm/farcall-mixed-lib-v4t.d: Likewise. * ld-arm/farcall-mixed-lib.d: Likewise. * ld-arm/mixed-app-v5.d: Likewise. * ld-arm/mixed-app.d: Likewise. * ld-arm/mixed-lib.d: Likewise. * ld-arm/tls-app.d: Likewise. * ld-arm/tls-descrelax-be32.d: Likewise. * ld-arm/tls-descrelax.d: Likewise. * ld-arm/tls-descseq.d: Likewise. * ld-arm/tls-gdesc-got.d: Likewise. * ld-arm/tls-gdesc.d: Likewise. * ld-arm/tls-gdierelax.d: Likewise. * ld-arm/tls-gdierelax2.d: Likewise. * ld-arm/tls-gdlerelax.d: Likewise. * ld-arm/tls-lib-loc.d: Likewise. * ld-arm/tls-lib.d: Likewise. * ld-arm/tls-thumb1.d: Likewise.
2014-07-10binutils/testsuite: Disable strip-10 test on ARM non-EABIWill Newton2-1/+8
Non-EABI ARM targets set OSABI to ARM regardless of whether or not GNU features have been used which causes this test to fail. binutils/testsuite/ChangeLog: 2014-07-10 Will Newton <will.newton@linaro.org> * binutils-all/objcopy.exp: Disable the strip-10 test on non-EABI ARM configurations.
2014-07-10ld/testsuite: Disable non-PIC shared library tests on ARMWill Newton2-1/+6
ARM doesn't support non-PIC shared libraries so don't run those tests. ld/testsuite/ChangeLog: 2014-07-10 Will Newton <will.newton@linaro.org> * ld-elfvers/vers.exp: Set pic to yes for ARM targets.
2014-07-10Tweak gdb.trace/tfile.c for thumb modeYao Qi2-2/+15
We see the fail below happens on thumb related multi-libs (-mthumb -march={armv4t,armv7-a}), target tfile tfile-basic.tf ^M warning: Uploaded tracepoint 1 has no source location, using raw address^M warning: Breakpoint address adjusted from 0x00008959 to 0x00008958.^M Tracepoint 3 at 0x8958: file /scratch/yqi/arm-none-linux-gnueabi/src/gdb-trunk/gdb/testsuite/gdb.trace/tfile.c, line 91.^M Created tracepoint 3 for target's tracepoint 1 at 0x8959.^M warning: Breakpoint address adjusted from 0x00008959 to 0x00008958.^M warning: Breakpoint address adjusted from 0x00008959 to 0x00008958.^M warning: Breakpoint address adjusted from 0x00008959 to 0x00008958.^M (gdb) FAIL: gdb.trace/tfile.exp: complete-command 'target tfile' The address of write_basic_trace_file is two-bytes aligned, (gdb) p write_basic_trace_file $1 = {void (void)} 0x8958 <write_basic_trace_file> but the ld sets the LSB of every reference to the function address (indicating the address is in thumb mode), so "&write_basic_trace_file" in the program becomes 0x8959, which is saved in the trace file. That is why the warnnings are emitted. This patch is to clear the LSB of the function address written to trace file in thumb and thumb2 mode. This patch fixes the fail above. gdb/testsuite: 2014-07-10 Yao Qi <yao@codesourcery.com> * gdb.trace/tfile.c (write_basic_trace_file) [__thumb__||__thumb2__]: Clear the Thumb bit of the function address written to trace file.
2014-07-10daily updateAlan Modra1-1/+1
2014-07-09Fix "attach" command vs user input racePedro Alves5-3/+186
On async targets, a synchronous attach is done like this: #1 - target_attach is called (PTRACE_ATTACH is issued) #2 - a continuation is installed #3 - we go back to the event loop #4 - target reports stop (SIGSTOP), event loop wakes up, and attach continuation is called #5 - among other things, the continuation calls target_terminal_inferior, which removes stdin from the event loop Note that in #3, GDB is still processing user input. If the user is fast enough, e.g., with something like: echo -e "attach PID\nset xxx=1" | gdb ... then the "set" command is processed before the attach completes. We get worse behavior even, if input is a tty and therefore readline/editing is enabled, with e.g.,: (gdb) attach PID\nset xxx=1 we then crash readline/gdb, with: Attaching to program: attach-wait-input, process 14537 readline: readline_callback_read_char() called with no handler! Aborted $ Fix this by calling target_terminal_inferior before #3 above. The test covers both scenarios by running with editing/readline forced to both on and off. gdb/ 2014-07-09 Pedro Alves <palves@redhat.com> * infcmd.c (attach_command_post_wait): Don't call target_terminal_inferior here. (attach_command): Call it here instead. gdb/testsuite/ 2014-07-09 Pedro Alves <palves@redhat.com> * gdb.base/attach-wait-input.exp: New file. * gdb.base/attach-wait-input.c: New file.
2014-07-09Improve MI -var-info-path-expression for nested struct/union case.Andrew Burgess9-14/+246
https://sourceware.org/ml/gdb-patches/2014-05/msg00383.html The MI command -var-info-path-expression currently does not handle non-anonymous structs / unions nested within other structs / unions, it will skip parts of the expression. Consider this example: ## START EXAMPLE ## $ cat ex.c #include <string.h> int main () { struct s1 { int a; }; struct ss { struct s1 x; }; struct ss an_ss; memset (&an_ss, 0, sizeof (an_ss)); return 0; } $ gcc -g -o ex.x ex.c $ gdb ex.x (gdb) break 18 Breakpoint 1 at 0x80483ba: file ex.c, line 18. (gdb) run Starting program: /home/user/ex.x Breakpoint 1, main () at ex.c:18 18 return 0; (gdb) interpreter-exec mi "-var-create an_ss * an_ss" (gdb) interpreter-exec mi "-var-list-children an_ss" ^done,numchild="1",children=[child={name="an_ss.x",exp="x",numchild="1",type="struct s1",thread-id="1"}],has_more="0" (gdb) interpreter-exec mi "-var-list-children an_ss.x" ^done,numchild="1",children=[child={name="an_ss.x.a",exp="a",numchild="0",type="int",thread-id="1"}],has_more="0" (gdb) interpreter-exec mi "-var-list-children an_ss.x.a" ^done,numchild="0",has_more="0" (gdb) interpreter-exec mi "-var-info-path-expression an_ss.x.a" ^done,path_expr="(an_ss).a" (gdb) print (an_ss).a There is no member named a. ## END EXAMPLE ## Notice that the path expression returned is wrong, and as a result the print command fails. This patch adds a new method to the varobj_ops structure called is_path_expr_parent, to allow language specific control over finding the parent varobj, the current logic becomes the C/C++ version and is extended to handle the nested cases. No other language currently uses this code, so all other languages just get a default method. With this patch, the above example now finishes like this: ## START EXAMPLE ## $ gdb ex.x (gdb) break 18 Breakpoint 1 at 0x80483ba: file ex.c, line 18. (gdb) run Starting program: /home/user/ex.x Breakpoint 1, main () at ex.c:18 18 return 0; (gdb) interpreter-exec mi "-var-list-children an_ss" ^done,numchild="1",children=[child={name="an_ss.x",exp="x",numchild="1",type="struct s1",thread-id="1"}],has_more="0" (gdb) interpreter-exec mi "-var-list-children an_ss.x" ^done,numchild="1",children=[child={name="an_ss.x.a",exp="a",numchild="0",type="int",thread-id="1"}],has_more="0" (gdb) interpreter-exec mi "-var-list-children an_ss.x.a" ^done,numchild="0",has_more="0" (gdb) interpreter-exec mi "-var-info-path-expression an_ss.x.a" ^done,path_expr="((an_ss).x).a" (gdb) print ((an_ss).x).a $1 = 0 ## END EXAMPLE ## Notice that the path expression is now correct, and the print is a success. gdb/ChangeLog: * ada-varobj.c (ada_varobj_ops): Fill in is_path_expr_parent field. * c-varobj.c (c_is_path_expr_parent): New function, moved core from varobj.c, with additional checks. (c_varobj_ops): Fill in is_path_expr_parent field. (cplus_varobj_ops): Fill in is_path_expr_parent field. * jv-varobj.c (java_varobj_ops): Fill in is_path_expr_parent field. * varobj.c (is_path_expr_parent): Call is_path_expr_parent varobj ops method. (varobj_default_is_path_expr_parent): New function. * varobj.h (lang_varobj_ops): Add is_path_expr_parent field. (varobj_default_is_path_expr_parent): Declare new function. gdb/testsuite/ChangeLog: * gdb.mi/var-cmd.c (do_nested_struct_union_tests): New function setting up test structures. (main): Call new test function. * gdb.mi/mi2-var-child.exp: Create additional breakpoint in new test function, continue into test function and walk test structures.
2014-07-08Fix --defsym to copy symbol attributes.Cary Coutant9-8/+159
Alan Modra committed a patch to Gnu ld to fix a problem encountered on PPC where the --defsym option wasn't copying the st_other bits to the newly-defined symbol. https://sourceware.org/ml/binutils/2014-07/msg00094.html Gold has the same problem, and additionally wasn't copying the symbol type. This patch fixes both problems, by copying the symbol type, visibility, and the remaining st_other bits to the new symbol for --defsym=sym1=sym2 assignments. gold/ * expression.cc (struct Expression::Expression_eval_info): Add new fields type_pointer, vis_pointer, and nonvis_pointer. (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and nonvis_pointer parameters. Adjust all calls. (Symbol_expression::value): Update type, visibility, and nonvis bits in caller. * script.cc (Symbol_assignment::sized_finalize): Update type, visibility, and remaining st_other bits for new symbol. * script.h: (Expression::eval_maybe_dot): Add type_pointer, vis_pointer, and nonvis_pointer parameters. * symtab.h (Symbol::set_type): New method. * testsuite/Makefile.am (defsym_test): New test. * testsuite/Makefile.in: Regenerate. * testsuite/defsym_test.c: New file. * testsuite/defsym_test.sh: New file.
2014-07-09daily updateAlan Modra1-1/+1
2014-07-08Fix internal error with LTO on ARM.Cary Coutant8-7/+52
This prevents the target-specific do_read_symbols methods from being called twice when do_layout_deferred_sections needs to layout an .eh_frame section. gold/ PR gold/15639 * dynobj.h (Sized_dynobj::base_read_symbols): New method. * dynobj.cc (Sized_dynobj::do_read_symbols): Move body to... (Sized_dynobj::base_read_symbols): ...new method. * object.h (Sized_relobj_file::base_read_symbols): New method. * object.cc (Sized_relobj_file::do_read_symbols): Move body to... (Sized_relobj_file::base_read_symbols): ...new method. * arm.cc (Arm_relobj::do_read_symbols): Call base_read_symbols. * mips.cc: (Mips_relobj::do_read_symbols): Likewise. * powerpc.cc (Powerpc_dynobj::do_read_symbols): Likewise.
2014-07-08 * scripttempl/avr.sc: Remove KEEP for .data andDenis Chertykov2-5/+7
force .bss VMA to end of .data VMA.
2014-07-08This fixes PR 17110 which shows that the SH section relocation code can be ↵Nick Clifton2-1/+9
called for input BFDs as well as output BFDs. PR ld/17110 * elf32-sh.c (sh_elf_osec_to_segment): Do not look for output segments in input bfds.
2014-07-08Fix disasm of vmovsd/vmovss with different length values.Ilya Tocar11-66/+82
gas/testsuite * gas/i386/evex-lig256-intel.d: Updated. * gas/i386/evex-lig256.d: Updated. * gas/i386/evex-lig512-intel.d: Updated. * gas/i386/evex-lig512-intel.d: Updated. * gas/i386/x86-64-evex-lig256-intel.d: Updated. * gas/i386/x86-64-evex-lig256.d: Updated. * gas/i386/x86-64-evex-lig512-intel.d: Updated. * gas/i386/x86-64-evex-lig512-intel.d: Updated. opcodes * i386-dis-evex.h (EVEX_W_0F10_P_1_M_1): Fix vmovss. (EVEX_W_0F10_P_3_M_1): Fix vmovsd.
2014-07-08ld/ARM: Increase maximum page size to 64kBWill Newton9-12/+29
Increase the maximum page size to 64kB and align the TEXT_START_ADDR to a 64kB boundary. This brings AArch32 in line with AArch64 and improves compatability under certain conditions. bfd/ChangeLog: 2014-07-08 Will Newton <will.newton@linaro.org> * elf32-arm.c (ELF_MAXPAGESIZE): Increase the default value to 64kB and remove custom setting for NaCl. ld/ChangeLog: 2014-07-08 Will Newton <will.newton@linaro.org> * emulparams/armelf_linux.sh (TEXT_START_ADDR): Increase alignment to 64kB boundary. ld/testsuite/ChangeLog: 2014-07-08 Will Newton <will.newton@linaro.org> * ld-arm/arm-lib.ld: Increase MAXPAGESIZE value to match bfd. * ld-arm/cortex-a8-fix-bl-rel-plt.d: Update offsets to take into account increased segment alignment. * ld-arm/ifunc-gdesc.r: Likewise. * ld-arm/tls-lib.d: Likewise.
2014-07-08Fix PR 16722 by adding support for 8-byte vector constants.Jiong Wang20-285/+1705
* config/tc-arm.c (literal_pool): New field "alignment". (find_or_make_literal_pool): Initialize "alignment" to 2. (s_ltorg): Align the pool using value of "alignment" (parse_big_immediate): New parameter "in_exp". Return parsed expression if "in_exp" is not null. (parse_address_main): Invoke "parse_big_immediate" for constant parameter. (add_to_lit_pool): Add one parameter 'nbytes'. Split 8 byte entry into two 4 byte entry. Add padding to align 8 byte entry to 8 byte boundary. (encode_arm_cp_address): Generate literal pool entry if possible. (move_or_literal_pool): Generate entry for vldr case. (enum lit_type): New enum type. (do_ldst): Use new enum type. (do_ldstv4): Likewise. (do_t_ldst): Likewise. (neon_write_immbits): Support Thumb-2 mode. * gas/arm/ldconst.s: Add test cases for symbol literal. * gas/arm/ldconst.d: Likewise. * gas/arm/vldconst.s: Add test cases for vldr. * gas/arm/thumb2_vpool.s: Likewise. * gas/arm/vldconst.d: New pattern for little-endian. * gas/arm/thumb2_vpool.d: Likewise. * gas/arm/vldconst_be.d: New pattern for big-endian. * gas/arm/thumb2_vpool_be.d: Likewise.
2014-07-08Copy st_other for linker script symbol assignmentsAlan Modra9-13/+81
This fixes a problem seen on powerpc64le ELFv2 when creating a function symbol alias with ld --defsym. st_other needs to be copied from the source symbol to the alias in order to set up the local entry offset for the alias. I decided to make this change in the generic ELF code rather than in elf64-ppc.c since it looks like other targets that use st_other bits might benefit too. bfd/ * elflink.c (_bfd_elf_copy_link_hash_symbol_type): Copy st_other bits from source to dest. * linker.c (_bfd_generic_copy_link_hash_symbol_type): Update comment. * targets.c (struct bfd_target <_bfd_copy_link_hash_symbol_type>): Likewise. * bfd-in2.h: Regenerate. ld/testsuite/ * ld-powerpc/defsym.s, * ld-powerpc/defsym.d: New test. * ld-powerpc/powerpc.exp: Run it.
2014-07-08Fix gdb.trace/entry-values.exp for thumb modeYao Qi3-5/+19
We see some fails in gdb.trace/entry-values.exp in thumb mode (-mthumb -march={armv4t,armv7-a}). In thumb mode, the lsb of references to 'foo' and 'bar' in the assembly (produced by dwarf assember) is set, so the generated debug information is incorrect. This patch copies the approach used by [PATCH 4/4] Fix dw2-ifort-parameter.exp on PPC64 https://sourceware.org/ml/gdb-patches/2014-03/msg00202.html to introduce new labels 'foo_start' and 'bar_start' which are about the correct function address (without lsb set). This patch fixes these fails we've seen. gdb/testsuite: 2014-07-08 Yao Qi <yao@codesourcery.com> * gdb.trace/entry-values.c: Define labels 'foo_start' and 'bar_start' at the beginning of functions 'foo' and 'bar' respectively. * gdb.trace/entry-values.exp: Use 'foo_start' and 'bar_start' instead of 'foo' and 'bar'.
2014-07-08Enable elf_backend_rela_normal for AArch64Jiong Wang8-9/+90
If we are generating non-relocatable object and --emit-relocs specified, aarch64 ld is actually generating wrong addend for rela entry when relocate against local symbol. for example, for simple testcase foo.c === const char * const a = "foo"; const char * foo () { return a; } bar.c === const char * const b = "bar"; const char * bar () { return b; } aarch64-none-linux-gnu-ld --emit-relocs -o x.o foo.o bar.o aarch64-none-linux-gnu-readelf -r x.o ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0 ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0 ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0 ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0 while it should be: ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0 ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0 ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 10 ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 10 bfd generic code could actually handle this properly, but only when elf_backend_rela_normal set to '1'. this patch enable this and remove those target specific hack. bfd/ * elfnn-aarch64.c (elf_backend_rela_normal): Set to 1. (elfNN_aarch64_relocate_section): Remove duplicated addend adjustment when info->relocatable be true. ld/testsuite/ * ld-aarch64/emit-relocs-local-addend-bar.s: * New source file. * ld-aarch64/emit-relocs-local-addend-foo.s: * Likewise. * ld-aarch64/emit-relocs-local-addend.d: * New testcase. * ld-aarch64/local-addend-r.d: Likewise.
2014-07-08reverse-finish: turn internal error into normal errorMarkus Metzger5-2/+87
The reverse-finish command results in an internal error if it cannot determine the current function. (gdb) c Continuing. Program received signal SIGSEGV, Segmentation fault. 0x0000000000000000 in ?? () (gdb) reverse-finish Run back to call of #0 0x0000000000000000 in ?? () gdb/infcmd.c:1576: internal-error: Finish: couldn't find function. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) y This is not an internal error case since the command may be used in scenarios where there is no function at the current PC, e.g. after calling through a bad function pointer. Turn this into a normal error. gdb/ * infcmd.c (finish_backward): Turn internal error into normal error. testsuite/ * gdb.btrace/segv.c: New. * gdb.btrace/segv.exp: New.
2014-07-08Run ar with --plugin for LTO 11 testAlan Modra2-1/+20
Objects built with -fno-fat-lto-objects (the default for gcc-4.9) have no normal symbols, except things like __gnu_lto_slim. These useless symbols are the ones put into the archive index, and of course nothing references them so no objects are extracted by the linker. Running ar with --plugin changes ar behaviour to put the lto symbols into the archive index. PR 17112 * ld-plugin/lto.exp: When building liblti-11.a, pass --plugin path_to_gcc/liblto_plugin.so to ar.
2014-07-08daily updateAlan Modra1-1/+1
2014-07-07Mention PR gdb/17096 in ChangeLogPedro Alves1-0/+1
2014-07-07PR gdb/17096: async support breaks remote debugging on WindowsPedro Alves2-2/+12
On Windows, with "maint set target-async on" (the default since a09dd441), Ctrl-C fails to stop a remote target. With maint target-async on, the SIGINT signal handler doesn't send the remote interrupt request immediately. Instead, it marks an async handler as ready, and then the main event loop wakes up and notices that the SIGINT async signal handler token was set, and calls the corresponding event handler, which sends the remote interrupt request. On POSIX-like systems, the SIGINT signal makes the select/poll in the main event loop wake up / return with EINTR. However, on Windows, signal handlers run on a separate thread, and Windows doesn't really have a concept of EINTR. So, just marking the async handler (effectively just setting a flag) does not wake up gdb_select. Instead, we need to call gdb_call_async_signal_handler from the signal handler. The Windows version (in mingw-hdep.c) sets a Windows event that gdb_select's WaitForMultipleObjects is waiting for. Confirmed that with this, Ctrl-C interrupts the remote target on Windows. Also regression tested on x86_64 Fedora 20 against GDBserver. gdb/ 2014-07-07 Pedro Alves <palves@redhat.com> * remote.c (async_handle_remote_sigint) (async_handle_remote_sigint_twice): Call gdb_call_async_signal_handler instead of mark_async_signal_handler.
2014-07-07Remove an accidental commit.Nick Clifton2-7/+7
* readelf.c (get_symbol_type): Revert accidental change to detection of thumb function symbols.
2014-07-07Adds support for writing values to AVR system I/O registers.Barney Stratford9-52/+162
* elf32-avr.c: Handle R_AVR_PORT5 and R_AVR_PORT6. * reloc.c: Add BFD_RELOC_AVR_PORT5 and BFD_RELOC_AVR_PORT6. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * avr.h: Add R_AVR_PORT5 and R_AVR_PORT6. * config/tc-avr.c (avr_operand): Permit referring to r26-r31 by name as [xyz][hl]. Permit using a symbol whoes name begins with `r' to refer to a register. Allow arbitrary expressions for the P and p operators. (md_apply_fix): Check the BFD_RELOC_AVR_PORT5 and BFD_RELOC_AVR_PORT6 relocations.
2014-07-07change to_info_record to use target delegationTom Tromey4-23/+13
This changes to_info_record to use target delegation. Also, target_info_record was unused, so this patch removes it. 2014-07-07 Tom Tromey <tromey@redhat.com> * target-delegates.c: Rebuild. * target.c (target_info_record): Remove. * record.c (info_record_command): Unconditionally call to_info_record. * target.h (struct target_ops) <to_info_record>: Use TARGET_DEFAULT_IGNORE. (target_info_record): Remove.
2014-07-07convert to_get_thread_local_address to use target delegationTom Tromey6-22/+44
This converts to_get_thread_local_address to use TARGET_DEFAULT_NORETURN. One possible oddity is that this changes the text of the kind of exception thrown in some cases. This doesn't seem to be a problem; in fact perhaps the final call to 'error' in target_translate_tls_address should be changed to call generic_tls_error. 2014-07-07 Tom Tromey <tromey@redhat.com> * target.h (struct target_ops) <to_get_thread_local_address>: Use TARGET_DEFAULT_NORETURN. * target.c (generic_tls_error): New function. (target_translate_tls_address): Don't search target stack. * target-delegates.c: Rebuild. * ppc-linux-tdep.c (ppc_linux_spe_context): Don't search target stack. * linux-thread-db.c (thread_db_get_thread_local_address): Unconditionally call beneath target.
2014-07-07Reinstate compiler checkAlan Modra2-0/+9
* lib/ld-lib.exp (check_lto_shared_available): Reinstate compiler check here too.
2014-07-07This patch prevents a linker testsuite error if the checks are run with aNick Clifton2-0/+9
toolchain that just contains the binutils - ie without a compiler. * lib/ld-lib.exp (check_lto_available): Check that a compiler is available before testing for LTO support.
2014-07-07Ensure ld testsuite gcc -B options precede $CC -B optionsAlan Modra5-108/+93
Various ld-elf/shared.exp and ld-plugin/lto.exp tests simply appended the testsuite -B options intended to force gcc use the linker under test. This fails if $CC itself has -B options, as when setting CC to run gcc out of a build directory. Net result is that tests were run using the gcc build dir collect-ld. * config/default.exp: Don't make tmpdir/gas. Put as symlink into tmpdir/ld. (gcc_gas_flag, gcc_ld_flag): Delete. (gcc_B_opt, ld_L_opt): New globals. ld-elf/shared.exp: Remove all refs to gcc_gas_flag and gcc_ld_flag. ld-plugin/lto.exp: Likewise. lib/ld-lib.exp (run_host_cmd): Add gcc_B_opt and ld_L_opt here. (ld_simple_link): Remove -B handling now that this is done in run_host_cmd. Simplify. (default_ld_compile): Simplify. (check_lto_available): Use run_host_cmd_yesno. (check_lto_shared_available): Likewise.
2014-07-07daily updateAlan Modra1-1/+1
2014-07-06daily updateAlan Modra1-1/+1
2014-07-05Rid libdummy.a from lto.expAlan Modra3-66/+74
libdummy.a is used to make run_cc_link_tests compile objects and archive them. libdummy.a isn't used. What we're really doing is preventing a final link. So do that directly. * lib/ld-lib.exp (run_ld_link_tests): Stop after assembling objects if binfile is empty. (run_ld_link_exec_tests, run_cc_link_tests): Likewise. Tidy status checks. * ld-plugin/lto.exp: Don't use libdummy.a trick to compile objects. Instead use an empty output file.
2014-07-05daily updateAlan Modra1-1/+1
2014-07-04Update "configure.in" in comments and docoAlan Modra16-14/+36
bfd/ * Makefile.am: Update "configure.in" comments. * PORTING: Likewise. * aoutx.h: Likewise. * configure.host: Likewise. * doc/bfdint.texi: Likewise. * targets.c: Likewise. * warning.m4: Likewise. * Makefile.in: Regenerate. gas/ * doc/internals.texi: Update "configure.in" comments. * acinclude.m4: Likewise. * config/tc-sparc.c: Likewise. ld/ * configure.ac: Update "configure.in" comments. * configure: Regenerate.
2014-07-04Rename configure.in to configure.acAlan Modra27-15/+54
bfd/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. * doc/Makefile.in: Regenerate. opcodes/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. binutils/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. * doc/Makefile.in: Regenerate. gas/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate. * doc/Makefile.in: Regenerate. gprof/ * configure.ac: Rename from configure.in. * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * gconfig.in: Regenerate. ld/ * configure.ac: Rename from configure.in. * Makefile.in: Regenerate. * config.in: Regenerate.