Commit Graph

81314 Commits

Author SHA1 Message Date
Sasa Stankovic 62661c935d Add NaCl (NativeClient) specific classes Target_mips_nacl and
Target_selector_mips_nacl.

gold/
	* mips.cc (Target_mips_nacl): New class.
	(Target_selector_mips_nacl): New class.
	(target_selector_mips32): Rename from target_selector_mips32be and use
	Target_selector_mips_nacl instead of Target_selector_mips.
	(target_selector_mips32el): Rename from target_selector_mips32 and use
	Target_selector_mips_nacl instead of Target_selector_mips.
	(target_selector_mips64): Rename from target_selector_mips64be and use
	Target_selector_mips_nacl instead of Target_selector_mips.
	(target_selector_mips64el): Rename from target_selector_mips64 and use
	Target_selector_mips_nacl instead of Target_selector_mips.
	(Target_mips::mips_info): Add const attribute.
2014-09-03 09:44:11 -07:00
Jiong Wang df7b4545b2 [PATCH/AArch64] Generic support for all system registers using mrs and msr
2014-09-03  Jiong Wang  <jiong.wang@arm.com>

  opcode/
    * aarch64-tbl.h (aarch64_opcode_table): Update encoding for mrs/msr.
    * aarch64-dis-2.c: Update auto-generated file.

  gas/
    * config/tc-aarch64.c (parse_sys_reg): Remove the restriction on op0 field.

  gas/testsuite/
    * gas/aarch64/illegal.s: Update testcase.
    * gas/aarch64/illegal.d: Likewise.
    * gas/aarch64/sysreg-1.s: Likewise.
    * gas/aarch64/sysreg-1.d: Likewise.
2014-09-03 14:53:53 +01:00
Jiong Wang ee804238f0 [PATCH/AArch64] Implement LSE feature
2014-09-03  Jiong Wang  <jiong.wang@arm.com>

  gas/
	* config/tc-aarch64.c (parse_operands): Recognize PAIRREG.
	(aarch64_features): Add entry for lse extension.

  include/opcode/
	* aarch64.h (AARCH64_FEATURE_LSE): New feature added.
	(aarch64_opnd): Add AARCH64_OPND_PAIRREG.
	(aarch64_insn_class): Add lse_atomic.
	(F_LSE_SZ): New field added.
	(opcode_has_special_coder): Recognize F_LSE_SZ.

  opcode/
	* aarch64-tbl.h (QL_R4NIL): New qualifiers.
	(aarch64_feature_lse): New feature added.
	(LSE): New Added.
	(aarch64_opcode_table): New LSE instructions added.  Improve
	descriptions for ldarb/ldarh/ldar.
	(aarch64_opcode_table): Describe PAIRREG.
	* aarch64-opc.h (aarch64_field_kind): Add FLD_lse_sz.
	* aarch64-opc.c (fields): Add entry for F_LSE_SZ.
	(aarch64_print_operand): Recognize PAIRREG.
	(operand_general_constraint_met_p): Check reg pair constraints for CASP
	instructions.
	* aarch64-dis.c (aarch64_ext_regno_pair): New extractor for paired reg.
	(do_special_decoding): Recognize F_LSE_SZ.
	* aarch64-asm.c (do_special_encoding): Recognize F_LSE_SZ.

  gas/testsuite/
	* gas/aarch64/lse-atomic.d: New.
	* gas/aarch64/lse-atomic.s: Likewise.
	* gas/aarch64/illegal-lse.d: Likewise.
	* gas/aarch64/illegal-lse.l: Likewise.
	* gas/aarch64/illegal-lse.s: Likewise.
	* gas/aarch64/diagnostic.s: Check processor feature detect for lse
	instruction.
	* gas/aarch64/diagnostic.l: Likewise.
2014-09-03 14:53:53 +01:00
Gary Benson 97ea6506c4 x86 debug address register clarifications
The loop macro ALL_DEBUG_REGISTERS does not iterate over the status or
control registers, so its name is misleading.  This commit renames it
as ALL_DEBUG_ADDRESS_REGISTERS and updates all uses.  This commit also
updates its loop conditions to an equivalent but better form, and
makes two functions use it that had previously hardwired the loop.
A comment on a related field in the x86_debug_reg_state structure is
also updated to reflect that the field refers specifically to address
registers only.

gdb/ChangeLog:

	* nat/x86-dregs.h (ALL_DEBUG_REGISTERS): Renamed as...
	(ALL_DEBUG_ADDRESS_REGISTERS): New macro.  All uses updated.
	Loop conditions	changed to equivalent form.
	(struct x86_debug_reg_state): Updated dr_ref_count comment.
	* x86-linux-nat.c (x86_linux_prepare_to_resume): Use
	ALL_DEBUG_ADDRESS_REGISTERS.

gdb/gdbserver/ChangeLog:

	* linux-x86-low.c (x86_linux_prepare_to_resume): Use
	ALL_DEBUG_ADDRESS_REGISTERS.
2014-09-03 12:40:49 +01:00
Joel Brobecker d143781548 Fix dwarf2loc.h::dwarf2_evaluate_property function description.
gdb/ChangeLog:

        * dwarf2loc.h (dwarf2_evaluate_property): Minor function
        description fix.
2014-09-03 10:10:41 +02:00
Alan Modra 7db018e4e0 daily update 2014-09-03 09:30:52 +09:30
Doug Evans 9b94fcf1fa typeprint.c (find_global_typedef): Fix comment.
gdb/ChangeLog:

	* typeprint.c (find_global_typedef): Fix comment.
2014-09-02 16:29:16 -07:00
Cary Coutant 54674d3893 Make Elf_file::section_name() a const function, so that it can be used in
places where we have only a const Elf_file*.

elfcpp/
	* elfcpp_file.h (Elf_file::shnum): New const function.
	(Elf_file::shstrndx): New const function.
	(Elf_file::large_shndx_offset): New const function.
	(Elf_file::section_name): Add const attribute.
	(Elf_file::section_header_offset): Likewise.

gold/
	* dwp.cc (Sized_relobj_dwo::do_section_name): Add const attribute.
	* dynobj.h (Sized_dynobj::do_section_name): Likewise.
	* incremental.cc (Sized_relobj_incr::do_section_name): Likewise.
	(Sized_incr_dynobj::do_section_name): Likewise.
	* incremental.h (Sized_relobj_incr::do_section_name): Likewise.
	(Sized_incr_dynobj::do_section_name): Likewise.
	* object.h (Object::section_name): Likewise.
	(Object::do_section_name): Likewise.
	(Sized_relobj_file::do_section_name): Likewise.
	* plugin.cc (Sized_pluginobj::do_section_name): Likewise.
	* plugin.h (Sized_pluginobj::do_section_name): Likewise.
2014-09-02 15:44:58 -07:00
Cary Coutant 9860cbcfb6 Fix problem with optimization of .eh_frame section and --sort-section option.
When --sort-section=name is used, gold will sort the linker-generated contents
of .eh_frame (after optimization) after the endcap provided by crtendS.o.
This causes two problems: the .eh_frame_hdr section is generated assuming that
the optimized .eh_frame contents will be placed at the very beginning of the
section, and the endcap no longer appears at the end of the section.

This patch fixes the first problem by adjusting FDE offsets to take into account
the actual starting offset within the output section, and fixes the second
problem by sorting linker-generated (Output_section_data) sections based on the
name of the output section.

gold/
	PR gold/17005
	* ehframe.cc (Fde::write): Add output_offset parameter.
	(Cie::write): Likewise.
	(Eh_frame::set_final_data_size): Account for offset within output
	section.
	(Eh_frame::do_sized_write): Likewise.
	* ehframe.h (Fde::write): Add output_offset parameter.
	(Cie::write): Likewise.
	* output.cc (Output_section::Input_section_sort_entry): Remove
	section_has_name_; add output_section_name parameter. Use
	output section name for non-input sections.
	(Output_section::Input_section_sort_entry::section_has_name): Remove.
	(Output_section::Input_section_sort_entry::section_has_name_): Remove.
	(Output_section::Input_section_sort_compare): Remove logic for
	sections without names.
	(Output_section::Input_section_sort_init_fini_compare): Likewise.
	(Output_section::Input_section_sort_section_prefix_special_ordering_compare):
	Likewise.
	(Output_section::Input_section_sort_section_name_compare): Likewise.
2014-09-02 14:49:18 -07:00
Gary Benson df7e526582 Rename 32- and 64-bit Intel files from "i386" to "x86"
This commit renames nine files that contain code used by both 32- and
64-bit Intel ports such that their names are prefixed with "x86"
rather than "i386".  All types, functions and variables within these
files are likewise renamed such that their names are prefixed with
"x86" rather than "i386".  This makes GDB follow the convention used
by gdbserver such that 32-bit Intel code lives in files called
"i386-*", 64-bit Intel code lives in files called "amd64-*", and code
for both 32- and 64-bit Intel lives in files called "x86-*".

This commit only renames OS-independent files.  The Linux ports of
both GDB and gdbserver now follow the i386/amd64/x86 convention fully.
Some ports still use the old convention where "i386" in file/function/
type/variable names can mean "32-bit only" or "32- and 64-bit" but I
don't want to touch ports I can't fully test except where absolutely
necessary.

gdb/ChangeLog:

	* i386-nat.h: Renamed as...
	* x86-nat.h: New file.  All type, function and variable name
	prefixes changed from "i386_" to "x86_".  All references updated.
	* i386-nat.c: Renamed as...
	* x86-nat.c: New file.  All type, function and variable name
	prefixes changed from "i386_" to "x86_".  All references updated.
	* common/i386-xstate.h: Renamed as...
	* common/x86-xstate.h: New file.  All type, function and variable
	name prefixes changed from "i386_" to "x86_".  All references
	updated.
	* nat/i386-cpuid.h: Renamed as...
	* nat/x86-cpuid.h: New file.  All type, function and variable name
	prefixes changed from "i386_" to "x86_".  All references updated.
	* nat/i386-gcc-cpuid.h: Renamed as...
	* nat/x86-gcc-cpuid.h: New file.  All type, function and variable
	name prefixes changed from "i386_" to "x86_".  All references
	updated.
	* nat/i386-dregs.h: Renamed as...
	* nat/x86-dregs.h: New file.  All type, function and variable name
	prefixes changed from "i386_" to "x86_".  All references updated.
	* nat/i386-dregs.c: Renamed as...
	* nat/x86-dregs.c: New file.  All type, function and variable name
	prefixes changed from "i386_" to "x86_".  All references updated.

gdb/gdbserver/ChangeLog:

	* i386-low.h: Renamed as...
	* x86-low.h: New file.  All type, function and variable name
	prefixes changed from "i386_" to "x86_".  All references updated.
	* i386-low.c: Renamed as...
	* x86-low.c: New file.  All type, function and variable name
	prefixes changed from "i386_" to "x86_".  All references updated.
2014-09-02 16:54:08 +01:00
Gary Benson ed859da732 Use XCNEW rather than xcalloc (1, ...) in linux-x86-low.c
This commit replaces two uses of xcalloc (1, ...) with XCNEW.

gdb/gdbserver/ChangeLog:

	* linux-x86-low.c (x86_linux_new_process): Use XCNEW.
	(x86_linux_new_thread): Likewise.
2014-09-02 16:31:20 +01:00
Alan Modra f1fb1cd70a daily update 2014-09-02 09:30:41 +09:30
Maciej W. Rozycki 1c3569d467 Move `_initialize_varobj' to the end of varobj.c
* varobj.c (_initialize_varobj): Move to the end of file.
2014-09-01 15:09:59 +01:00
Alan Modra e36bf69878 daily update 2014-09-01 09:30:42 +09:30
Alan Modra d126d60cdc daily update 2014-08-31 09:30:41 +09:30
Han Shen 8e33481e13 The 3rd patch for aarch64 gold.
This enables -
1. static linking hello world
2. limited support for TLSIE and TLSLE
3. limited support for linking shared library, linking executable against shared
   library.

gold/ChangeLog
2014-08-29 Han Shen <shenhan@google.com>
       Jing Yu <jingyu@google.com>

    * aarch64-reloc-property.cc
    (AArch64_reloc_property_table::reloc_name_in_error_message): Fix bug in
    reference reloc property in the table.
    * aarch64-reloc.def: Add TLSLE reloc types and fix some errors in
    3 other entries.
    * aarch64.cc: (Output_data_got_aarch64::add_static_reloc):
    2 new overloaded methods.
    (Output_data_got_aarch64::do_write): Add code to write out
    static relocs.
    (class Output_data_got_aarch64::Static_reloc): New class to wrap
    static relocs.
    (Output_data_got_aarch64::static_relocs): New vector to
    hold static relocs.
    (Target_aarch64::TCB_SIZE): New const static memeber.
    (Target_aarch64::tcb_size): New method.
    (Target_aarch64::Relocate::relocate): Add code handling new reloc types.
    (Target_aarch64::Relocate::relocate_tls): New method.
    (Target_aarch64::Scan::local): Add code handling new reloc types.
    (Target_aarch64::Scan::global): Add code handling new reloc types.
2014-08-29 17:53:03 -07:00
Alan Modra 6128f9cf2b ppc476 patch area size miscalculation
ppc476 sections that end exactly on a page boundary need the
workaround applied when a function ends in "bctr", or when pasting
together code from multiple sections.  The space allocated for the
patch area didn't allow for this case, while the code in
relocate_section performing the patches did, leading to an assertion
failure.

	* elf32-ppc.c (ppc_elf_relax_section): Fix off by one error.
2014-08-30 10:12:44 +09:30
Alan Modra 70cc888ddc daily update 2014-08-30 09:30:43 +09:30
Gary Benson 860789c7d5 Use exceptions and cleanups in gdbserver
This commit replaces the hacky "exception" system in gdbserver with
the exceptions and cleanups subsystem from GDB.

Only the catch/cleanup code in what was "main" has been updated to
use the new system.  Other parts of gdbserver can now be converted
to use TRY_CATCH and cleanups on an as-needed basis.

A side-effect of this commit is that some error messages will change
slightly, and in cases with multiple errors the error messages will
be printed in a different order.

gdb/gdbserver/ChangeLog:

	* server.h (setjmp.h): Do not include.
	(toplevel): Do not declare.
	(common-exceptions.h): Include.
	(cleanups.h): Likewise.
	* server.c (toplevel): Do not define.
	(exit_code): New static global.
	(detach_or_kill_for_exit_cleanup): New function.
	(main): New function.  Original main renamed to...
	(captured_main): New function.
	* utils.c (verror) [!IN_PROCESS_AGENT]: Use throw_verror.
2014-08-29 10:53:56 +01:00
Gary Benson ff55e1b548 Introduce common/common-exceptions.[ch]
This commit moves the exception throwing and catching code
into gdb/common/.  All exception printing code remains in
gdb/exceptions.[ch].

gdb/ChangeLog:

	* common/common-exceptions.h: New file.
	* common/common-exceptions.c: Likewise.
	* Makefile.in (SFILES): Add common/common-exceptions.c.
	(HFILES_NO_SRCDIR): Add common/common-exceptions.h.
	(COMMON_OBS): Add common-exceptions.o.
	(common-exceptions.o): New rule.
	* exceptions.h (common-exceptions.h): Include.
	(gdb_setjmp.h): Do not include.
	(return_reason): Moved to common-exceptions.h.
	(enum return_reason): Likewise.
	(RETURN_MASK): Likewise.
	(typedef return_mask): Likewise.
	(enum errors): Likewise.
	(struct gdb_exception): Likewise.
	(exceptions_state_mc_init): Likewise.
	(exceptions_state_mc_action_iter): Likewise.
	(exceptions_state_mc_action_iter_1): Likewise.
	(TRY_CATCH): Likewise.
	(throw_exception): Likewise.
	(throw_verror): Likewise.
	(throw_vquit): Likewise.
	(throw_error): Likewise.
	(throw_quit): Likewise.
	* exceptions.c (enum catcher_state): Moved to common-exceptions.c.
	(enum catcher_action): Likewise.
	(struct catcher): Likewise.
	(current_catcher): Likewise.
	(catcher_list_size): Likewise.
	(exceptions_state_mc_init): Likewise.
	(catcher_pop): Likewise.
	(exceptions_state_mc): Likewise.
	(exceptions_state_mc_action_iter): Likewise.
	(exceptions_state_mc_action_iter_1): Likewise.
	(throw_exception): Likewise.
	(exception_messages): Likewise.
	(exception_messages_size): Likewise.
	(throw_it): Likewise.
	(throw_verror): Likewise.
	(throw_vquit): Likewise.
	(throw_error): Likewise.
	(throw_quit): Likewise.
	(prepare_to_throw_exception): New function.

gdb/gdbserver/ChangeLog:

	* Makefile.in (SFILES): Add common/common-exceptions.c.
	(OBS): Add common-exceptions.o.
	(common-exceptions.o): New rule.
	* utils.c (prepare_to_throw_exception): New function.
2014-08-29 10:53:37 +01:00
Gary Benson e9bcb65852 Introduce common/gdb_setjmp.h
This commit creates a new file, common/gdb_setjmp.h, to hold some
portability macros for setjmp/longjmp et al. that are used by the
exceptions subsystem and by the demangler crash catcher.

gdb/ChangeLog:

	* common/gdb_setjmp.h: New file.
	* Makefile.in (HFILES_NO_SRCDIR): Add common/gdb_setjmp.h.
	* configure.ac: Move sigsetjmp check...
	* common/common.m4: ...here.
	* configure: Regenerate.
	* cp-support.c (SIGJMP_BUF): Delete.
	(SIGSETJMP): Likewise.
	(SIGLONGJMP): Likewise.
	* exceptions.h (gdb_setjmp.h): Include.
	(setjmp.h): Do not include.
	(EXCEPTIONS_SIGJMP_BUF): Delete.
	(EXCEPTIONS_SIGSETJMP): Likewise.
	(EXCEPTIONS_SIGLONGJMP): Likewise.
	Replace all uses of EXCEPTIONS_SIG* macros with SIG* macros
	from gdb_setjmp.h.
	* exceptions.c: Likewise.

gdb/gdbserver/ChangeLog:

	* config.in: Regenerate.
	* configure: Likewise.
2014-08-29 10:53:36 +01:00
Gary Benson e31806255f Move cleanups.[ch] to common
This commit moves cleanups.[ch] into gdb/common/.  The only change to
the content of the files is that cleanups.c's include list was altered
to match its new location.

gdb/ChangeLog:

	* cleanups.h: Moved to...
	* common/cleanups.h: New file.
	* cleanups.c: Moved to...
	* common/cleanups.c: New file.  Include common-defs.h and
	cleanups.h.  Do not include defs.h.
	* Makefile.in (SFILES): Replace cleanups.c with common/cleanups.c.
	(HFILES_NO_SRCDIR): Replace cleanups.h with common/cleanups.h.
	(cleanups.o): New rule.

gdb/gdbserver/ChangeLog:

	* Makefile.in (SFILES): Add common/cleanups.c.
	(OBS): cleanups.o.
	(cleanups.o): New rule.
2014-08-29 10:53:35 +01:00
Gary Benson e3d6ba5d32 Move internal_{,v}warning to common/errors.[ch]
This commit moves internal_warning and internal_vwarning into
common/errors.[ch].

gdb/ChangeLog:

	* common/errors.h (internal_warning): New declaration.
	(internal_vwarning): Likewise.
	* common/errors.c (internal_warning): New function.
	* utils.h (internal_warning): Don't declare.
	(internal_vwarning): Likewise.
	* utils.c (internal_warning): Removed.

gdb/gdbserver/ChangeLog:

	* utils.c (internal_vwarning): New function.
2014-08-29 10:53:35 +01:00
Gary Benson 075c703382 Unify startup and option-parsing warnings
Various warnings are emitted during startup and option-parsing using
fprintf_unfiltered.  One warning is prefixed with the command name,
the others are not.  This commit replaces these hardwired warnings
with calls to warning.  It also sets warning_pre_print to prefix all
warnings with the command name until option parsing is complete.

gdb/ChangeLog:

	* main.c (captured_main): Use warning during startup.
	Prefix startup warning messages with command name.
2014-08-29 10:12:04 +01:00
Gary Benson 91b35fd05c Replace all usage errors with calls to error
This commit replaces the hardwired fprintf/exit error handlers
for usage errors with calls to error.

gdb/ChangeLog:

	* main.c (captured_main): Handle usage errors with error.
2014-08-29 10:12:04 +01:00
Gary Benson b1ec390e09 Replace hardwired error handler in go32_create_inferior
go32_create_inferior invokes a hardwired fprintf/exit error handler
if v2loadimage fails.  I could find no reason for this other than that
the block seems to have been copy-and-pasted from v2loadimage's
manpage.  This commit replaces the hardwired handler with a call to
error.

gdb/ChangeLog:

	* go32-nat.c (go32_create_inferior): Replace a fprintf/
	exit pair with a call to error.  Wrap the message with _().
2014-08-29 10:12:03 +01:00
Gary Benson fd0ef3dda9 Replace hardwired error handler in captured_main
If the requested interpreter cannot be set captured_main reports the
error with a hardwired fprintf/exit pair.  A fprintf/exit pair on the
previous line was replaced with a call to error in March 2003
(https://sourceware.org/ml/gdb-patches/2003-03/msg00444.html) but I
found no documentation as to why this particular hardwired handler
was left untouched.  I was also unable to come up with a situation
where error would not be suitable, so I have replaced it with a call
to error.

gdb/ChangeLog:

	* main.c (captured_main): Replace a fprintf/exit
	pair with a call to error.  Wrap the message with _().
2014-08-29 10:12:02 +01:00
Gary Benson e0e6bcab59 Replace hardwired error handlers in tui_initialize_io
tui_initialize_io contains a pair of hardwired fprintf/exit error
handlers.  I was unable to find any documentation as to why they're
hardwired (the code appeared in a monolithic block back in 2001:
https://sourceware.org/ml/gdb-patches/2001-07/msg00490.html) and I
was also unable to come up with a situation where error would not
be suitable, so I have replaced both handlers with calls to error.

gdb/ChangeLog:

	* tui/tui-io.c (tui_initialize_io): Replace two fprintf/exit
	pairs with calls to error.  Wrap the message with _().
2014-08-29 10:12:01 +01:00
Gary Benson 0d2f5c0791 Make warning usable earlier
warning will crash if called before the first call to set_width.  This
commit makes the warning usable from the moment gdb_stderr is set up.

gdb/ChangeLog:

	* utils.c (vwarning): Protect calls to target_terminal_ours
	and wrap_here.
2014-08-29 10:12:00 +01:00
Gary Benson 5df4399815 Make error usable earlier
error (and other exception-throwing functions) are callable from the
first line of captured_main, but the exception printing code will
crash if called before the first call to set_width.  This commit makes
the exception printing code usable from the moment gdb_stderr is set
up.

gdb/ChangeLog:

	* exceptions.c (print_flush): Protect calls to
	target_terminal_ours and wrap_here.
2014-08-29 10:11:59 +01:00
Gary Benson 2437fd32f1 Make internal_vproblem always work
internal_vproblem can be called (via malloc_failure) from almost the
first line of captured_main, but it will crash if called before the
first call to set_width.  This commit makes internal_vproblem work
at any time.

There are two parts to this.  If called before gdb_stderr is set up,
internal_vproblem will fall back to printing the message on regular
stderr and aborting.  If called after gdb_stderr is set up but before
filtered printing is set up, internal_vproblem will operate as usual
except that it can not query whether to quit and/or dump core so it
defaults to doing both.

gdb/ChangeLog:

	* utils.h (filtered_printing_initialized): New declaration.
	* utils.c (abort_with_message): New function.
	(internal_vproblem): Use abort_with_message for first level
	recursive internal problems, and if gdb_stderr is not set up.
	Protect calls to target_terminal_ours, begin_line and query.
2014-08-29 10:11:59 +01:00
Alan Modra 4805fc5533 PowerPC64 call lacks nop error
* elf64-ppc.c (ppc64_elf_relocate_section): Report a different
	error for calls via a toc adjusting stub without a nop.
2014-08-29 10:52:50 +09:30
Alan Modra b138affb02 Prevent alpha_vms_object_p stopping bfd_check_format_matches scan
Any error other than bfd_error_wrong_format returned from object_p()
is effectively a fatal error.

	* vms-alpha.c (alpha_vma_object_p): Don't return file_truncated
	error.  Remove redundant bfd_set_error.
2014-08-29 10:37:52 +09:30
Alan Modra bd25671c6f Report an error for S-records with less than the miniumum size
* srec.c (srec_scan): Revert last change.  Report an error for
	S-records with less than the miniumum byte count.
2014-08-29 10:36:57 +09:30
Alan Modra 5a1431e66e Fix testsuite ld_simple_link_defsyms for windows targets
* lib/ld-lib.exp (ld_simple_link_defsyms): Provide both __main
	and ___main for windows targets.
2014-08-29 10:34:18 +09:30
Alan Modra 53e989de26 daily update 2014-08-29 09:30:41 +09:30
Doug Evans f1f58506e2 Move definition of some prologue-related functions to a better location.
gdb/ChangeLog:

	* symtab.c (in_prologue): Move definition to better spot.
	(skip_prologue_using_sal): Ditto.
2014-08-28 16:15:23 -07:00
Doug Evans aab2f20890 symtab.c (find_function_start_sal): Move definition to better spot.
gdb/ChangeLog:

	* symtab.c (find_function_start_sal): Move definition to better spot.
2014-08-28 16:09:50 -07:00
Doug Evans fb0576e983 Rewrite {amd64,i386}-pseudo.c to better specify register liveness.
clang was using eax to construct %0 here:

  asm ("mov %%eax, 0(%0)\n\t"
       "mov %%ebx, 4(%0)\n\t"
       "mov %%ecx, 8(%0)\n\t"
       "mov %%edx, 12(%0)\n\t"
       "mov %%esi, 16(%0)\n\t"
       "mov %%edi, 20(%0)\n\t"
       : /* no output operands */
       : "r" (data)
       : "eax", "ebx", "ecx", "edx", "esi", "edi");

which caused amd64-word.exp (and others similarly) to fail.
It's a perfectly legit thing for clang to do given the available data.
The patch fixes this by marking the registers as live from the
time of the preceding breakpoint.

gdb/testsuite/ChangeLog:

	* gdb.arch/amd64-pseudo.c (main): Rewrite to better specify when
	eax,etc. are live with values set by gdb and thus the compiler can't
	use them.
	* gdb.arch/i386-pseudo.c (main): Ditto.
2014-08-28 11:38:22 -07:00
H.J. Lu 376c8d5bbb Check S-record with 0 size
* srec.c (srec_scan): Return error for 0 size.
2014-08-28 08:24:19 -07:00
Gary Benson 7096e88625 Remove fatal function and prototype
This commit removes the now-unused fatal function and prototype.

gdb/gdbserver/ChangeLog:

	* utils.h (fatal): Remove declaration.
	* utils.c (fatal): Remove function.
2014-08-28 15:06:48 +01:00
Gary Benson 14ce319239 Convert fatal to perror_with_name in IPA code
This commit converts four calls to fatal into calls to
perror_with_name.  perror_with_name calls error, which
in IPA terminates with exit (1) rather than longjmp, so
there is no functional change here.

gdb/gdbserver/ChangeLog:

	* tracepoint.c (gdb_agent_init): Replace fatal with
	perror_with_name.
	(initialize_tracepoint): Likewise.
2014-08-28 15:06:48 +01:00
Gary Benson 50278d599d Convert fatal to error in remote_prepare
This commit converts a call to fatal in remote_prepare with a call to
error.  remote_prepare is called precisely once, from main, at a point
where jumping to toplevel will call exit (1), so error and fatal are
functionally equivalent at this point.  Note that remote_prepare calls
perror_with_name (which calls error) so callers of remote_prepare must
already handle the fact that it may exit via longjmp.

gdb/gdbserver/ChangeLog:

	* remote-utils.c (remote_prepare): Replace fatal with error.
2014-08-28 15:06:47 +01:00
Gary Benson aa96c426c6 Downgrade fatal to warning in linux_async
This commit downgrades a fatal error to a warning in linux_async.
linux_async is called from two different places in gdbserver:

 Via target_async from handle_accept_event.  The argument
   is always zero, so the warning will never be printed here.

 Via start_non_stop from handle_general_set.  This prints
   its own error message to stderr on failure, which will
   be preceded by the warning if it is emitted.

gdb/gdbserver/ChangeLog:

	* linux-low.c (linux_async): Replace fatal with warning.
	Tidy up and return.
	(linux_start_non_stop): Return -1 if linux_async failed.
2014-08-28 15:06:46 +01:00
Gary Benson f7160e9741 Convert fatal to gdb_assert in both i386_dr_low_set_addr
This commit converts if..fatal checks in both i386_dr_low_set_addr
implementations to gdb_asserts.  It's not obvious from the context,
but the conditional in both cases is changed to match the equivalent
conditional in the i386_dr_low_get_addr implementations.  Nothing
fundamental has changed because DR_FIRSTADDR is zero.  This commit
also removes a vague comment in Linux i386_dr_low_get_addr.  I could
have reworded the comment (and replicated it three times for the other
identical assertions) but I think the existence of specific functions
for the status and control registers makes it fairly obvious what is
going on.

gdb/gdbserver/ChangeLog:

	* linux-x86-low.c (i386_dr_low_set_addr): Replace check with
	gdb_assert.
	(i386_dr_low_get_addr): Remove vague comment.
	* win32-i386-low.c (i386_dr_low_set_addr): Replace check with
	gdb_assert.
2014-08-28 15:06:46 +01:00
Gary Benson 38e08fcac0 Straightforward fatal to internal_error conversions
This commit replaces most of the calls to fatal that represent
internal errors with calls to internal_error, either directly
or via gdb_assert and gdb_assert_not_reached.

gdb/gdbserver/ChangeLog:

	* inferiors.c (get_thread_process): Replace check with gdb_assert.
	* linux-low.c (linux_wait_for_event_filtered): Replace fatal with
	internal_error.
	(linux_resume_one_lwp): Likewise.
	* linux-x86-low.c (x86_siginfo_fixup): Replace checks with
	gdb_assert.
	* mem-break.c (raw_bkpt_type_to_target_hw_bp_type): Replace fatal
	with internal_error.
	* regcache.c (get_thread_regcache): Replace check with gdb_assert.
	(init_register_cache): Replace fatal with gdb_assert_not_reached.
	(find_register_by_name): Replace fatal with internal_error.
	(find_regno): Likewise.
	* tdesc.c (init_target_desc): Replace check with gdb_assert.
	* thread-db.c (thread_db_create_event): Likewise.
	(thread_db_load_search): Likewise.
	(try_thread_db_load_1): Likewise.
	* tracepoint.c (get_jump_space_head): Replace fatal with
	internal_error.
	(claim_trampoline_space): Likewise.
	(have_fast_tracepoint_trampoline_buffer): Likewise.
	(cmd_qtstart): Likewise.
	(stop_tracing): Likewise.
	(fast_tracepoint_collecting): Likewise.
	(target_malloc): Likewise.
	(download_tracepoint): Likewise.
	(download_trace_state_variables): Replace check with gdb_assert.
	(upload_fast_traceframes): Replace fatal with internal_error.
2014-08-28 15:06:45 +01:00
Gary Benson 6aefca7e49 Shadow SIM's debug_printf function
GDB and SIM both have functions called "debug_printf", which conflicts
at link time.  This commit shadows SIM's debug_printf with a macro so
that SIM's symbol ends up being called "sim_debug_printf".

sim/common/ChangeLog:

	* sim-trace.h (debug_printf): New define.
2014-08-28 11:59:09 +01:00
Yao Qi 6b65d1b6b3 arm software watchpoint: return to epilogue
Hi,
This patch is to handle a software watchpoint case that program returns
to caller's epilogue, and it causes the fail in thumb mode,

finish^M
Run till exit from #0  func () at gdb/testsuite/gdb.base/watchpoint-cond-gone.c:26^M
0x000001f6 in jumper ()^M
(gdb) FAIL: gdb.base/watchpoint-cond-gone.exp: Catch the no longer valid watchpoint

In the test, jumper calls func, and programs returns from func to
jumper's epilogue, IOW, the branch instruction is the last instruction
of jumper's function body.

    jumper:
    .....
    0x000001f2 <+10>:    bl      0x200   [1] <---- indirect call to func
    0x000001f6 <+14>:    mov     sp, r7  [2] <---- start of the epilogue
    0x000001f8 <+16>:    add     sp, #8
    0x000001fa <+18>:    pop     {r7}
    0x000001fc <+20>:    pop     {r0}
    0x000001fe <+22>:    bx      r0

When the inferior returns from func back to jumper, it is expected
that an expression of a software watchpoint becomes out-of-scope.
GDB validates the expression by checking the corresponding frame,
but this check is guarded by gdbarch_in_function_epilogue_p.  See
breakpoint.c:watchpoint_check.

It doesn't work in this case, because program returns from func's
epilogue back to jumper's epilogue [2], GDB thinks the program is
still within the epilogue, but in fact it goes to a different one.
When PC points at [2], the sp-restore instruction is to be
executed, so the stack frame isn't destroyed yet and we can still
use the frame mechanism reliably.

Note that when PC points to the first instruction of restoring SP,
it is part of epilogue, but we still return zero.  When goes to
the next instruction, the backward scan will still match the
epilogue sequence correctly.  The reason for doing this is to
handle the "return-to-epilogue" case.

What this patch does is to restrict the epilogue matching that let
GDB think the first SP restore instruction isn't part of the epilogue,
and fall back to use frame mechanism.  We set 'found_stack_adjust'
zero before backward scan, and we've done this for arm mode
counterpart (arm_in_function_epilogue_p) too.

The patch is tested in arm-none-eabi and arm-none-linux-gnueabi with
various multilibs.  OK to apply?

gdb:

2014-08-28  Yao Qi  <yao@codesourcery.com>

	* arm-tdep.c (thumb_in_function_epilogue_p): Don't set
	found_stack_adjust in forward scan.  Remove condition check
	on found_stack_adjust which is always true.  Indent the code.
2014-08-28 15:21:21 +08:00
Yao Qi a1b34d156a Remove dwarf_decode_lines argumewant_line_info
Hi,
dwarf_decode_lines is called in two functions,
dwarf2_build_include_psymtabs and handle_DW_AT_stmt_list, in which, 1
is passed to argument 'want_line_info' and 'want_line_info' is a
conditional variable in dwarf_decode_lines.  We can simplify it by
removing 'want_line_info' and propagating the constant 1 into
dwarf_decode_lines.  This is what this patch does.  This patch also
remove one line comment about WANT_LINE_INFO in
handle_DW_AT_stmt_list, as handle_DW_AT_stmt_list doesn't have such
argument.

gdb:

2014-08-28  Yao Qi  <yao@codesourcery.com>

	* dwarf2read.c (dwarf_decode_lines): Update declaration.
	(handle_DW_AT_stmt_list): Remove comment about WANT_LINE_INFO.
	(dwarf_decode_lines): Remove argument
	want_line_info.  Remove condition check on want_line_info.
	Callers update.
2014-08-28 10:44:15 +08:00
Alan Modra 53116d5d21 daily update 2014-08-28 09:30:36 +09:30