aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2014-02-07Replace -1 with TARGET_XFER_E_IOYao Qi23-71/+105
Hi, This patch replaces -1 with TARGET_XFER_E_IO in the implementations of to_xfer_partial and their callees. This change is quite mechanical, and makes the next patch shorter. gdb: 2014-02-07 Yao Qi <yao@codesourcery.com> * auxv.c (procfs_xfer_auxv): Replace -1 with TARGET_XFER_E_IO. (ld_so_xfer_auxv): Likewise. * bfd-target.c (target_bfd_xfer_partial): Likewise. * bsd-kvm.c (bsd_kvm_xfer_partial): Likewise. * corelow.c (core_xfer_partial): Likewise. * ctf.c (ctf_xfer_partial): Likewise. * darwin-nat.c (darwin_read_dyld_info): Likewise. (darwin_xfer_partial): Likewise. * exec.c (exec_xfer_partial): Likewise. * gnu-nat.c (gnu_xfer_partial): Likewise. * ia64-hpux-nat.c (ia64_hpux_xfer_uregs): Likewise. * inf-ptrace.c (inf_ptrace_xfer_partial): Likewise. * inf-ttrace.c (inf_ttrace_xfer_partial): Likewise. * linux-nat.c (linux_xfer_siginfo): Likewise. (linux_proc_xfer_spu): Likewise. * procfs.c (procfs_xfer_partial): Likewise. * record-full.c (record_full_xfer_partial): Likewise. (record_full_core_xfer_partial): Likewise. * remote-sim.c (gdbsim_xfer_partial): Likewise. * remote.c (remote_write_qxfer): Likewise. (remote_write_qxfer, remote_read_qxfer): Likewise. (remote_xfer_partial): Likewise. * rs6000-nat.c (rs6000_xfer_partial): Likewise. (rs6000_xfer_shared_libraries): Likewise. * sparc-nat.c (sparc_xfer_wcookie): Likewise. * spu-linux-nat.c (spu_proc_xfer_spu): Likewise. (spu_xfer_partial): Likewise. * target.c (memory_xfer_partial_1): Likewise. * tracepoint.c (tfile_xfer_partial): Likewise. * windows-nat.c (windows_xfer_shared_libraries): Likewise. (windows_xfer_partial): Likewise.
2014-02-07core_xfer_shared_libraries and core_xfer_shared_libraries_aix returns ULONGESTYao Qi7-22/+41
This patch documents the return value of core_xfer_shared_libraries_aix and core_xfer_shared_libraries gdbarch methods, and changes return type to ULONGEST from LONGEST. In a following patch, core_xfer_partial. is changed to check their return values and return an appropriate target_xfer_status. gdb: 2014-02-07 Yao Qi <yao@codesourcery.com> * gdbarch.sh (core_xfer_shared_libraries): Returns ULONGEST. Add comments. (core_xfer_shared_libraries_aix): Likewise. * gdbarch.c, gdbarch.h: Regenerated. * i386-cygwin-tdep.c (windows_core_xfer_shared_libraries): Return ULONGEST. Change 'len_avail' type to ULONGEST. * rs6000-aix-tdep.c (rs6000_aix_ld_info_to_xml): Likewise. * rs6000-aix-tdep.h (rs6000_aix_ld_info_to_xml): Update declaration. (rs6000_aix_core_xfer_shared_libraries_aix): Return ULONGEST.
2014-02-07Tweak in memory_errorYao Qi2-3/+9
This patch adds a local variable exception of type 'enum errors' and pass it to throw_error, because 'err' is of type 'enum target_xfer_error', and we're abusing it to store an 'enum errors'. gdb: 2014-02-07 Yao Qi <yao@codesourcery.com> * corefile.c (memory_error): Get 'exception' from ERR and pass 'exception' to throw_error.
2014-02-06Fix problem where -u is ignored when a weak undef is seen.Cary Coutant6-41/+224
When the linker has a weak undefined symbol, it normally does not select an archive library member just to satisfy the reference. If the same symbol is also listed in a -u option, however, we should select the archive library member. This patch reorders the code in Library_base::should_include_member so that the additional checks are performed in the case of a weak undef. gold/ 2014-02-06 Cary Coutant <ccoutant@google.com> * archive.cc (Library_base::should_include_member): Reorder code to check for -u option if a weak undef has already been seen. * testsuite/Makefile.am (weak_undef_test_2): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/weak_undef_file3.cc: New file. * testsuite/weak_undef_file4.cc: New file. * testsuite/weak_undef_test_2.cc: New file.
2014-02-07daily updateAlan Modra1-1/+1
2014-02-06Fix i386-sse-stack-align.exp regression since GDB_PARALLEL.Jan Kratochvil2-1/+6
gdb/testsuite/ 2014-02-06 Jan Kratochvil <jan.kratochvil@redhat.com> Fix i386-sse-stack-align.exp regression since GDB_PARALLEL. * gdb.arch/i386-sse-stack-align.exp: Use standard_output_file.
2014-02-06binutils/ChangeLog:Andrew Pinski6-0/+15
2014-02-06 Andrew Pinski <apinski@cavium.com> * readelf.c (get_machine_flags): Handle E_MIPS_MACH_OCTEON3 case. elfcpp/ChangeLog: 2014-02-06 Andrew Pinski <apinski@cavium.com> * mips.h (E_MIPS_MACH_OCTEON3): New enum constant. include/elf/ChangeLog: 2014-02-06 Andrew Pinski <apinski@cavium.com> * mips.h (E_MIPS_MACH_OCTEON3): New machine flag.
2014-02-06indentation fixlet in gdbserver/Makefile.in.Tom Tromey2-1/+5
This fixes a minor indentation issue in gdbserver/Makefile.in. 2014-02-06 Tom Tromey <tromey@redhat.com> * Makefile.in (SFILES): Fix indentation.
2014-02-06Add readelf support for dumping gold version note sections.Cary Coutant2-0/+16
binutils/ PR binutils/16444 * readelf.c (print_gnu_note): Add support for NT_GNU_GOLD_VERSION.
2014-02-06 PR target/59788Rainer Orth2-1/+7
* ltmain.sh (opt_duplicate_compiler_generated_deps): Enable on *solaris2*.
2014-02-05Fix issues with gold undefined symbol diagnostics.Cary Coutant3-8/+24
PR binutils/15435 complains that gold issues a visibility error for an weak undefined symbol with hidden visibility. The message should be suppressed if the symbol is a weak undef. An earlier patch to add an extra note about key functions when a class's vtable symbol is undefined missed a case where the reference to the vtable came from a shared library. This patch moves the check to a lower-level routine that catches both cases. gold/ 2014-02-05 Cary Coutant <ccoutant@google.com> * errors.cc (Errors::undefined_symbol): Move undef vtable symbol check to here. * target-reloc.h (is_strong_undefined): New function. (relocate_section): Move undef vtable symbol check from here. Check for is_strong_undefined.
2014-02-05Add missing gold/ChangeLog entry.Cary Coutant1-0/+30
2014-02-05fix copyright year in new files in previous checkinDoug Evans4-4/+4
2014-02-05Extension Language APIDoug Evans36-723/+2290
* configure.ac (libpython checking): Remove all but python.o from CONFIG_OBS. Remove all but python.c from CONFIG_SRCS. * configure: Regenerate. * Makefile.in (SFILES): Add extension.c. (HFILES_NO_SRCDIR): Add extension.h, extension-priv.h (COMMON_OBS): Add extension.o. * extension.h: New file. * extension-priv.h: New file. * extension.c: New file. * python/python-internal.h: #include "extension.h". (gdbpy_auto_load_enabled): Declare. (gdbpy_apply_val_pretty_printer): Declare. (gdbpy_apply_frame_filter): Declare. (gdbpy_preserve_values): Declare. (gdbpy_breakpoint_cond_says_stop): Declare. (gdbpy_breakpoint_has_cond): Declare. (void source_python_script_for_objfile): Delete. * python/python.c: #include "extension-priv.h". Delete inclusion of "observer.h". (extension_language_python): Moved here and renamed from script_language_python in py-auto-load.c. Redefined to be of type extension_language_defn. (python_extension_script_ops): New global. (python_extension_ops): New global. (struct python_env): New member previous_active. (restore_python_env): Call restore_active_ext_lang. (ensure_python_env): Call set_active_ext_lang. (gdbpy_clear_quit_flag): Renamed from clear_quit_flag, made static. New arg extlang. (gdbpy_set_quit_flag): Renamed from set_quit_flag, made static. New arg extlang. (gdbpy_check_quit_flag): Renamed from check_quit_flag, made static. New arg extlang. (gdbpy_eval_from_control_command): Renamed from eval_python_from_control_command, made static. New arg extlang. (gdbpy_source_script) Renamed from source_python_script, made static. New arg extlang. (gdbpy_before_prompt_hook): Renamed from before_prompt_hook. Change result to int. New arg extlang. (gdbpy_source_objfile_script): Renamed from source_python_script_for_objfile, made static. New arg extlang. (gdbpy_start_type_printers): Renamed from start_type_printers, made static. New args extlang, extlang_printers. Change result type to "void". (gdbpy_apply_type_printers): Renamed from apply_type_printers, made static. New arg extlang. Rename arg printers to extlang_printers and change type to ext_lang_type_printers *. (gdbpy_free_type_printers): Renamed from free_type_printers, made static. Replace argument arg with extlang, extlang_printers. (!HAVE_PYTHON, eval_python_from_control_command): Delete. (!HAVE_PYTHON, source_python_script): Delete. (!HAVE_PYTHON, gdbpy_should_stop): Delete. (!HAVE_PYTHON, gdbpy_breakpoint_has_py_cond): Delete. (!HAVE_PYTHON, start_type_printers): Delete. (!HAVE_PYTHON, apply_type_printers): Delete. (!HAVE_PYTHON, free_type_printers): Delete. (_initialize_python): Delete call to observer_attach_before_prompt. (finalize_python): Set/restore active extension language. (gdbpy_finish_initialization) Renamed from finish_python_initialization, made static. New arg extlang. (gdbpy_initialized): New function. * python/python.h: #include "extension.h". Delete #include "value.h", "mi/mi-cmds.h". (extension_language_python): Declare. (GDBPY_AUTO_FILE_NAME): Delete. (enum py_bt_status): Moved to extension.h and renamed to ext_lang_bt_status. (enum frame_filter_flags): Moved to extension.h. (enum py_frame_args): Moved to extension.h and renamed to ext_lang_frame_args. (finish_python_initialization): Delete. (eval_python_from_control_command): Delete. (source_python_script): Delete. (apply_val_pretty_printer): Delete. (apply_frame_filter): Delete. (preserve_python_values): Delete. (gdbpy_script_language_defn): Delete. (gdbpy_should_stop, gdbpy_breakpoint_has_py_cond): Delete. (start_type_printers, apply_type_printers, free_type_printers): Delete. * auto-load.c: #include "extension.h". (GDB_AUTO_FILE_NAME): Delete. (auto_load_gdb_scripts_enabled): Make public. New arg extlang. (script_language_gdb): Delete, moved to extension.c and renamed to extension_language_gdb. (source_gdb_script_for_objfile): Delete. (auto_load_pspace_info): New member unsupported_script_warning_printed. (loaded_script): Change type of language member to struct extension_language_defn *. (init_loaded_scripts_info): Initialize unsupported_script_warning_printed. (maybe_add_script): Make static. Change type of language arg to struct extension_language_defn *. (clear_section_scripts): Reset unsupported_script_warning_printed. (auto_load_objfile_script_1): Rewrite to use extension language API. (auto_load_objfile_script): Make public. Remove support-compiled-in and auto-load-enabled checks, moved to auto_load_scripts_for_objfile. (source_section_scripts): Rewrite to use extension language API. (load_auto_scripts_for_objfile): Rewrite to use auto_load_scripts_for_objfile. (collect_matching_scripts_data): Change type of language member to struct extension_language_defn *. (auto_load_info_scripts): Change type of language arg to struct extension_language_defn *. (unsupported_script_warning_print): New function. (script_not_found_warning_print): Make static. (_initialize_auto_load): Rewrite construction of scripts-directory help. * auto-load.h (struct objfile): Add forward decl. (struct script_language): Delete. (struct auto_load_pspace_info): Add forward decl. (struct extension_language_defn): Add forward decl. (maybe_add_script): Delete. (auto_load_objfile_script): Declare. (script_not_found_warning_print): Delete. (auto_load_info_scripts): Update prototype. (auto_load_gdb_scripts_enabled): Declare. * python/py-auto-load.c (gdbpy_auto_load_enabled): Renamed from auto_load_python_scripts_enabled and made public. (script_language_python): Delete, moved to python.c. (gdbpy_script_language_defn): Delete. (info_auto_load_python_scripts): Update to use extension_language_python. * breakpoint.c (condition_command): Replace call to gdbpy_breakpoint_has_py_cond with call to get_breakpoint_cond_ext_lang. (bpstat_check_breakpoint_conditions): Replace call to gdbpy_should_stop with call to breakpoint_ext_lang_cond_says_stop. * python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Renamed from gdbpy_should_stop. Change result type to enum scr_bp_stop. New arg slang. Return SCR_BP_STOP_UNSET if py_bp_object is NULL. (gdbpy_breakpoint_has_cond): Renamed from gdbpy_breakpoint_has_py_cond. New arg slang. (local_setattro): Print name of extension language with existing stop condition. * valprint.c (val_print, value_print): Update to call apply_ext_lang_val_pretty_printer. * cp-valprint.c (cp_print_value): Update call to apply_ext_lang_val_pretty_printer. * python/py-prettyprint.c: Remove #ifdef HAVE_PYTHON. (gdbpy_apply_val_pretty_printer): Renamed from apply_val_pretty_printer. New arg extlang. (!HAVE_PYTHON, apply_val_pretty_printer): Delete. * cli/cli-cmds.c (source_script_from_stream): Rewrite to use extension language API. * cli/cli-script.c (execute_control_command): Update to call eval_ext_lang_from_control_command. * mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Update to use enum ext_lang_bt_status values. Update call to apply_ext_lang_frame_filter. (mi_cmd_stack_list_locals): Ditto. (mi_cmd_stack_list_args): Ditto. (mi_cmd_stack_list_variables): Ditto. * mi/mi-main.c: Delete #include "python/python-internal.h". Add #include "extension.h". (mi_cmd_list_features): Replace reference to python internal variable gdb_python_initialized with call to ext_lang_initialized_p. * stack.c (backtrace_command_1): Update to use enum ext_lang_bt_status. Update to use enum ext_lang_frame_args. Update to call apply_ext_lang_frame_filter. * python/py-framefilter.c (extract_sym): Update to use enum ext_lang_bt_status. (extract_value, py_print_type, py_print_value): Ditto. (py_print_single_arg, enumerate_args, enumerate_locals): Ditto. (py_mi_print_variables, py_print_locals, py_print_args): Ditto. (py_print_frame): Ditto. (gdbpy_apply_frame_filter): Renamed from apply_frame_filter. New arg extlang. Update to use enum ext_lang_bt_status. * top.c (gdb_init): Delete #ifdef HAVE_PYTHON call to finish_python_initialization. Replace with call to finish_ext_lang_initialization. * typeprint.c (do_free_global_table): Update to call free_ext_lang_type_printers. (create_global_typedef_table): Update to call start_ext_lang_type_printers. (find_global_typedef): Update to call apply_ext_lang_type_printers. * typeprint.h (struct ext_lang_type_printers): Add forward decl. (type_print_options): Change type of global_printers from "void *" to "struct ext_lang_type_printers *". * value.c (preserve_values): Update to call preserve_ext_lang_values. * python/py-value.c: Remove #ifdef HAVE_PYTHON. (gdbpy_preserve_values): Renamed from preserve_python_values. New arg extlang. (!HAVE_PYTHON, preserve_python_values): Delete. * utils.c (quit_flag): Delete, moved to extension.c. (clear_quit_flag, set_quit_flag, check_quit_flag): Delete, moved to extension.c. * eval.c: Delete #include "python/python.h". * main.c: Delete #include "python/python.h". * defs.h: Update comment. testsuite/ * gdb.python/py-breakpoint.exp (test_bkpt_eval_funcs): Update expected output. * gdb.gdb/python-interrupts.exp: New file.
2014-02-06Document the GDB 7.7 release in gdb/ChangeLogJoel Brobecker1-0/+4
gdb/ChangeLog: GDB 7.7 released.
2014-02-05Fix problems with the --dynamic-list option.Cary Coutant13-6/+347
PR gold/13577 complains that even though symbols listed in the --dynamic-list script are exported, they are still bound symbolically if -Bsymbolic is also used. There are two underlying problems here. First, -Bsymbolic should be overridden by --dynamic-list, since the dynamic list provides an explicit list of symbols that are not bound within the library, and if we go ahead and set DT_SYMBOLIC, then the dynamic loader will bind it within the library anyway. Second, gold did not properly identify the symbols listed in the file as preemptible. PR gold/16530 complains that symbols listed in the --dynamic-list script can still be garbage collected. I've fixed this by checking the symbols as they're added to the symbol table. (Unlike the --export-dynamic-symbol option, we can't iterate over the list, because the --dynamic-list script can have wildcards in it.) gold/ 2014-02-05 Cary Coutant <ccoutant@google.com> PR gold/13577 * options.cc (General_options::parse_dynamic_list): Set have_dynamic_list_. (General_options::General_options): Initialize have_dynamic_list_. (General_options::finalize): Turn off -Bsymbolic and -Bsymbolic-functions if --dynamic-list provided. * options.h (General_options::have_dynamic_list): New function. (General_options::have_dynamic_list_): New data member. * symtab.h (Symbol::is_preemptible): Handle --dynamic-list correctly. PR gold/16530 * symtab.cc (Symbol_table::add_from_relobj): If symbol is named in --dynamic-list, mark it. * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case. (dynamic_list_2): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/dynamic_list_2.cc: New file. * testsuite/dynamic_list_2.t: New file. * testsuite/dynamic_list_lib1.cc: New file. * testsuite/dynamic_list_lib2.cc: New file. * testsuite/gc_dynamic_list_test.c: New file. * testsuite/gc_dynamic_list_test.sh: New file. * testsuite/gc_dynamic_list_test.t: New file.
2014-02-05Keep current_inferior in sync with event_child.Doug Evans2-1/+9
* linux-low.c (linux_wait_for_event): Improve comment. (linux_wait_1): Keep current_inferior in sync with event_child.
2014-02-06daily updateAlan Modra1-1/+1
2014-02-05Avoid bison-isms when using yacc.Mark Kettenis2-0/+11
YYPRINT is a bison-ism so c_print_token() ends up being unused when yacc is used which makes gcc unhappy. Make sure we only define YYPRINT and c_print_token() when bison is used to generate the parser. gdb/ChangeLog: * c-exp.y (YYPRINT, c_print_token): Only define if YYBISON is defined.
2014-02-05Use rs->buf after getpktYao Qi2-6/+8
Hi, The following code snippet looks wrong to me char *buf = rs->buf; getpkt (&rs->buf, &rs->buf_size, 0); packet_ok (buf, ); if rs->buf is reallocated in getpkt, buf points to an out of dated memory. This patch removes local 'buf' and uses rs->buf. gdb: 2014-02-05 Yao Qi <yao@codesourcery.com> * remote.c (remote_pass_signals): Remove local 'buf' and use rs->buf. (remote_program_signals): Likewise.
2014-02-05Create inferior for ctf target.Yao Qi4-1/+44
This patch creates inferior when GDB opens a ctf trace data, to be consistent with tfile target. A test case is added to test for live target, tfile and ctf target. gdb: 2014-02-05 Yao Qi <yao@codesourcery.com> * ctf.c: Include "inferior.h" and "gdbthread.h". (CTF_PID): A new macro. (ctf_open): Call inferior_appeared and add_thread_silent. (ctf_close): Call exit_inferior_silent and set inferior_ptid. (ctf_thread_alive): New function. (init_ctf_ops): Install ctf_thread_alive to to_thread_alive. gdb/testsuite: 2014-02-05 Yao Qi <yao@codesourcery.com> * gdb.trace/report.exp (use_collected_data): Test the output of "info threads" and "info inferiors".
2014-02-05Create inferior for tfile targetYao Qi4-3/+41
When a trace file is loaded in Eclipse, it is expected to see thread and process (=thread-group-started and =thread-created). Create an inferior and add a thread for this purpose. This patch just reverts my previous patch. gdb/testsuite: 2014-02-05 Yao Qi <yao@codesourcery.com> Revert this patch: 2013-05-24 Yao Qi <yao@codesourcery.com> * gdb.trace/tfile.exp: Test inferior and thread. gdb: 2014-02-05 Yao Qi <yao@codesourcery.com> Revert this patch: 2013-05-24 Yao Qi <yao@codesourcery.com> * tracepoint.c (TFILE_PID): Remove. (tfile_open): Don't add thread and inferior. (tfile_close): Don't set 'inferior_ptid'. Don't call exit_inferior_silent. (tfile_thread_alive): Remove. (init_tfile_ops): Don't set field 'to_thread_alive' of tfile_ops.
2014-02-05daily updateAlan Modra1-1/+1
2014-02-04Call remote_check_symbols even if only symbol-file (not file) has been givenChristian Eggers2-1/+6
The Eclipse "C/C++ GDB Hardware Debugging" plugin runs only the "symbol-file" command. In this case, remote_check_symbols is not called and no qSymbol:: packet is sent to the server (OpenOCD in my case). gdb/ 2014-02-04 Christian Eggers <ceggers@gmx.de> (tiny change) * remote.c (remote_start_remote): Call remote_check_symbols even if only symbol-file (not file) has been given.
2014-02-04Fix PowerPC targets minor memory leaks found by CoverityJan Kratochvil3-8/+44
bfd/ 2014-02-04 Jan Kratochvil <jan.kratochvil@redhat.com> * coff-rs6000.c (xcoff_write_archive_contents_big): Free OFFSETS in return paths. Three times. * elf64-ppc.c (ppc64_elf_link_hash_table_create): Free HTAB in all return paths. (ppc64_elf_tls_optimize): Free TOC_REF in return path. (ppc64_elf_edit_toc): Free USED in return path.
2014-02-04PowerPC64 ELFv2 ABI: skip global entry point codeUlrich Weigand10-2/+156
This patch handles another aspect of the ELFv2 ABI, which unfortunately requires common code changes. In ELFv2, functions may provide both a global and a local entry point. The global entry point (where the function symbol points to) is intended to be used for function-pointer or cross-module (PLT) calls, and requires r12 to be set up to the entry point address itself. The local entry point (which is found at a fixed offset after the global entry point, as defined by bits in the symbol table entries' st_other field), instead expects r2 to be set up to the current TOC. Now, when setting a breakpoint on a function by name, you really want that breakpoint to trigger either way, no matter whether the function is called via its local or global entry point. Since the global entry point will always fall through into the local entry point, the way to achieve that is to simply set the breakpoint at the local entry point. One way to do that would be to have prologue parsing skip the code sequence that makes up the global entry point. Unfortunately, this does not work reliably, since -for optimized code- GDB these days will not actuall invoke the prologue parsing code but instead just set the breakpoint at the symbol address and rely on DWARF being correct at any point throughout the function ... Unfortunately, I don't really see any way to express the notion of local entry points with the current set of gdbarch callbacks. Thus this patch adds a new callback, skip_entrypoint, that is somewhat analogous to skip_prologue, but is called every time GDB needs to determine a function start address, even in those cases where GDB decides to not call skip_prologue. As a side effect, the skip_entrypoint implementation on ppc64 does not need to perform any instruction parsing; it can simply rely on the local entry point flags in the symbol table entry. With this implemented, two test cases would still fail to set the breakpoint correctly, but that's because they use the construct: gdb_test "break *hello" Now, using "*hello" explicitly instructs GDB to set the breakpoint at the numerical value of "hello" treated as function pointer, so it will by definition only hit the global entry point. I think this behaviour is unavoidable, but acceptable -- most people do not use this construct, and if they do, they get what they asked for ... In one of those two test cases, use of this construct is really not appropriate. I think this was added way back when as a means to work around prologue skipping problems on some platforms. These days that shouldn't really be necessary any more ... For the other (step-bt), we really want to make sure backtracing works on the very first instruction of the routine. To enable that test also on powerpc64le-linux, we can modify the code to call the test function via function pointer (which makes it use the global entry point in the ELFv2 ABI). gdb/ChangeLog: * gdbarch.sh (skip_entrypoint): New callback. * gdbarch.c, gdbarch.h: Regenerate. * symtab.c (skip_prologue_sal): Call gdbarch_skip_entrypoint. * infrun.c (fill_in_stop_func): Likewise. * ppc-linux-tdep.c: Include "elf/ppc64.h". (ppc_elfv2_elf_make_msymbol_special): New function. (ppc_elfv2_skip_entrypoint): Likewise. (ppc_linux_init_abi): Install them for ELFv2. gdb/testsuite/ChangeLog: * gdb.base/sigbpt.exp: Do not use "*" when setting breakpoint on a function. * gdb.base/step-bt.c: Call hello via function pointer to make sure its first instruction is executed on powerpc64le-linux.
2014-02-04PowerPC64 ELFv2 ABI: structure passing / returnUlrich Weigand2-0/+251
Another significant difference in the ELFv2 ABI is that "homogeneous" floating-point and vector aggregates, i.e. aggregates the consist (recursively) only of members of the same floating-point or vector type, are passed in a series of floating-point / vector registers, as if they were seperate parameters. (This is similar to the ARM ABI.) This applies to both calls and returns. In addition when returning any aggregate of up to 16 bytes, ELFv2 now used general-purpose registers. This patch adds support for these aspects of the ABI, which is relatively straightforward after the refactoring patch to ppc-sysv-tdep.c. gdb/ChangeLog: * ppc-sysv-tdep.c (ppc64_aggregate_candidate): New routine. (ppc64_elfv2_abi_homogeneous_aggregate): Likewise. (ppc64_sysv_abi_push_param): Handle ELFv2 homogeneous structs. (ppc64_sysv_abi_return_value): Likewise. Also, handle small structures returned in GPRs.
2014-02-04PowerPC64 ELFv2 ABI: stack frame layout changesUlrich Weigand2-3/+12
This implementes another change in ELFv2: the stack frame no longer contains the reserved double words for linker and compiler use (which weren't really used for much of anything anyway). This affects placement of on-stack parameters in inferior calls. gdb/ChangeLog: * ppc-sysv-tdep.c (ppc64_sysv_abi_push_dummy_call): Use correct offset to the stack parameter list for the ELFv2 ABI.
2014-02-04PowerPC64 ELFv2 ABI: no function descriptorsUlrich Weigand3-26/+48
This implements the most significant difference with the ELFv2 ABI: we no longer use function descriptors. The patch consists mostly of switching off code to deal with descriptors :-) In addition, when calling an inferior function, we no longer need to provide its TOC in r2. Instead, ELFv2 code expects to be called with r12 pointing to the code address itself. gdb/ChangeLog: * ppc-linux-tdep.c (ppc_linux_init_abi): Only call set_gdbarch_convert_from_func_ptr_addr and set_gdbarch_elf_make_msymbol_special for ELFv1. * ppc-sysv-tdep.c (ppc64_sysv_abi_push_param): Only handle function descriptors on ELFv1. (ppc64_sysv_abi_push_dummy_call): Likewise. On ELFv2, set up r12 at function entry.
2014-02-04PowerPC64 ELFv2 ABI: base supportUlrich Weigand3-0/+54
This is the first patch of a series to implement support for the PowerPC ELFv2 ABI. While powerpc64le-linux will use ELFv2, and the existing powerpc64-linux code will continue to use ELFv1, in theory ELFv2 is also defined for big-endian systems (and ELFv1 was also defined for little-endian systems). Therefore this patch adds a new tdep->elf_abi variable to decide which ABI version to use. This is detected from the ELF header e_flags value; if this is not present, we default to ELFv2 on little-endian and ELFv1 otherwise. This patch does not yet introduce any actual difference in GDB's handling of the two ABIs. Those will be added by the remainder of this patch series. For an overview of the changes in ELFv2, have a look at the comments in the patch series that added ELFv2 to GCC, starting at: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg01144.html gdb/ChangeLog: * ppc-tdep.h (enum powerpc_elf_abi): New data type. (struct gdbarch_tdep): New member elf_abi. * rs6000-tdep.c: Include "elf/ppc64.h". (rs6000_gdbarch_init): Detect ELF ABI version.
2014-02-04PowerPC64 little-endian fixes: 128-bit DFP parameters / registersUlrich Weigand5-11/+27
The powerpc64le-linux ABI specifies that when a 128-bit DFP value is passed in a pair of floating-point registers, the first register holds the most-significant part of the value. This is as opposed to the usual rule on little-endian systems, where the first register would hold the least-significant part. This affects two places in GDB, the read/write routines for the 128-bit DFP pseudo-registers, and the function call / return sequence. For the former, current code already distinguishes between big- and little-endian targets, but gets the latter wrong. This is presumably because *GCC* also got it wrong, and GDB matches the old GCC behavior. But GCC is now fixed: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg02145.html so GDB needs to be fixed too. (Old code shouldn't really be an issue since there is no code "out there" so far that uses dfp128 on little-endian ...) gdb/ChangeLog: * ppc-sysv-tdep.c (ppc64_sysv_abi_push_freg): Use correct order within a register pair holding a DFP 128-bit value on little-endian. (ppc64_sysv_abi_return_value_base): Likewise. * rs6000-tdep.c (dfp_pseudo_register_read): Likewise. (dfp_pseudo_register_write): Likewise. gdb/testsuite/ChangeLog: * gdb.arch/powerpc-d128-regs.exp: Enable on powerpc64*-*.
2014-02-04PowerPC64 little-endian fixes: 32-bit DFP parametersUlrich Weigand2-2/+14
Passing a 32-bit DFP in register needs to use the least-significant part of the register. Like with a previous patch that addressed the same issue for small structs, this patch makes sure the appropriate offset is used on little-endian systems. gdb/ChangeLog: * ppc-sysv-tdep.c (ppc64_sysv_abi_push_freg): Use correct offset on little-endian when passing _Decimal32. (ppc64_sysv_abi_return_value_base): Likewise for return values.
2014-02-04PowerPC64 little-endian fixes: VSX tests and pseudo-regsUlrich Weigand4-10/+52
Many VSX test were failing on powerpc64le-linux, since -as opposed to the AltiVec tests- there never were little-endian versions of the test patterns. This patch adds such patterns, along the lines of altivec-regs.exp. In addition, there is an actual code change required: For those VSX registers that overlap a floating-point register, the FP register overlaps the most-significant half of the VSX register both on big- and little-endian systems. However, on little-endian systems, that half is stored at an offset of 8 bytes (not 0). This works already for the "real" FP registers, but current code gets it wrong for the "extended" pseudo FP register GDB generates for the second half of the VSX register bank. This patch updates the corresponding pseudo read/write routines to take the appropriate offset into consideration. gdb/ChangeLog: * rs6000-tdep.c (efpr_pseudo_register_read): Use correct offset of the overlapped FP register within the VSX register on little- endian platforms. (efpr_pseudo_register_write): Likewise. gdb/testsuite/ChangeLog: * gdb.arch/vsx-regs.exp: Check target endianness. Provide variants of the test patterns for use on little-endian systems.
2014-02-04PowerPC64 little-endian fixes: AltiVec testsUlrich Weigand2-7/+11
A couple of AltiVec tests fail spuriously on powerpc64le-linux, because they compare against an incorrect pattern. Note that those tests already contain little-endian variants of the patterns, but those seem to have bit-rotted a bit: when outputting a vector, GDB no longer omits trailing zero elements (as it used to do in the past). This patch updates the pattern to the new GDB output behavior. In addition, the patch updates the endian test to use the new gdb_test_multiple logic instead of gdb_expect. gdb/testsuite/ChangeLog: * gdb.arch/altivec-regs.exp: Use gdb_test_multiple for endian test. (decimal_vector): Fix for little-endian.
2014-02-04PowerPC64 little-endian fixes: structure passingUlrich Weigand2-1/+7
When passing a small structure in a GPR, the ABI specifies that it should be passed in the least-significant bytes of the register (or stack slot). On big-endian systems, this means the value needs to be stored at an offset, which is what current code does. However, on little-endian systems, the least-significant bytes are addresses with offset 0. This patch fixes that. gdb/ChangeLog: * ppc-sysv-tdep.c (ppc64_sysv_abi_push_val): Use correct offset on little-endian when passing small structures.
2014-02-04Refactor ppc64 function call and return value handlingUlrich Weigand2-694/+503
This patch refactors the ppc64 function call and return value handling code in ppc-sysv-tdep.c. The main problem to be addressed by this refactoring is the code duplication caused by certain aggregate types: According to the ABI, some types are to be decomposed into component types for parameter and return value handling. For example, complex types are to be passed as if the real and imaginary component were separate arguments. Similarly, certain OpenCL vector types are passed as if they were multiple separate arguments of the vector element type. With the new ELFv2 ABI, there is another case: "homogeneous aggregates" (e.g. a struct containing 4 floats) are passed in multiple floating point registers as well. Unfortunately, the current code is not structured to easily model these ABI properties. For example, code to pass complex values re-implements code to pass the underlying (floating-point) type. This has already led to some unfortunate code duplication, and with the addition of ELFv2 ABI support, I would have had to add yet more such duplication. To avoid that, I've decided to refactor the code in order to re-use subroutines that handle the "base" types when handling those aggregate types. This was not intended to cause any difference on current (ELFv1) ABI code, but in fact it fixes a bug: FAIL: gdb.base/varargs.exp: print find_max_float_real(4, fc1, fc2, fc3, fc4) This was caused by the old code in ppc64_sysv_abi_push_float incorrectly handling floating-point arguments to vararg routines, which just happens to work out correctly automatically in the refactored code ... gdb/ChangeLog: * ppc-sysv-tdep.c (get_decimal_float_return_value): Update comment. (struct ppc64_sysv_argpos): New data structure. (ppc64_sysv_abi_push_float): Remove. (ppc64_sysv_abi_push_val): New function. (ppc64_sysv_abi_push_integer): Likewise. (ppc64_sysv_abi_push_freg): Likewise. (ppc64_sysv_abi_push_vreg): Likewise. (ppc64_sysv_abi_push_param): Likewise. (ppc64_sysv_abi_push_dummy_call): Refactor to use those new routines. (ppc64_sysv_abi_return_value_base): New function. (ppc64_sysv_abi_return_value): Refactor to use it.
2014-02-04Document support for powerpc64le-*-linux* targetUlrich Weigand2-0/+7
gdb/ChangeLog: * NEWS: Document new target powerpc64le-*-linux*.
2014-02-04Add support for ELF core files on OpenBSD/sparc64.Mark Kettenis2-10/+51
gdb/ChangeLog: * sparc64obsd-tdep.c (sparc64obsd_gregset): New variable. (sparc64obsd_supply_gregset): Handle registers sets used in ELF core dumps. (sparc64obsd_init_abi): Adjust minimum size of the general purpose register set used in ELF core dumps. Add floating-point register set.
2014-02-03Update mn10300 dwarf register mapKevin Buettner2-7/+28
This change updates the mn10300 dwarf register map. It reduces the failure count when doing simulator testing against the default multilib from 788 to 99. gdb/ChangeLog: * mn10300-tdep.c (mn10300_dwarf2_reg_to_regnum): Rewrite dwarf2_to_gdb[] table using symbolic constants. Adjust penultimate entry from number representing the PC register to symbolic constant representing the MDR register. Add constant for the PC register to the end of the table.
2014-02-04daily updateAlan Modra1-1/+1
2014-02-03Nios II large-GOT relocationsSandra Loosemore10-18/+192
2014-02-03 Sandra Loosemore <sandra@codesourcery.com> include/elf/ * nios2.h (R_NIOS2_GOT_LO, R_NIOS2_GOT_HA): New. (R_NIOS2_CALL_LO, R_NIOS2_CALL_HA): New. (R_NIOS2_ILLEGAL): Adjust. gas/ * config/tc-nios2.c (md_apply_fix): Test for new relocs. (nios2_special_reloc): Add %call_lo, %call_hiadj, %got_lo, %got_hiadj relocation operators. Sort table and add comment to explain ordering. (nios2_fix_adjustable): Test for new relocs. * doc/c-nios2.texi (Nios II Relocations): Document new relocation operators. bfd/ * reloc.c (BFD_RELOC_NIOS2_GOT_LO, BFD_RELOC_NIOS2_GOT_HA): New. (BFD_RELOC_NIOS2_CALL_LO, BFD_RELOC_NIOS2_CALL_HA): New. * libbfd.h: Regenerated. * bfd-in2.h: Regenerated. * elf32-nios2.c (elf_nios2_howto_table_rel): Add new relocations. (nios2_reloc_map): Likewise. (GOT_USED, CALL_USED): Renamed from GOT16_USED and CALL16_USED. Fixed all references. (nios2_elf32_relocate_section): Add new relocations. (nios2_elf32_check_relocs): Likewise. (nios2_elf32_gc_sweep_hook): Likewise.
2014-02-03Fix build on recent versions of OpenBSD.Mark Kettenis2-0/+5
gdb/ChangeLog: * bsd-kvm.c: Include <sys/param.h>
2014-02-03Fix build on OpenBSD/sparc64.Mark Kettenis2-1/+6
gdb/ChangeLog: * sparc64nbsd-nat.c (sparc64nbsd_supply_fpregset): Fix prototype.
2014-02-03ppc476 icache bug workaroundAlan Modra7-348/+681
This implements a work-around for an icache bug on 476 that can cause execution of stale instructions when control falls through from one page to the next. The idea is to prevent such fall-through by replacing the last instruction on a page with a branch to a patch area containing the instruction, then branch to the next page. The patch also fixes a number of bugs in the existing support for long branch trampolines. bfd/ * elf32-ppc.c (struct ppc_elf_link_hash_table): Add params. Delete emit_stub_syms, no_tls_get_addr_opt. Update all uses. (ppc_elf_link_params): New function. (ppc_elf_create_glink): Align .glink to 64 bytes for ppc476 workaround. (ppc_elf_select_plt_layout): Remove plt_style and emit_stub_syms parameters. Use htab->params instead. (ppc_elf_tls_setup): Remove no_tls_get_addr_opt parameter. (ppc_elf_size_dynamic_sections): Align __glink_PLTresolve to 64 bytes for ppc476 workaround. (struct ppc_elf_relax_info): New. (ppc_elf_relax_section): Exclude linker created sections and those too small to hold one instruction. Don't add another branch around trampolines on later relax passes. Don't generate trampolines for undefined symbols when !relocatable, nor for plugin symbols. Allocate space for ppc476 workaround patch area. Free fixups on error return path. (ppc_elf_relocate_section): Handle ppc476 workaround patching. * elf32-ppc.h (struct ppc_elf_params): New. (ppc_elf_select_plt_layout, ppc_elf_tls_setup): Update prototype. (ppc_elf_link_params): Declare. * section.c (SEC_INFO_TYPE_TARGET): Define. * bfd-in2.h: Regenerate. ld/ * emultempl/ppc32elf.em (no_tls_get_addr_opt, emit_stub_syms) plt_style): Delete. Adjust all refs to instead use.. (params): ..this. New variable. (ppc_after_open_output): New function. Tweak params and pass to ppc_elf_link_params. (ppc_after_open): Adjust ppc_elf_select_plt_layout call. (ppc_before_allocation): Adjust ppc_elf_tls_setup call. Enable relaxation for ppc476 workaround. (PARSE_AND_LIST_*): Add --{no-,}ppc476-workaround support. (LDEMUL_CREATE_OUTPUT_SECTION_STATEMENTS): Define.
2014-02-03daily updateAlan Modra1-1/+1
2014-02-02Correct Nios II GOT pointer initialization.Sandra Loosemore2-14/+53
2014-02-02 Sandra Loosemore <sandra@codesourcery.com> bfd/ * elf32-nios2.c (struct elf32_nios2_link_hash_table): Add h_gp_got field. (nios2_elf32_relocate_section): Use got_base to adjust GOT-pointer-relative relocations relative to _gp_got. (create_got_section): Create _gp_got symbol. (nios2_elf32_finish_dynamic_symbol): Make _gp_got absolute. (nios2_elf32_size_dynamic_sections): Set _gp_got offset.
2014-02-02Fix ALIGN_WITH_INPUTSebastian Huber11-20/+127
ld/ 2014-02-02 Sebastian Huber <sebastian.huber@embedded-brains.de> * ld/ld.texinfo: Change ALIGN_WITH_INPUT documentation. * ld/ldlang.c (lang_size_sections_1): Add dotdelta variable which reflects the VMA change due to alignment requirements. Use dotdelta do change the LMA if ALIGN_WITH_INPUT is requested. ld/testsuite/ChangeLog 2014-02-02 Sebastian Huber <sebastian.huber@embedded-brains.de> * ld-scripts/rgn-at9.d: New file. * ld-scripts/rgn-at9.t: Likewise. * ld-scripts/rgn-at10.d: Likewise. * ld-scripts/rgn-at10.s: Likewise. * ld-scripts/rgn-at10.t: Likewise. * ld-scripts/rgn-at11.d: Likewise. * ld-scripts/rgn-at11.t: Likewise.
2014-02-02daily updateAlan Modra1-1/+1
2014-02-01Fix MMIX build breakage from bfd_set_section_vma change.Hans-Peter Nilsson2-1/+7
* emultempl/mmix-elfnmmo.em (mmix_after_allocation): Fix typo in call to bfd_set_section_vma exposed by recent bfd_set_section_vma change.
2014-02-01daily updateAlan Modra1-1/+1