Andreas Schwab [Tue, 28 Apr 2015 18:32:06 +0000 (20:32 +0200)]
Eat newlines inside INPUT statements in linker scripts
ld/
PR ld/18344
* ldlex.l (INPUTLIST): Increment lineno on newline.
John Baldwin [Tue, 28 Apr 2015 15:30:23 +0000 (11:30 -0400)]
Use "gdb_wait.h" instead of <sys/wait.h>.
gdb/ChangeLog:
* fbsd-nat.c: Include "gdb_wait.h" instead of <sys/wait.h>.
Renlin Li [Tue, 28 Apr 2015 16:10:26 +0000 (17:10 +0100)]
[ARM]Positively emit symbols for alignment
2015-04-28 Renlin Li <renlin.li@arm.com>
gas/
* config/tc-arm.c (arm_init_frag): Always emit mapping symbols.
gas/testsuite/
* gas/arm/thumb2_vpool_be.d: Adjust the desired output.
* gas/arm/vldconst_be.d: Ditto.
Patrick Palka [Thu, 23 Apr 2015 23:28:32 +0000 (19:28 -0400)]
Disable readline's SIGWINCH handler
We no longer need it as we handle SIGWINCH ourselves. Also move the
call to init_page_info() from initialize_utils() to the latter
function's only caller, gdb_init().
gdb/ChangeLog:
* utils.c (init_page_info): Set rl_catch_sigwinch to zero.
(initialize_utils): Move call of init_page_info() to ...
* top.c (gdb_init): ... here.
Patrick Palka [Thu, 23 Apr 2015 22:36:58 +0000 (18:36 -0400)]
Update our idea of our terminal's dimensions even outside of TUI
When in the CLI, GDB's "width" and "height" variables are not kept in sync
when the underlying terminal gets resized.
This patch fixes this issue by making sure sure to update GDB's "width"
and "height" variables in the !tui_active case of our SIGWINCH handler.
gdb/ChangeLog:
* tui/tui-win.c (tui_sigwinch_handler): Remove now-stale comment.
(tui_sigwinch_handler): Still update our idea of
the terminal's width and height even when TUI is not active.
Patrick Palka [Thu, 23 Apr 2015 22:31:38 +0000 (18:31 -0400)]
Introduce function for directly updating GDB's screen dimensions
... to replace the roundabout pattern of
execute_command ("set width %d");
execute_command ("set height %d");
for doing the same thing.
gdb/ChangeLog:
* utils.h (set_screen_width_and_height): Declare.
* utils.c (set_screen_width_and_height): Define.
* tui/tui-win.c (tui_update_gdb_sizes): Use it.
Gary Benson [Tue, 28 Apr 2015 11:21:32 +0000 (12:21 +0100)]
Use exec_file_find to prepend gdb_sysroot in follow_exec
This commit updates follow_exec to use exec_file_find to prefix
the new executable's filename with gdb_sysroot rather than doing
it longhand.
gdb/ChangeLog:
* infrun.c (solist.h): New include.
(follow_exec): Use exec_file_find to prefix execd_pathname
with gdb_sysroot.
Nick Clifton [Tue, 28 Apr 2015 10:22:57 +0000 (11:22 +0100)]
Fix compile time warnings about a local variable being used before it is set.
PR 18313
* cond.c (s_if): Stop compile time warning about stopc being used
before it is set.
(s_ifc): Likewise.
Andy Wingo [Tue, 28 Apr 2015 09:15:47 +0000 (11:15 +0200)]
Fix py-parameter.exp and scm-parameter.exp path matching
gdb/testsuite/ChangeLog:
* gdb.python/py-parameter.exp:
* gdb.guile/scm-parameter.exp: Escape the path that we are
matching against, as it might contain characters that are special
to regular expressions.
Alan Modra [Tue, 28 Apr 2015 07:15:34 +0000 (16:45 +0930)]
Tidy PowerPC gold find_global_entry uses
Completely removing the assert probably wasn't the best idea, so
reinstate it for allocated sections. Also cope with debug info
potentially referring to a missing plt call stub.
And a tidy. find_global_entry now returns an Address, so make temps
holding the return value of type Address, and compare against
invalid_address.
* powerpc.cc (Target_powerpc::do_dynsym_value): Use Address rather
than unsigned int for find_global_entry result temp. Compare
against invalid_address.
(Target_powerpc::do_plt_address_for_global): Likewise.
(Target_powerpc::Relocate::relocate): Likewise. Don't assert
on plt call stub existence for debug info. Do assert for plt
and global entry stub existence if an alloc section.
Alan Modra [Tue, 28 Apr 2015 03:58:29 +0000 (13:28 +0930)]
PowerPC gold assertion on missing global entry stub
Global entry stubs are used on ELFv2 to provide addresses for
functions not defined in a non-PIC executable but whose address is
taken, in much the same way as PLT stub code is used on other
targets to provide function addresses. We don't want to insert a
global entry stub just because (bogus) debug info refers to the
address of a non-local function, but we also don't want gold to die.
* powerpc.cc (Target_powerpc::Relocate::relocate): Don't assert
on missing global entry stub due to bogus debug info.
Patrick Palka [Sat, 25 Apr 2015 14:29:29 +0000 (10:29 -0400)]
TUI: avoid calling strcpy() on identical string objects
In tui_set_source_content(), when offset == 0 the source and destination
pointers of the call to strcpy() are actually the same. In this case
not only is strcpy() unnecessary but it is also UB when the two strings
overlap.
gdb/ChangeLog:
* tui/tui-source.c (tui_set_source_content): Avoid calling
strcpy() when offset is 0.
Patrick Palka [Sun, 26 Apr 2015 01:59:02 +0000 (21:59 -0400)]
Fix PR gdb/18155
For no good reason the function tui_free_window() is freeing the locator
window when we pass it an SRC_WIN or a DISASSEM_WIN. This behavior
doesn't make much sense because the locator window is always visible and
its contents do not change when the main window changes.
This behavior triggers the above PR because when we switch from one TUI
window to another (in the PR, from the src window to the asm window) we
call tui_free_window() on the previously active window (in the PR, the
src window). The function then frees the src window along with the
locator window and later we segfault when the now-active asm window
tries to query the locator window about the inferior's PC.
This patch fixes this apparently wrong behavior by changing
tui_free_window() to not free the locator window when we pass it an
SRC_WIN or a DISASSEM_WIN.
gdb/ChangeLog:
PR gdb/18155
* tui/tui-data.c (tui_free_window): Don't free the locator
window when passed an SRC_WIN or a DISASSEM_WIN.
Patrick Palka [Fri, 24 Apr 2015 12:26:50 +0000 (08:26 -0400)]
Make type-safe the 'content' field of struct tui_gen_win_info
The 'content' field of struct tui_gen_win_info currently has type
void ** but the field always stores an object of type tui_win_content.
Instead of unnecessarily casting to and from void ** we should just give
the field the type tui_win_content in the first place.
This patch does this and also eliminates all now-redundant casts
involving the 'content' struct field that I could find.
gdb/ChangeLog:
* tui/tui-data.h (struct tui_win_element): Forward-declare.
(tui_win_content): Move declaration.
(struct tui_gen_win_info): Give 'content' field the
type tui_win_content.
* tui/tui-data.c (init_content_element): Remove redundant and
erroneous casts.
(tui_add_content_elements): Remove erroneous cast.
* tui/tui-disasm.c (tui_set_disassem_content): Remove redundant
casts.
(tui_get_begin_asm_address): Likewise.
* tui/tui-regs.c (tui_show_registers): Likewise.
(tui_show_register_group): Likewise.
(tui_display_registers_from): Likewise.
(tui_check_register_values): Likewise.
* tui/tui-source.c (tui_set_source_content): Likewise.
(tui_set_source_content_nil): Likewise.
(tui_source_is_displayed): Likewise.
* tui/tui-stack.c (tui_show_locator_content): Likewise.
(tui_set_locator_fullname): Likewise.
(tui_set_locator_info): Likewise.
(tui_show_frame_info): Likewise.
* tui/tui-winsource.c (tui_clear_source_content): Likewise.
(tui_show_source_line): Likewise.
(tui_horizontal_source_scroll): Likewise.
(tui_update_breakpoint_info): Likewise.
(tui_set_exec_info_content): Likewise.
(tui_show_exec_info_content): Likewise.
(tui_alloc_source_buffer): Likewise.
(tui_line_is_displayed): Likewise.
(tui_addr_is_displayed): Likewise.
GDB Administrator [Tue, 28 Apr 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
John Baldwin [Sat, 18 Apr 2015 05:00:06 +0000 (01:00 -0400)]
Add support for catching exec events on FreeBSD.
FreeBSD kernels that support fork tracing always stop a process to
report events for exec. Such a process will have the PL_FLAG_EXEC
flag set in the pl_flags field of the ptrace_lwpinfo struct returned
by PT_LWPINFO. The structure does not include the pathname passed to
exec, so use fbsd_pid_to_exec_file to query the pathname of the
process' executable.
gdb/ChangeLog:
* fbsd-nat.c: (fbsd_wait) [PL_FLAG_EXEC]: Report TARGET_WAITKIND_EXECD
event if PL_FLAG_EXEC is set.
[PL_FLAG_EXEC] (fbsd_insert_exec_catchpoint): New function.
[PL_FLAG_EXEC] (fbsd_remove_exec_catchpoint): New function.
(fbsd_nat_add_target) [PL_FLAG_EXEC]: Set
"to_insert_exec_catchpoint" to "fbsd_insert_exec_catchpoint".
Set "to_remove_exec_catchpoint" to "fbsd_remove_exec_catchpoint".
John Baldwin [Fri, 17 Apr 2015 20:20:47 +0000 (16:20 -0400)]
Enable fork tracing for native FreeBSD targets.
Enable PT_FOLLOW_FORK on all processes. When this is enabled, both
the parent and child process stop when a fork or vfork occurs.
A target operation for wait uses PT_LWPINFO to fetch more detailed
information about the state of a stopped process. A parent process
sets the PL_FLAG_FORKED flag in the pl_flags field of the structure
returned by PT_LWPINFO as well as the pid of the new child process.
The child process sets the PL_FLAG_CHILD flag in the pl_flags field.
When a fork is detected, the wait hook waits for both processes to
report their respective events. It then reports the fork to GDB as
a single TARGET_WAITKIND_FORKED or TARGET_WAITKIND_VFORKED event.
The kernel does not guarantee the order the events are reported in.
If the parent process' event is reported first, then the wait hook
explicitly waits for the child process. If the child process' event
is reported first, the event is recorded on an internal list of
pending child events and the wait hook waits for another event.
Later when the parent process' event is reported, the parent will
use the previously-recorded child process event instead of explicitly
waiting on the child process.
To distinguish vfork events from fork events, the external process
structure for the child process is extracted from the kernel. The
P_PPWAIT flag is set in the ki_flags field of this structure if the
process was created via vfork, but it is not set for a regular fork.
gdb/ChangeLog:
* fbsd-nat.c: [PT_LWPINFO] New variable super_wait.
[TDP_RFPPWAIT] New variable fbsd_pending_children.
[TDP_RFPPWAIT] (fbsd_remember_child): New function.
[TDP_RFPPWAIT] (fbsd_is_child_pending): New function.
[TDP_RFPPWAIT] (fbsd_fetch_kinfo_proc): New function.
[PT_LWPINFO] (fbsd_wait): New function.
[TDP_RFPPWAIT] (fbsd_follow_fork): New function.
[TDP_RFPPWAIT] (fbsd_insert_fork_catchpoint): New function.
[TDP_RFPPWAIT] (fbsd_remove_fork_catchpoint): New function.
[TDP_RFPPWAIT] (fbsd_insert_vfork_catchpoint): New function.
[TDP_RFPPWAIT] (fbsd_remove_vfork_catchpoint): New function.
[TDP_RFPPWAIT] (fbsd_enable_follow_fork): New function.
[TDP_RFPPWAIT] (fbsd_post_startup_inferior): New function.
[TDP_RFPPWAIT] (fbsd_post_attach): New function.
(fbsd_nat_add_target) [PT_LWPINFO] Set "to_wait" to
"fbsd_wait".
[TDP_RFPPWAIT] Set "to_follow_fork" to "fbsd_follow_fork".
Set "to_insert_fork_catchpoint" to "fbsd_insert_fork_catchpoint".
Set "to_remove_fork_catchpoint" to "fbsd_remove_fork_catchpoint".
Set "to_insert_vfork_catchpoint" to "fbsd_insert_vfork_catchpoint".
Set "to_remove_vfork_catchpoint" to "fbsd_remove_vfork_catchpoint".
Set "to_post_startup_inferior" to "fbsd_post_startup_inferior".
Set "to_post_attach" to "fbsd_post_attach".
John Baldwin [Fri, 17 Apr 2015 18:02:03 +0000 (14:02 -0400)]
Add fbsd_nat_add_target.
Add a wrapper for add_target in fbsd-nat.c to override target operations
common to all native FreeBSD targets.
gdb/ChangeLog:
* fbsd-nat.c (fbsd_pid_to_exec_file): Mark static.
(fbsd_find_memory_regions): Mark static.
(fbsd_nat_add_target): New function.
* fbsd-nat.h: Export fbsd_nat_add_target and remove prototypes for
fbsd_pid_to_exec_file and fbsd_find_memory_regions.
* amd64fbsd-nat.c (_initialize_amd64fbsd_nat): Use fbsd_nat_add_target.
* i386fbsd-nat.c (_initialize_i386fbsd_nat): Likewise.
* ppcfbsd-nat.c (_initialize_ppcfbsd_nat): Likewise.
* sparc64fbsd-nat.c (_initialize_sparc64fbsd_nat): Likewise.
Han Shen [Mon, 27 Apr 2015 22:01:44 +0000 (15:01 -0700)]
[gold] Rename '--fix-cortex-a53' to '--fix-cortex-a53-843419'.
Keep gold consistent with bfd erratum-fixing option names, so as to
ease life in Makefile/scripts.
gold/
* options.h (--fix-cortex-a53-843419): Rename option.
* aarch64.cc (AArch64_relobj::do_count_local_symbols): Use renamed
option.
(AArch64_relobj::scan_sections_for_stubs): Use renamed option.
Rafael Ávila de Espíndola [Mon, 27 Apr 2015 18:33:02 +0000 (14:33 -0400)]
If a range is missing, assume the input address is mapped.
When Output_section::is_input_address_mapped is called we have entries for
all dropped ranges, but not for all ranges.
Peter Bergner [Mon, 27 Apr 2015 16:06:54 +0000 (11:06 -0500)]
opcodes/
* ppc-opc.c (DCBT_EO): New define.
(powerpc_opcodes) <lbarx>: Enable for POWER8 and later.
<lharx>: Likewise.
<stbcx.>: Likewise.
<sthcx.>: Likewise.
<waitrsv>: Do not enable for POWER7 and later.
<waitimpl>: Likewise.
<dcbt>: Default to the two operand form of the instruction for all
"old" cpus. For "new" cpus, use the operand ordering that matches
whether the cpu is server or embedded.
<dcbtst>: Likewise.
gas/testsuite/
* gas/ppc/a2.s: Fixup test case due to dcbt/dcbtst embedded operand
ordering change.
* gas/ppc/a2.d: Likewise.
* gas/ppc/476.d: Likewise.
* gas/ppc/booke.s: Remove invalid 3 operand dcbt tests.
* gas/ppc/booke.d: Likewise.
* gas/ppc/power7.s: Remove lbarx, lharx, stbcx., sthcx., waitrsv
and waitimpl tests.
* gas/ppc/power7.d: Likewise.
Gary Benson [Mon, 27 Apr 2015 10:46:13 +0000 (11:46 +0100)]
Do not manipulate "target:" filenames as local paths
This commit alters two places that manipulate object file filenames
to detect "target:" filenames and to not attempt to manipulate them
as paths on the local filesystem:
- allocate_objfile is updated to not attempt to expand "target:"
filenames with gdb_abspath.
- load_auto_scripts_for_objfile is updated to not attempt to load
auto-load scripts for object files with "target:" filenames.
gdb/ChangeLog:
* objfiles.c (allocate_objfile): Do not attempt to expand name
if name is a "target:" filename.
* auto-load.c (load_auto_scripts_for_objfile): Do not attempt
to load auto-load scripts for objfiles with "target:" filenames.
Senthil Kumar Selvaraj [Mon, 27 Apr 2015 08:56:04 +0000 (14:26 +0530)]
sim: avr: Fix 'multiple definition of sim_{read,write}'
This patch does whatever was done in
https://sourceware.org/ml/gdb-patches/2015-04/msg00437.html to fix
broken gdb build for the AVR target.
Renlin Li [Mon, 27 Apr 2015 10:36:12 +0000 (11:36 +0100)]
[AArch64] Don't try to align insn in non-executale section
2015-04-27 Renlin Li <renlin.li@arm.com>
gas/
* config/tc-aarch64.c (s_aarch64_inst): Don't align code for non-text
section.
(md_assemble): Likewise, move the align code outside the loop.
Andreas Arnez [Mon, 27 Apr 2015 09:38:47 +0000 (11:38 +0200)]
S390: Vector ABI support
With the S390 vector ABI, vector registers are used for passing vector
arguments and for returning a vector. Support this ABI in inferior
function calls and when setting or retrieving a function's return
value.
gdb/ChangeLog:
* s390-linux-tdep.c: Include "elf/s390.h" and "elf-bfd.h".
(enum s390_vector_abi_kind): New enum.
(struct gdbarch_tdep)<vector_abi>: New field.
(s390_effective_inner_type): Add parameter min_size. Stop
unwrapping if the inner type is smaller than min_size.
(s390_function_arg_float): Adjust call to
s390_effective_inner_type.
(s390_function_arg_vector): New function.
(s390_function_arg_integer): Adjust comment.
(struct s390_arg_state)<vr>: New field.
(s390_handle_arg): Add parameter 'is_unnamed'. Pass vector
arguments according to vector ABI when appropriate.
(s390_push_dummy_call): Initialize the argument state's field
'vr'. Adjust calls to s390_handle_arg.
(s390_register_return_value): Handle vector return values.
(s390_return_value): Apply the "register" return value convention
to a vector when appropriate.
(s390_gdbarch_init): Initialize tdep->vector_abi.
* NEWS: Announce S390 vector ABI support.
Andreas Arnez [Mon, 27 Apr 2015 09:38:47 +0000 (11:38 +0200)]
S390: Re-arrange implementation of s390_return_value
Move related logic in the implementation of s390_return_value closer
together. This makes it easier to read and extend.
gdb/ChangeLog:
* s390-linux-tdep.c (s390_return_value_convention): Remove
function. Inline its logic...
(s390_return_value): ...here. Instead, move the handling of the
"register" return value convention...
(s390_register_return_value): ...here. New function.
Andreas Arnez [Mon, 27 Apr 2015 09:38:46 +0000 (11:38 +0200)]
S390: Restructure s390_push_dummy_call
Simplify the structure of s390_push_dummy_call and its various helper
functions. This reduces the code and makes it easier to extend. The
new code should be functionally equivalent to the old one, except that
copies created by the caller are now always aligned on an 8-byte
boundary.
gdb/ChangeLog:
* s390-linux-tdep.c
(is_float_singleton): Remove function. Move the "singleton" part
of the logic...
(s390_effective_inner_type): ...here. New function.
(is_float_like): Remove function. Inline its logic...
(s390_function_arg_float): ...here.
(is_pointer_like, is_integer_like, is_struct_like): Remove
functions. Inline their logic...
(s390_function_arg_integer): ...here.
(s390_function_arg_pass_by_reference): Remove function.
(extend_simple_arg): Remove function.
(alignment_of): Remove function.
(struct s390_arg_state): New structure.
(s390_handle_arg): New function.
(s390_push_dummy_call): Move parameter placement logic to the new
function s390_handle_arg. Call it for calculating the stack area
sizes first, and again for actually writing the parameters.
Andreas Arnez [Mon, 27 Apr 2015 09:38:46 +0000 (11:38 +0200)]
S390: For zero, let is_power_of_two() return false
This fixes a minor issue with the helper function is_power_of_two(),
which returned non-zero ("true") if the argument was zero. This led
to a wrong decision when passing a zero-sized struct in an inferior
function call.
gdb/ChangeLog:
* s390-linux-tdep.c (is_power_of_two): Add comment. Return
false if the argument is zero.
Pierre-Marie de Rodat [Mon, 27 Apr 2015 09:06:07 +0000 (11:06 +0200)]
[Ada] Cache all static structures and reset cache during resolution
Currently, ada-lang.c:template_to_static_fixed_type (working on
structure types only) caches its result into the unused TYPE_TARGET_TYPE
field. This introduces inconsistencies when the input type is
specialized, for instance during type resolution: the cached static
fixed type is copied along with the original type, but it's no longer
adapted to the copy once the copy is modified:
template_to_static_fixed_type has to compute another static fixed type
for it.
This change first introduces a cache reset during type resolution for
structure types so that this inconsistency does not happen anymore. It
also makes template_to_static_fixed_type smarter with respect to types
that do not need static fixed copies so that less computations is done
in general.
This inconsistency was spotted thanks to code reading, not because of
any sort of failure and we did not manage to exhibit a failure yet, so
no testcase for this.
gdb/ChangeLog:
* ada-lang.c (template_to_static_fixed_type): Return input type
when it is already fixed. Cache the input type itself when not
creating a static fixed copy. Make it explicit that we never
molestate the input type.
* gdbtypes.c (resolve_dynamic_struct): Reset the
TYPE_TARGET_TYPE field for resolved copies.
Joel Brobecker [Mon, 27 Apr 2015 09:04:47 +0000 (11:04 +0200)]
[Ada] Preserve typedef layer when getting struct element
Consider the following declarations:
type Int_Access is access Integer;
type Record_Type is record
IA : Int_Access;
end record;
R : Record_Type;
Printing the type name of "R.IA" yields:
(gdb) whatis r.ia
type = access integer
It should be:
(gdb) whatis r.ia
type = bar.int_access
Looking at the debugging info, field "r.ia" is defined as
a typedef which has the name of the field type:
.uleb128 0x3 # (DIE (0x4e) DW_TAG_typedef)
.long .LASF4 # DW_AT_name: "bar__int_access"
.long 0x8b # DW_AT_type
... with the typedef's target type being an anonymous pointer
type:
.uleb128 0x7 # (DIE (0x8b) DW_TAG_pointer_type)
.byte 0x8 # DW_AT_byte_size
.long 0x91 # DW_AT_type
What happens here is that a couple of function in ada-lang.c
always start by stripping all typedef layers when handling
struct fields, with the effect of making us lose the type name
in this case.
We did not understand this at the time the code was written,
but typedefs should be stripped only when we know we do not
need them. So this patch, adjust the code to avoid the stripping
while handling the fields, and adds it back in the lone place
which handles the result of processing and didn't know how to
handle typedefs struct fields yet.
gdb/ChangeLog:
* ada-lang.c (ada_is_tagged_type): Add call to ada_check_typedef.
(ada_lookup_struct_elt_type): Remove calls to ada_check_typedef.
(template_to_static_fixed_type): Call ada_check_typedef only
when necessary.
gdb/testsuite/ChangeLog:
* gdb.ada/rec_comp: New testcase.
Andreas Krebbel [Mon, 27 Apr 2015 08:32:23 +0000 (10:32 +0200)]
S/390: z13 use GNU attribute to indicate vector ABI
bfd/
* elf-s390-common.c (elf_s390_merge_obj_attributes): New function.
* elf32-s390.c (elf32_s390_merge_private_bfd_data): Call
elf_s390_merge_obj_attributes.
* elf64-s390.c (elf64_s390_merge_private_bfd_data): New function.
binutils/
* readelf.c (display_s390_gnu_attribute): New function.
(process_s390_specific): New function.
(process_arch_specific): Call process_s390_specific.
gas/
* doc/as.texinfo: Document Tag_GNU_S390_ABI_Vector.
include/elf/
* s390.h: Define Tag_GNU_S390_ABI_Vector.
Andreas Krebbel [Mon, 27 Apr 2015 08:29:16 +0000 (10:29 +0200)]
S/390: Fixes for z13 instructions.
opcodes/
* s390-opc.c: New instruction type VV0UU2.
* s390-opc.txt: Fix instruction types for VFCE, VLDE, VFSQ, WFK,
and WFC.
gas/testsuite/
* gas/s390/zarch-z13.d: Fix tests for VFCE, VLDE, VFSQ, WFK, and
WFC.
* gas/s390/zarch-z13.s: Likewise.
Andreas Krebbel [Mon, 27 Apr 2015 08:24:24 +0000 (10:24 +0200)]
S/390: Fix gotreloc_31-1 testcase.
Since we changed the default arch for objdump to zarch the following
testcase needs to check for the real instruction mnemonics instead of
just bytes.
This fixes the following testsuite fail on s390x:
FAIL: GOT: symbol address load from got to larl
GDB Administrator [Mon, 27 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
Sergio Durigan Junior [Sun, 26 Apr 2015 19:34:29 +0000 (15:34 -0400)]
Clear variable "coredump_var_addr" before using it on gdb.base/coredump-filter.exp
This commit is a continuation of the fix committed on:
commit
8cd8f2f8ac49276437b7da37f275706ea1c1c925
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date: Mon Apr 13 02:40:08 2015 -0400
Rename variable "addr" to "coredump_var_addr" in gdb.base/coredump-filter.exp
Pedro pointed out that this fix was not complete, because the
testsuite could be run several times in a row (for example), which
means that it is not enough to just make the variable name unique: it
also needs to be cleared out if it is global.
This commit does that. It is actually just a commit made to make
things totally correct; this specific test does not fail if you run it
several times in a row.
gdb/testsuite/ChangeLog:
2015-04-26 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.base/coredump-filter.exp: Clear variable "coredump_var_addr"
before using it.
GDB Administrator [Sun, 26 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
GDB Administrator [Sat, 25 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
Alan Modra [Fri, 24 Apr 2015 09:49:37 +0000 (19:19 +0930)]
Non-alloc sections don't belong in PT_LOAD segments
Taking them out showed a bug in the powerpc64 backend with .branch_lt
being removed from output_bfd but not from previously set up segment
section maps. Removing the bfd sections meant their sh_flags (and
practically everything else) remaining zero, ie. not SHF_ALLOC,
triggering complaints about "`.branch_lt' can't be allocated in
segment".
include/elf/
* internal.h (ELF_SECTION_IN_SEGMENT_1): Ensure PT_LOAD and
similar segments only contain alloc sections.
ld/
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_after_allocation):
Call gld${EMULATION_NAME}_map_segments regardless of need_laying_out.
ld/testsuite/
* ld-powerpc/tocnovar.d: Revert last change.
Jiong Wang [Fri, 24 Apr 2015 22:25:28 +0000 (23:25 +0100)]
[AArch64] PR18270, fix handling of GOT entry for local symbol
2015-04-24 Jiong. Wang <jiong.wang@arm.com>
bfd/
PR ld/18270
* elfnn-aarch64.c (elfNN_aarch64_size_dynamic): Count local symbol for
GOT_NORMAL for both sgot/srelgot section.
(elfNN_aarch64_final_link_relocate): Relocate against GOT entry address
and generate necessary runtime relocation for GOT entry.
H.J. Lu [Fri, 24 Apr 2015 22:02:56 +0000 (15:02 -0700)]
Copy is_linker_input to archive member
We must copy is_linker_input to archive member.
PR binutils/18209
* archive.c (_bfd_get_elt_at_filepos): Also copy is_linker_input.
Andrew Burgess [Thu, 23 Apr 2015 21:18:55 +0000 (22:18 +0100)]
gdb: Add internationalization support to a few strings.
Spotted a few strings that were missing internationalization support.
gdb/ChangeLog:
* cli/cli-dump.c (srec_dump_command): Add internationalization
mark ups.
(ihex_dump_command): Likewise.
(tekhex_dump_command): Likewise.
(binary_dump_command): Likewise.
(binary_append_command): Likewise.
Andrew Burgess [Wed, 22 Apr 2015 21:52:36 +0000 (22:52 +0100)]
gdb: Add support for dumping to verilog hex format.
Extend the gdb 'dump' command to allow creating output in verilog hex
format. Add some tests to cover new functionality. As bfd does not
currently support reading in verilog hex formats the tests only cover
the 'dump' command, not the 'restore' command.
gdb/ChangeLog:
* cli/cli-dump.c (verilog_cmdlist): New variable.
(dump_verilog_memory): New function.
(dump_verilog_value): New function.
(verilog_dump_command): New function.
(_initialize_cli_dump): Add new commands to support verilog dump
format.
* NEWS: Add entry for "dump verilog".
gdb/doc/ChangeLog:
* gdb.texinfo (Dump/Restore Files): Add detail about verilog dump
format.
gdb/testsuite/ChangeLog:
* gdb.base/dump.exp: Add *.verilog files to all_files list. Add
new tests for verilog output.
Jiong Wang [Fri, 24 Apr 2015 21:35:04 +0000 (22:35 +0100)]
[AArch64] Improve PC-relative relocation check for shared library
2015-04-24 Jiong. Wang <jiong.wang@arm.com>
bfd/
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Reject
PC-relative relocation for external symbol.
ld/testsuite/
* ld-aarch64/pcrel.s: New testcase.
* ld-aarch64/pcrel_pic_defiend_local.d: New expect file.
* ld-aarch64/pcrel_pic_undefined.d: Ditto.
* ld-aarch64/aarch64-elf.exp: Run them.
DJ Delorie [Fri, 24 Apr 2015 21:17:02 +0000 (17:17 -0400)]
Fix typo
DJ Delorie [Fri, 24 Apr 2015 21:05:13 +0000 (17:05 -0400)]
Change msp430 emulation to msp430elf
* Makefile.am (msp430): Rename primary emulation to msp430elf.
(emsp430.c): Rename to emsp430elf.c, update dependencies
(emsp430X.c): Update dependencies.
* Makefile.in: Likewise.
* configure.tgt (msp430-*-*): Rename primary emulation to msp430elf.
* emulparame/msp430.sh: Rename to msp430elf.sh.
* emulparams/msp430X.sh: Update.
Jim Wilson [Fri, 24 Apr 2015 20:38:25 +0000 (13:38 -0700)]
gas thunderx support
gas/
* config/tc-aarch64.c (aarch64_cpus): Add CRC and CRYPTO features
for thunderx.
Doug Evans [Fri, 24 Apr 2015 18:16:12 +0000 (11:16 -0700)]
* python.texi (Xmethods In Python): Fix name of method to call the xmethod.
gdb/doc/ChangeLog:
* python.texi (Xmethods In Python): Fix name of method to call the
xmethod.
Nick Clifton [Fri, 24 Apr 2015 16:13:22 +0000 (17:13 +0100)]
Fix compile time warning messages about variables being used before they are initialised.
PR 18313
bin * ieee.c (ieee_read_cxx_class): Initialise the varargs variable.
* readelf.c (uncompress_section_contents): Zero initialise the
zstream structure.
bfd * compress.c (decompress_contents): Zero initialse the z_stream
structure.
Richard Earnshaw [Fri, 24 Apr 2015 14:51:49 +0000 (15:51 +0100)]
[ARM]: Don't tail-pad over-aligned functions to the alignment boundary.
2015-04/24 Richard Earnshaw <rearnsha@arm.com>
gas/
* config/tc-arm.h (arm_min): New function.
(SUB_SEGMENT_ALIGN): Define.
gas/testsuite/
* gas/arm/align64.d: Delete trailing padding NOPs.
ld/testsuite/
* ld-arm/armthumb-lib.d: Regenerate expected output.
* ld-arm/armthumb-lib.d: Likewise.
* ld-arm/armthumb-lib.sym: Likewise.
* ld-arm/cortex-a8-fix-b-rel-arm.d: Likewise.
* ld-arm/cortex-a8-fix-b-rel-thumb.d: Likewise.
* ld-arm/cortex-a8-fix-b.d: Likewise.
* ld-arm/cortex-a8-fix-bcc-rel-thumb.d: Likewise.
* ld-arm/cortex-a8-fix-bcc.d: Likewise.
* ld-arm/cortex-a8-fix-bl-rel-arm.d: Likewise.
* ld-arm/cortex-a8-fix-bl-rel-plt.d: Likewise.
* ld-arm/cortex-a8-fix-bl-rel-thumb.d: Likewise.
* ld-arm/cortex-a8-fix-bl.d: Likewise.
* ld-arm/cortex-a8-fix-blx-bcond.d: Likewise.
* ld-arm/cortex-a8-fix-blx-rel-arm.d: Likewise.
* ld-arm/cortex-a8-fix-blx-rel-thumb.d: Likewise.
* ld-arm/cortex-a8-fix-blx.d: Likewise.
* ld-arm/cortex-a8-fix-hdr.d: Likewise.
* ld-arm/farcall-mixed-app-v5.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.
Nick Clifton [Fri, 24 Apr 2015 14:43:21 +0000 (15:43 +0100)]
Fix typos in sim sources exposed by static analysis.
bfin PR 18273
* bfin-sim.c (decode_dsp32alu_0): Remove spurious check for
s == 1.
erc32 PR 18273
* exec.c (add32): Fix typo in check for overflow.
igen PR 18273
* misc.c (a2i): Fix typos checking for uppercase letters.
Nick Clifton [Fri, 24 Apr 2015 14:31:36 +0000 (15:31 +0100)]
Fix typo in check for valid register number in RX sim.
PR sim/18273
* reg.c (put_reg): Fix check for valid register number.
Nick Clifton [Fri, 24 Apr 2015 14:17:13 +0000 (15:17 +0100)]
Extend test for local labels to include fake symbols and local labels with a numeric suffix.
* elf.c (_bfd_elf_is_local_label_name): Extend test for assembler
local labels to include local labels with a numeric suffix and
fake symbols.
Pierre-Marie de Rodat [Fri, 24 Apr 2015 14:13:19 +0000 (16:13 +0200)]
Fix printing for GNAT stuff for types that do not have descr. types
gdb/ChangeLog:
2015-04-24 Pierre-Marie de Rodat <derodat@adacore.com>
* gdbtypes.c (print_gnat_stuff): Do not recurse on the
descriptive type when there is none.
H.J. Lu [Fri, 24 Apr 2015 12:40:23 +0000 (05:40 -0700)]
Define SEC_MEP_VLIW in bfd/section.c
Bits in section flags should only be defined in bfd/section.c. This
patch moves SEC_MEP_VLIW to bfd/section.c.
bfd/
PR binutils/18316
* section.c (SEC_MEP_VLIW): New.
* bfd-in2.h: Regenerated.
include/elf/
PR binutils/18316
* mep.h (SEC_MEP_VLIW): Removed.
Yao Qi [Fri, 24 Apr 2015 10:00:14 +0000 (11:00 +0100)]
A new board file remote-gdbserver-on-localhost.exp
This patch is to add a new board file that does real remote gdbserver
testing on localhost. This board file can be used to reproduce PR 18208.
gdb/testsuite
2015-04-24 Yao Qi <yao.qi@linaro.org>
* boards/remote-gdbserver-on-localhost.exp: New file.
Nick Clifton [Fri, 24 Apr 2015 09:15:41 +0000 (10:15 +0100)]
Skip the compressed1d test for targets which do not use the elf32.em linker emulation file.
* ld-elf/compressed1d.d: Add notarget for ELF based targets that
do not use elf.em.
Hans-Peter Nilsson [Fri, 24 Apr 2015 04:10:19 +0000 (06:10 +0200)]
Correct ld-elf/compressed1e.d to use notarget and for cris-elf, not cris-*.
Don't XPASS cris-linux which *does* support -shared.
And xfail is for bugs, notarget is for not-applicable.
H.J. Lu [Fri, 24 Apr 2015 01:58:46 +0000 (18:58 -0700)]
Xfail cris and frv for ld-elf/compressed1e.d
cris and frv don't support -shared.
* ld-elf/compressed1e.d: Only run for Linux/gnu. Xfail cris and
frv.
GDB Administrator [Fri, 24 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
H.J. Lu [Thu, 23 Apr 2015 23:37:44 +0000 (16:37 -0700)]
Delay setting up compressed debug section names
When we set up st_name for output section name in elf_fake_sections, we
don't know if the compressed DWARF debug section will be smaller. We may
end up with compressed DWARF debug sections which are bigger than the
uncompressed ones. This patch delays setting up st_name for output DWARF
debug section to _bfd_elf_assign_file_positions_for_non_load which will
compress the output debug section. We also postpone placement of shstrtab
section after DWARF debug sections have been compressed. The net effect
is .shstrtab section is now placed after .symtab and .strtab sections.
bfd/
PR ld/18277
* compress.c (bfd_compress_section_contents): Remove the
write_compress argument.
(bfd_init_section_compress_status): Updated.
(bfd_compress_section): Likewise.
* elf.c (_bfd_elf_set_reloc_sh_name): New.
(_bfd_elf_init_reloc_shdr): Add delay_st_name_p. Set sh_name
to (unsigned int) -1 if delay_st_name_p is TRUE. Use
_bfd_elf_set_reloc_sh_name.
(elf_fake_sections): Don't rename DWARF debug section for
linker output if it will be compressed. Instead, set
delay_st_name_p to TRUE and pass it to _bfd_elf_init_reloc_shdr.
(assign_section_numbers): Call _bfd_elf_strtab_addref only if
sh_name != (unsigned int) -1. Don't finalize nor assign
shstrtab section here. Delay setting output section names to
_bfd_elf_write_object_contents.
(_bfd_elf_compute_section_file_positions): Update comments on
sh_offset for shstrtab section.
(assign_file_positions_for_non_load_sections): Set sh_offset to
-1 for shstrtab section.
(assign_file_positions_except_relocs): Likewise.
(_bfd_elf_assign_file_positions_for_non_load): Set up sh_name
when compressing DWARF debug sections. Place shstrtab section
after DWARF debug sections have been compressed.
(_bfd_elf_write_object_contents): Setting sh_name for output
sections.
ld/testsuite/
PR ld/18277
* ld-elf/compressed1d.d: New.
* ld-elf/compressed1e.d: Likewise.
Matthew Fortune [Thu, 23 Apr 2015 19:09:13 +0000 (20:09 +0100)]
Improve warning messages for la/dla
gas/
* config/tc-mips.c (macro): State the recommended way of creating
32-bit or 64-bit addresses.
gas/testsuite/
* gas/mips/dla-warn.l: New file.
* gas/mips/dla-warn.s: New file.
* gas/mips/la-warn.l: New file.
* gas/mips/la-warn.s: New file.
* gas/mips/mips.exp: Run new tests.
Sriraman Tallam [Thu, 23 Apr 2015 20:56:40 +0000 (13:56 -0700)]
Add option --weak-unresolved-symbols to treat unresolved symbols as weak ref.
This patch adds option --weak-unresolved-symbols to treat unresolved symbols as
weak references. This is helpful when we want the link to succeed with unresolved
symbols and the dynamic loader to not complain at run-time. Option
--warn-unresolved-symbols lets the link succeed but could fail at run-time with
unresolved symbol warnings especially when the unresolved symbols have GOT entries
and dynamic relocations against them, like when -fPIE is used.
Sriraman Tallam [Thu, 23 Apr 2015 20:48:24 +0000 (13:48 -0700)]
Add option --weak-unresolved-symbols to treat unresolved as weak references.
This patch adds option --weak-unresolved-symbols to treat unresolved symbols as
weak references. This is helpful when we want the link to succeed with unresolved
symbols and the dynamic loader to not complain at run-time. Option
--warn-unresolved-symbols lets the link succeed but could fail at run-time with
unresolved symbol warnings especially when the unresolved symbols have GOT entries
and dynamic relocations against them, like when -fPIE is used.
2015-04-23 Sriraman Tallam <tmsriram@google.com>
* options.h (--weak-unresolved-symbols): New option.
* symtab.cc (Symbol_table::sized_write_globals): Change symbol
binding to weak with new option.
* symtab.h (is_weak_undefined): Check for new option.
(is_strong_undefined): Check for new option.
* testsuite/Makefile.am (weak_unresolved_symbols_test): New test.
* testsuite/Makefile.in: Regenerate.
* testsuite/weak_unresolved_symbols_test.cc: New file.
Matthew Fortune [Thu, 23 Apr 2015 19:10:50 +0000 (20:10 +0100)]
Fix r6-branch-constraints test when run with n64 as default ABI
gas/testsuite/
* gas/mips/mips.exp: Require o32 for r6-branch-constraints.
H.J. Lu [Thu, 23 Apr 2015 14:58:05 +0000 (07:58 -0700)]
Don't change compressed input debug section names
Change compressed input debug section name for objdump is very confusing.
But we need to change it for linker so that linker will consider the
input section as a debug section. This patch delays section rename to
elf_fake_sections for objcopy and avoids it for objdump.
bfd/
PR binutils/18209
* bfd.c (bfd): Add is_linker_input.
* elf.c (convert_debug_to_zdebug): New.
(convert_zdebug_to_debug): Likewise.
(_bfd_elf_make_section_from_shdr): Don't convert .debug_* to
.zdebug_* here. Use convert_zdebug_to_debug. Set SEC_ELF_RENAME.
(_bfd_elf_init_reloc_shdr): Pass a pointer to section name
instead of a pointer to section.
(elf_fake_sections): Rename the section name if SEC_ELF_RENAME
is set.
* section.c (SEC_ELF_RENAME): New.
* bfd-in2.h: Regenerated.
binutils/
PR binutils/18209
* objcopy.c (setup_section): Copy compress status.
binutils/testsuite/
PR binutils/18209
* binutils-all/compress.exp: Replace dw2-3.W with dw2-3gabi.W
on zlib-gabi output.
* binutils-all/dw2-1.W: Convert section names to .zdebug_*.
* binutils-all/dw2-3.W: Likewise.
* binutils-all/objdump.W: Likewise.
* binutils-all/dw2-3gabi.W: New file.
ld/
PR binutils/18209
* ldfile.c (ldfile_try_open_bfd): Set is_linker_input to 1.
Pedro Alves [Thu, 23 Apr 2015 14:48:27 +0000 (15:48 +0100)]
Fix gdb.base/interrupt.exp racy fail against gdbserver
Currently, against gdbserver, interrupt.exp occasionaly fails like
this:
ERROR: Process no longer exists
UNRESOLVED: gdb.base/interrupt.exp: send end of file
The problem is that we see gdbserver exiting before we match gdb's
output:
expect: does "\r\n\r\nChild exited with status 0\r\nGDBserver exiting\r\n" (spawn_id exp8) match regular expression "end of file"? Gate "end of file"? gate=no
expect: read eof
expect: set expect_out(spawn_id) "exp8"
expect: set expect_out(buffer) "\r\n\r\nChild exited with status 0\r\nGDBserver exiting\r\n"
Fix this by removing $inferior_spawn_id from the set of spawn ids
expect is watching as soon as we see the "end of file" string out of
the inferior spawn id, using an indirect spawn id list.
Tested on x86-64 Fedora 20, native and gdbserver (both target remote
and extended-remote).
gdb/testsuite/ChangeLog:
2015-04-23 Pedro Alves <palves@redhat.com>
* gdb.base/interrupt.exp: Use an indirect spawn id list holding
$inferior_spawn_id instead of $inferior_spawn_id directly. On
"end of file", remove $inferior_spawn_id from the indirect list.
Pedro Alves [Thu, 23 Apr 2015 14:48:27 +0000 (15:48 +0100)]
gdb.base/interrupt.exp: Rename saw_eof to saw_end_of_file
To avoid confusion between "end of file" string matching and eof
matching, as in process exit.
gdb/testsuite/ChangeLog:
2015-04-23 Pedro Alves <palves@redhat.com>
* gdb.base/interrupt.exp: Rename saw_eof to saw_end_of_file.
Pedro Alves [Thu, 23 Apr 2015 14:48:26 +0000 (15:48 +0100)]
gdb_test_multiple match eof of any spawn_id
Since silent handling of eof is usually the wrong thing to do, this
patch makes gdb_test_multiple handle it for all $any_spawn_id.
Currently, against gdbserver, interrupt.exp occasionaly fails like
this:
FAIL: gdb.base/interrupt.exp: send end of file
gdb.log with expect debug output enabled shows:
expect: does "\r\n\r\nChild exited with status 0\r\nGDBserver exiting\r\n" (spawn_id exp8) match regular expression "end of file"? Gate "end of file"? gate=no
expect: read eof
expect: set expect_out(spawn_id) "exp8"
expect: set expect_out(buffer) "\r\n\r\nChild exited with status 0\r\nGDBserver exiting\r\n"
FAIL: gdb.base/interrupt.exp: send end of file
Note "expect: read eof" for spawn_id=exp8. exp8 is
inferior_spawn_id/gdbserver_spawn_id. That means
expect/gdb_test_multiple saw gdbserver exit before we got the expected
gdb output. Since there's no explicit pattern for "eof", expect (and
thus gdb_test_multiple) just returns.
After this commit, we get instead:
ERROR: Process no longer exists
UNRESOLVED: gdb.base/interrupt.exp: send end of file
Note that before we still got an FAIL because $saw_inferior_exit is 0
when we get to:
gdb_assert { $saw_eof && $saw_inferior_exit } $msg
Fixing the fail (now unresolved) will be the subject of a separate
patch.
gdb/testsuite/ChangeLog:
2015-04-23 Pedro Alves <palves@redhat.com>
* lib/gdb.exp (gdb_test_multiple): Match eof/full_buffer/timeout
on $any_spawn_id instead of only on $gdb_spawn_id.
Jan Beulich [Thu, 23 Apr 2015 14:42:40 +0000 (16:42 +0200)]
x86: disambiguate disassembly of certain AVX512 insns
Certain conversion operations as well as vfpclassp{d,s} are ambiguous
when the input operand is in memory and no broadcast is being used.
While in Intel mode this gets resolved by printing suitable operand
size modifiers, AT&T mode need mnemonic suffixes to be added.
gas/testsuite/
2015-04-23 Jan Beulich <jbeulich@suse.com>
* gas/i386/avx512dq.d: Add 'z' suffix to vfpclassp{d,s} non-
register, non-broadcast cases.
* gas/i386/x86-64-avx512dq.d: Likewise.
* gas/i386/avx512dq_vl.d: Add 'x' and 'y' suffixes to
vcvt{,u}qq2ps and vfpclassp{d,s} non-register, non-broadcast
cases.
* gas/i386/x86-64-avx512dq_vl.d: Likewise.
* gas/i386/avx512f_vl.d: Add 'x' and 'y' suffixes to
vcvt{,t}pd2{,u}dq and vcvtpd2ps non-register, non-broadcast
cases.
* gas/i386/x86-64-avx512f_vl.d: Likewise.
opcodes/
2015-04-23 Jan Beulich <jbeulich@suse.com>
* i386-dis.c (putop): Extend "XY" handling to AVX512. Handle "XZ".
* i386-dis-evex.h.c (vcvtpd2ps, vcvtqq2ps, vcvttpd2udq,
vcvtpd2udq, vcvtuqq2ps, vcvttpd2dq, vcvtpd2dq): Add %XY.
(vfpclasspd, vfpclassps): Add %XZ.
Jan Beulich [Thu, 23 Apr 2015 14:41:21 +0000 (16:41 +0200)]
x86: don't require operand size specification for AVX512 broadcasts
Certain conversion operations as well as vfpclassp{d,s} are ambiguous
when the input operand is in memory. That ambiguity, however, doesn't
apply when using broadcasts (the destination operand size can be
induced from the broadcast specifier).
gas/
2015-04-23 Jan Beulich <jbeulich@suse.com>
* config/tc-i386.c (match_mem_size): Also allow no size
specification when broadcasting.
gas/testsuite/
2015-04-23 Jan Beulich <jbeulich@suse.com>
* gas/i386/avx512dq.s: Drop 'z' suffix from vfpclassp{d,s} in
some AT&T and all Intel cases.
* gas/i386/x86-64-avx512dq.s: Likewise.
* gas/i386/avx512dq_vl.s: Drop 'x' and 'y' suffixes from
vcvt{,u}qq2ps and vfpclassp{d,s} in some AT&T and all Intel
cases.
* gas/i386/x86-64-avx512dq_vl.s: Likewise.
* gas/i386/avx512f_vl.s: Drop 'x' and 'y' suffixes from
vcvt{,t}pd2{,u}dq and vcvtpd2ps in some AT&T and all Intel
cases.
* gas/i386/x86-64-avx512f_vl.s: Likewise.
Patrick Palka [Wed, 22 Apr 2015 23:25:55 +0000 (19:25 -0400)]
Explicitly call rl_resize_terminal() in TUI's SIGWINCH handler
In readline 6.3, the semantics of SIGWINCH handling has changed.
When a SIGWINCH signal is raised, readline's rl_sigwinch_handler() now
does not immediately call rl_resize_terminal(). Instead it sets a flag
that is checked by RL_CHECK_SIGNALS() at a point where readline has
control, and calls rl_resize_terminal() if said flag is set.
This change is item (c) in https://cnswww.cns.cwru.edu/php/chet/readline/CHANGES
c. Fixed a bug that caused readline to try and run code to modify its idea
of the screen size in a signal handler context upon receiving a SIGWINCH.
This change in behavior is important to us because TUI's
tui_sigwinch_handler() relies on the assumption that by the time it's
called, readline will have updated its knowledge of the terminal
dimensions via rl_resize_terminal(). Since this assumption no longer
holds true, TUI's SIGWINCH handling does not work correctly with
readline 6.3.
To fix this issue this patch makes TUI explicitly call
rl_resize_terminal() in tui_async_resize_screen() at the point where
current terminal dimensions are needed. (We could call it in
tui_sigwinch_handler too, but since readline avoids doing it, we are
probably safer off avoiding to call it in signal handler context as
well.) After this change, SIGWINCH handling continues to work properly
with both readline 6.2 and 6.3.
Since we no longer need it, we could now explicitly disable readline's
SIGWINCH handler by setting rl_catch_sigwinch to zero early on in the
program startup but I can't seem to find a good spot to place this
assignment (the first call to rl_initialize() occurs in
tui_initialize_readline() so the assignment should occur before then),
and the handler is harmless anyway.
gdb/ChangeLog:
* tui/tui-win.c (tui_async_resize_screen): Call
rl_resize_terminal().
Alan Modra [Wed, 22 Apr 2015 02:01:18 +0000 (11:31 +0930)]
Accept odd result in ld-powerpc/tocnovar testcase
I didn't commit this with the relro and powerpc .TOC. changes,
thinking that something should be done about the odd result of
.shstrtab appearing in PT_GNU_RELRO. On looking at it further,
I think that changing readelf would be wrong, so let's just
accept the results. Real binaries will always have other sections
past .got, so PT_GNU_RELRO won't finish past the end of loaded
sections.
* ld-powerpc/tocnovar.d: Adjust.
Alan Modra [Tue, 21 Apr 2015 09:48:24 +0000 (19:18 +0930)]
Align .TOC. for PowerPC64
This change, with prerequisite
0e5fabeb, provides a toc base aligned
to 256 bytes rather than 8 bytes. This is necessary for a minor gcc
optimisation, allowing use of d-form instructions to correctly access
toc-relative items larger than 8 bytes.
bfd/
* elf64-ppc.c (TOC_BASE_ALIGN): Define.
(ppc64_elf_next_toc_section): Align multi-got toc base.
(ppc64_elf_set_toc): Likewise initial toc base and .TOC. symbol.
ld/
* emulparams/elf64ppc.sh (GOT): Align.
ld/testsuite/
* ld-powerpc/ambiguousv1b.d: Update for aligned .got.
* ld-powerpc/defsym.d: Likewise.
* ld-powerpc/elfv2-2exe.d: Likewise.
* ld-powerpc/elfv2exe.d: Likewise.
* ld-powerpc/elfv2so.d: Likewise.
* ld-powerpc/relbrlt.d: Likewise.
* ld-powerpc/tls.g: Likewise.
* ld-powerpc/tlsexe.d: Likewise.
* ld-powerpc/tlsexe.g: Likewise.
* ld-powerpc/tlsexe.r: Likewise.
* ld-powerpc/tlsexetoc.d: Likewise.
* ld-powerpc/tlsexetoc.g: Likewise.
* ld-powerpc/tlsexetoc.r: Likewise.
* ld-powerpc/tlsso.d: Likewise.
* ld-powerpc/tlsso.g: Likewise.
* ld-powerpc/tlsso.r: Likewise.
* ld-powerpc/tlstoc.g: Likewise.
* ld-powerpc/tlstocso.d: Likewise.
* ld-powerpc/tlstocso.g: Likewise.
* ld-powerpc/tlstocso.r: Likewise.
* ld-powerpc/tocopt.d: Likewise.
* ld-powerpc/tocopt2.d: Likewise.
* ld-powerpc/tocopt3.d: Likewise.
* ld-powerpc/tocopt4.d: Likewise.
* ld-powerpc/tocopt5.d: Likewise.
GDB Administrator [Thu, 23 Apr 2015 00:00:07 +0000 (00:00 +0000)]
Automatic date update in version.in
Joel Brobecker [Wed, 22 Apr 2015 19:35:54 +0000 (12:35 -0700)]
libiberty/setenv.c: Do not declare environ if defined as a macro.
Otherwise, it causes a build warning on some platforms such as MinGW.
libiberty/ChangeLog (Eli Zaretskii <eliz@gnu.org>):
* setenv.c <environ>: Declare only if not a macro.
Jon Turney [Wed, 15 Apr 2015 20:41:25 +0000 (21:41 +0100)]
windows-nat: Don't change current_event.dwThreadId in handle_output_debug_string()
Using the 'catch-signal' test from the testsuite, on x86_64 Cygwin:
$ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
[...]
(gdb) catch signal
Catchpoint 1 (standard signals)
(gdb) r
[...]
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
(gdb) c
Continuing.
main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
Failed to resume program execution (ContinueDebugEvent failed, error 87)
(gdb)
This error occurs because when handle_output_debug_string processes a Cygwin
signal message, it re-writes current_event.dwThreadId to reflect the thread that
the signal will be delivered to, which can be different to the thread reporting
the signal.
Altering current_event.dwThreadId() will cause ContinueDebugEvent() to be
applied to the wrong thread and fail.
So, rather than re-writing the thread id in current_event, use the thread
id by returning it.
With this patch applied this test now yields the expected result:
$ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
[...]
(gdb) catch signal
Catchpoint 1 (standard signals)
(gdb) r
[...]
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
(gdb) c
Continuing.
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:42
42 raise (SIGHUP); /* third HUP */
(gdb)
gdb/ChangeLog:
2015-04-22 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (handle_output_debug_string): Don't change
current_event.dwThreadId.
(get_windows_debug_event): Use thread_id, rather than relying on
current_event.dwThreadId being changed.
Jon Turney [Wed, 15 Apr 2015 20:37:11 +0000 (21:37 +0100)]
windows-nat: Report an error if ContinueDebugEvent() fails
Using the 'catch-signal' test from the testsuite, on x86_64 Cygwin:
$ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
[...]
(gdb) catch signal
Catchpoint 1 (standard signals)
(gdb) r
[...]
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
(gdb) c
Continuing.
[hangs]
This is due to a defect in the way Cygwin signals are handled: When
handle_output_debug_string processes a Cygwin signal message, it re-writes
current_event.dwThreadId to reflect the thread that the signal will be delivered
to.
Subsequently, the call to ContinueDebugEvent will fail, because we're trying to
resume the wrong thread. GDB is then stuck waiting forever for another event
that will never come.
This patch doesn't fix the problem, it just adds appropriate error handling.
Using error() seems appropriate here, if ContinueDebugEvent() fails, the
inferior is in an unknown state and we will probably not be debugging it
anymore.
With this patch applied, resuming the execution of the program now yields:
$ ./gdb testsuite/outputs/gdb.base/catch-signal/catch-signal.exe
[...]
(gdb) catch signal
Catchpoint 1 (standard signals)
(gdb) r
[...]
Catchpoint 1 (signal SIGHUP), main () at
../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
(gdb) c
Continuing.
main () at ../../../gdb/testsuite/gdb.base/catch-signal.c:40
40 raise (SIGHUP); /* second HUP */
Failed to resume program execution (ContinueDebugEvent failed, error 87)
(gdb)
gdb/ChangeLog:
2015-04-22 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (windows_continue): Report an error if
ContinueDebugEvent() fails.
Jon Turney [Tue, 14 Apr 2015 20:05:21 +0000 (21:05 +0100)]
windows-nat: Fix misspelling in debug output
gdb/ChangeLog:
2015-04-16 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (windows_resume): Fix misspelling in debug output.
Jon Turney [Tue, 14 Apr 2015 18:28:44 +0000 (19:28 +0100)]
windows-nat: Cleanups in get_windows_debug_event
gdb/ChangeLog:
2015-04-16 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (get_windows_debug_event): Replace retval with
thread_id throughout. Update stale comment.
Jon Turney [Tue, 14 Apr 2015 18:42:07 +0000 (19:42 +0100)]
windows-nat: Don't use ternary conditional operator in get_windows_debug_event
gdb/ChangeLog:
2015-04-16 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (get_windows_debug_event): Don't use ternary
conditional operator.
Alan Modra [Wed, 22 Apr 2015 13:16:19 +0000 (22:46 +0930)]
Rewrite relro adjusting code
The linker tries to put the end of the last section in the relro
segment exactly on a page boundary, because the relro segment itself
must end on a page boundary. If for any reason this can't be done,
padding is inserted. Since the end of the relro segment is typically
between .got and .got.plt, padding effectively increases the size of
the GOT. This isn't nice for targets and code models with limited GOT
addressing.
The problem with the current code is that it doesn't cope very well
with aligned sections in the relro segment. When making .got aligned
to a 256 byte boundary for PowerPC64, I found that often the initial
alignment attempt failed and the fallback attempt to be less than
adequate. This is a particular problem for PowerPC64 since the
distance between .got and .plt affects the size of plt call stubs,
leading to "stubs don't match calculated size" errors.
So this rewrite takes a direct approach to calculating a new relro
base. Starting from the last section in the segment, we calculate
where it must start to position its end on the boundary, or as near as
possible considering alignment requirements. The new start then
becomes the goal for the previous section to end, and so on for all
sections. This of course ignores the possibility that user scripts
will place . = ALIGN(xxx); in the relro segment, or provide section
address expressions. In those cases we might fail, but the old code
probably did too, and a fallback is provided.
ld/
* ldexp.h (struct ldexp_control): Delete dataseg.min_base. Add
data_seg.relro_offset.
* ldexp.c (fold_binary <DATA_SEGMENT_ALIGN>): Don't set min_base.
(fold_binary <DATA_SEGMENT_RELRO_END>): Do set relro_offset.
* ldlang.c (lang_size_sections): Rewrite code adjusting relro
segment base to line up last section on page boundary.
ld/testsuite/
* ld-x86-64/pr18176.d: Update.
H.J. Lu [Wed, 22 Apr 2015 12:24:54 +0000 (05:24 -0700)]
i386: Allow copy relocs for building PIE
This patch allows copy relocs for R_386_GOTOFF relocations in PIE. For
extern int glob_a;
int foo ()
{
return glob_a;
}
compiler now can optimize it from
call __x86.get_pc_thunk.ax
addl $_GLOBAL_OFFSET_TABLE_, %eax
movl glob_a@GOT(%eax), %eax
movl (%eax), %eax
ret
to
call __x86.get_pc_thunk.ax
addl $_GLOBAL_OFFSET_TABLE_, %eax
movl glob_a@GOTOFF(%eax), %eax
ret
bfd/
PR ld/18289
* elf32-i386.c (elf_i386_link_hash_entry): Add gotoff_ref.
(elf_i386_link_hash_newfunc): Initialize gotoff_ref to 0.
(elf_i386_create_dynamic_sections): Always allow copy relocs for
building executables.
(elf_i386_copy_indirect_symbol): Also copy gotoff_ref.
(elf_i386_check_relocs): Set gotoff_ref for R_386_GOTOFF.
(elf_i386_adjust_dynamic_symbol): Also allocate copy relocs for
PIE and R_386_GOTOFF.
(elf_i386_relocate_section): Allow R_386_GOTOFF in executable.
ld/testsuite/
PR ld/18289
* ld-i386/copyreloc-lib.c: New file.
* ld-i386/copyreloc-main.S: Likewise.
* ld-i386/copyreloc-main.out: Likewise.
* ld-i386/copyreloc-main1.rd: Likewise.
* ld-i386/copyreloc-main2.rd: Likewise.
* ld-i386/dummy.c: Likewise.
* ld-i386/pr17689.out: Likewise.
* ld-i386/pr17689.rd: Likewise.
* ld-i386/pr17689a.c: Likewise.
* ld-i386/pr17689b.S: Likewise.
* ld-i386/pr17827.rd: Likewise.
* ld-i386/pr17827ver.rd: Likewise.
* ld-i386/i386.exp: Run copyreloc tests.
GDB Administrator [Wed, 22 Apr 2015 00:00:13 +0000 (00:00 +0000)]
Automatic date update in version.in
Pierre Muller [Tue, 21 Apr 2015 20:10:08 +0000 (22:10 +0200)]
Fix pascal behavior for class fields with testcase
Problem reported as PR pascal/17815
Part 1/3: Remember the case pattern that allowed finding a field of this.
File gdb/p-exp.y modified
This is the fix in the pascal parser (p-exp.y),
to avoid the error that GDB does find normal variables
case insensitively, but not fields of this,
inside a class or object method.
Part 2/3: Add "class" option for pascal compiler
File gdb/testsuite/lib/pascal.exp
This part of the patch series is unchanged.
It adds class option to pascal compiler
which adds the required command line option to
accept pascal class types.
Part 3/3:
New file: gdb/testsuite/gdb.pascal/case-insensitive-symbols.exp
New file: gdb/testsuite/gdb.pascal/case-insensitive-symbols.pas
Here is an updated version of this test, using Pedro's suggestions.
Test to check that PR 17815 is fixed.
Gary Benson [Tue, 21 Apr 2015 11:07:54 +0000 (12:07 +0100)]
Introduce new shared function fileio_to_host_openflags
This commit introduces a new shared function to replace identical
functions in GDB and gdbserver.
Mike Frysinger [Tue, 21 Apr 2015 07:05:57 +0000 (03:05 -0400)]
sim: mcore: clean up printf warnings
These printf statements are showing "word" objects which are typedefed
from long, so make sure to use l with %x when printing them to avoid
warnings from gcc.
Mike Frysinger [Tue, 21 Apr 2015 06:55:29 +0000 (02:55 -0400)]
sim: mcore: convert to common memory/verbose functions
Re-use the existing memory core that handles reads/writes.
The verbose command is converted to the common --verbose flag
since only a few call sites use it now.
Mike Frysinger [Tue, 21 Apr 2015 06:50:38 +0000 (02:50 -0400)]
sim: mcore: drop watchpoint/dumpmem/clearstats support
In preparation for converting to the common memory framework, the custom
commands get in our way. But when we realize that gdb support has been
dropped for mcore, it makes things a bit easier: the main runner does not
let you run arbitrary commands once simulation starts.
So lets disable watchpoint support until it can be converted to the common
watchpoint logic. There's already an ifdef to let us do that.
We straight up drop support for the dumpmem command (no other sim supports
this, and if it's a feature people want, we can add a common func) and the
clearstats command (not a big deal -- just restart your simulation).
We leave in place the verbose check points as a follow up commit will cut
that over to common logic.
Mike Frysinger [Tue, 21 Apr 2015 06:30:21 +0000 (02:30 -0400)]
sim: mcore: switch to common syscall handling
Now that libgloss has a header tracking the syscalls for this arch, we
can update the database to include it for the symbolic constants/maps.
Then we can switch the mcore syscall callbacks over to the common ones.
Mike Frysinger [Tue, 21 Apr 2015 06:24:34 +0000 (02:24 -0400)]
sim: gennltvals.sh: handle split out newlib source tree
Since newlib no longer shares the same repo as binutils/gdb, we have to go
searching further afield to locate the sources. We still look at the top
level for newlib, but if that is not found, we also try up one dir outside
of this source tree. It sucks, but better than the status quo (no workie).
Kevin Buettner [Tue, 21 Apr 2015 06:37:44 +0000 (23:37 -0700)]
Extend rl78 prologue analyzer to recognize more complicated prologues
This patch extends the rl78 prologue analyzer so that it can recognize
this kind of prologue:
0x119f <main>: movw ax, sp
0x11a1 <main+2>: subw ax, #0x1fa6
0x11a4 <main+5>: movw sp, ax
The test case for gdb.base/miscexprs.exp is now compiled to generate
that sequence instead of a much longer and more inefficient sequence.
gdb/ChangeLog:
* rl78-tdep.c (RL78_SP_ADDR): Define.
(opc_reg_to_gdb_regnum): New static function.
(rl78_analyze_prologue): Recognize instructions forming slightly
more interesting prologues.
Ian Coolidge [Tue, 21 Apr 2015 01:04:07 +0000 (18:04 -0700)]
Ensure that dynamically loaded libraries won't use separate copies of GNU_UNIQUE symbols.
gold/
* symtab.cc (Symbol::should_add_dynsym_entry): Return true for
GNU_UNIQUE.
GDB Administrator [Tue, 21 Apr 2015 00:00:08 +0000 (00:00 +0000)]
Automatic date update in version.in
H.J. Lu [Mon, 20 Apr 2015 19:37:14 +0000 (12:37 -0700)]
Always set up sh_name in assign_section_numbers
commit
9ad5cbcfb23cb74d34bd04f88f4e47c0f5de5155 added the initial support
for more than 64k ELF sections with holes for reserved section indices in
section header table and set entries of reserved section indices in
section header table to index 0:
for (secn = 1; secn < section_number; ++secn)
- i_shdrp[secn]->sh_name = _bfd_elf_strtab_offset (elf_shstrtab (abfd),
- i_shdrp[secn]->sh_name);
-
+ if (i_shdrp[secn] == NULL)
+ i_shdrp[secn] = i_shdrp[0];
+ else
+ i_shdrp[secn]->sh_name = _bfd_elf_strtab_offset (elf_shstrtab (abfd),
+ i_shdrp[secn]->sh_name);
commit
4fbb74a6055f7d48f09c44064073d3b1e99c6642 removed holes in section
header table. Check for i_shdrp[secn] == NULL is no longer needed now.
This patch removes it.
* elf.c (assign_section_numbers): Always set up sh_name.
H.J. Lu [Mon, 20 Apr 2015 16:55:34 +0000 (09:55 -0700)]
Don't hardcode offset of .shstrtab section
There is no requirement on placement of section name section, .shstrtab.
This patch removes hardcoded offsets of .shstrtab sections.
binutils/testsuite/
* binutils-all/i386/compressed-1b.d: Don't hardcode offset of
.shstrtab section.
* binutils-all/i386/compressed-1c.d: Likewise.
* binutils-all/readelf.s-64: Likewise.
* binutils-all/x86-64/compressed-1b.d: Likewise.
* binutils-all/x86-64/compressed-1c.d: Likewise.
gas/testsuite/
* gas/i386/ilp32/x86-64-unwind.d: Don't hardcode offset of
.shstrtab section.
* gas/i386/x86-64-unwind.d: Likewise.
* gas/ia64/alias-ilp32.d: Likewise.
* gas/ia64/alias.d: Likewise.
* gas/ia64/group-1.d: Likewise.
* gas/ia64/group-2.d: Likewise.
* gas/ia64/secname-ilp32.d: Likewise.
* gas/ia64/secname.d: Likewise.
* gas/ia64/unwind-ilp32.d: Likewise.
* gas/ia64/unwind.d: Likewise.
* gas/mmix/bspec-1.d: Likewise.
* gas/mmix/byte-1.d: Likewise.
* gas/mmix/loc-1.d: Likewise.
* gas/mmix/loc-2.d: Likewise.
* gas/mmix/loc-3.d: Likewise.
* gas/mmix/loc-4.d: Likewise.
* gas/mmix/loc-5.d: Likewise.
* gas/tic6x/scomm-directive-4.d: Likewise.
ld/testsuite/
* ld-mmix/bspec1.d: Don't hardcode offset of .shstrtab section.
* ld-mmix/bspec2.d: Likewise.
* ld-mmix/local1.d: Likewise.
* ld-mmix/local3.d: Likewise.
* ld-mmix/local5.d: Likewise.
* ld-mmix/local7.d: Likewise.
* ld-mmix/undef-3.d: Likewise.
* ld-sh/sh64/crangerel1.rd: Likewise.
* ld-sh/sh64/crangerel2.rd: Likewise.
* ld-tic6x/common.d: Likewise.
* ld-tic6x/shlib-1.rd: Likewise.
* ld-tic6x/shlib-1b.rd: Likewise.
* ld-tic6x/shlib-1r.rd: Likewise.
* ld-tic6x/shlib-1rb.rd: Likewise.
* ld-tic6x/shlib-app-1.rd: Likewise.
* ld-tic6x/shlib-app-1b.rd: Likewise.
* ld-tic6x/shlib-app-1r.rd: Likewise.
* ld-tic6x/shlib-app-1rb.rd: Likewise.
* ld-tic6x/shlib-noindex.rd: Likewise.
* ld-tic6x/static-app-1.rd: Likewise.
* ld-tic6x/static-app-1b.rd: Likewise.
* ld-tic6x/static-app-1r.rd: Likewise.
* ld-tic6x/static-app-1rb.rd: Likewise.
* ld-x86-64/ilp32-4.d: Likewise.
* ld-x86-64/split-by-file-nacl.rd: Likewise.
* ld-x86-64/split-by-file.rd: Likewise.
H.J. Lu [Mon, 20 Apr 2015 15:50:01 +0000 (08:50 -0700)]
Iterate ELF sections by pointer
Iterate ELF sections by pointer without section counter. It removes
"i++".
* elf.c (assign_file_positions_for_non_load_sections): Iterate
sections by pointer.
(_bfd_elf_assign_file_positions_for_non_load): Likewise.
H.J. Lu [Mon, 20 Apr 2015 15:05:13 +0000 (08:05 -0700)]
Silence texinfo 5.1 warnings
This patch silences texinfo 5.1 warnings by using @subsection and
sorting entries in Machine Dependencies menu.
* doc/as.texinfo (Bundle directives): Shorten menu entry and
use @subsection.
(CFI directives): Use @subsection.
(SH-Dependent, SH64-Dependent): Moved after SCORE-Dependent.
* doc/c-i386.texi (i386-Mnemonics): Use @subsection.
Pierre-Marie de Rodat [Mon, 20 Apr 2015 14:06:50 +0000 (16:06 +0200)]
Revert "Do not consider reference types as dynamic"
This reverts commit
961f41602529c9cd4f88af6c02fb61fb55100e27.
Note that the revert is partial: it keeps the new testcases
gdb.ada/funcall_ref.exp.
Pierre-Marie de Rodat [Mon, 20 Apr 2015 14:04:28 +0000 (16:04 +0200)]
Revert "gdbtypes.c: remove the usuned "top_level" parameter"
This reverts commit
25755e2b85e2bd5b313ea87f32000bf9a47dbbf8.
Gary Benson [Mon, 20 Apr 2015 10:35:29 +0000 (11:35 +0100)]
Fix three test failures with extended remote targets
This commit fixes three gdb.base/attach.exp failures when using
extended remote targets. The failures occurred because GDB now
locates and loads files when attaching on remote targets if the
remote target supports qXfer:exec-file:read; the filenames were
shown but with "target:" prefixes which the test has been updated
to handle.
gdb/testsuite/ChangeLog:
* gdb.base/attach.exp: Fix three extended remote failures.