deliverable/binutils-gdb.git
7 years agoGet rid of VEC(probe_p)
Simon Marchi [Sat, 28 Oct 2017 02:05:42 +0000 (22:05 -0400)] 
Get rid of VEC(probe_p)

Replace the remaining usages of VEC(probe_p) with std::vector.

Regtested on the buildbot.

gdb/ChangeLog:

* probe.h: Don't include gdb_vecs.h.
(DEF_VEC_P (probe_p)): Remove.
(find_probes_in_objfile): Return an std::vector.
* probe.c (find_probes_in_objfile): Likewise.
* breakpoint.c (breakpoint_objfile_data)
<longjmp_probes>: Change type to std::vector.
<exception_probes>: Likewise.
(free_breakpoint_probes): Don't manually free vectors.
(create_longjmp_master_breakpoint): Adjust.
(create_exception_master_breakpoint): Adjust.
* solib-svr4.c (svr4_create_probe_breakpoints): Change
parameter type, adjust.
(svr4_create_solib_event_breakpoints): Adjust.

7 years agoAllocate breakpoint_objfile_data with new
Simon Marchi [Sat, 28 Oct 2017 02:01:21 +0000 (22:01 -0400)] 
Allocate breakpoint_objfile_data with new

Allocate with new and free with delete.  This allows using an
std::vector in the following patch.

I renamed free_breakpoint_probes to free_breakpoint_objfile_data,
because it now doesn't only free the probes vector, but also the
breakpoint_objfile_data structure itself.

gdb/ChangeLog:

* breakpoint.c (breakpoint_objfile_data): Initialize fields.
(get_breakpoint_objfile_data): Allocate breakpoint_objfile_data
with new.
(free_breakpoint_probes): Rename to ...
(free_breakpoint_objfile_data): ... this, and call delete on
bp_objfile_data..

7 years agoGet rid of VEC(loaded_script_ptr)
Simon Marchi [Sat, 28 Oct 2017 01:55:42 +0000 (21:55 -0400)] 
Get rid of VEC(loaded_script_ptr)

Direct replacement with std::vector.  This allows removing a cleanup as
well.

Regtested on the buildbot.

gdb/ChangeLog:

* auto-load.c: Don't include gdb_vecs.h, include algorithm.
(loaded_script_ptr): Remove typedef.
(DEF_VEC_P (loaded_script_ptr)): Remove.
(struct collect_matching_scripts_data): Add constructor.
<scripts_p>: Change type to (pointer to) std::vector.
(collect_matching_scripts_data): Adjust.
(sort_scripts_by_name): Make suitable for std::sort.
(print_scripts): Don't sort vector, adjust to std::vector.
(auto_load_info_scripts): Sort vectors, adjust to std::vector.

7 years agoGet rid of VEC(filename_language)
Simon Marchi [Sat, 28 Oct 2017 01:47:30 +0000 (21:47 -0400)] 
Get rid of VEC(filename_language)

This patch removes VEC(filename_language), replacing its usage with
std::vector.  filename_language::ext is changed to an std::string at the
same time.

Regtested on the buildbot.

gdb/ChangeLog:

* symfile.c (filename_language): Make struct, not typedef.  Add
constructor.
<ext>: Change type to std::string.
(DEF_VEC_O (filename_language)): Remove.
(filename_language_table): Change type to std::vector.
(add_filename_language): Adjust.
(set_ext_lang_command): Adjust.
(info_ext_lang_command): Adjust.
(deduce_language_from_filename): Adjust.
(class scoped_restore_filename_language_table): Remove.
(test_filename_language): Use scoped_restore.
(test_set_ext_lang_command): Use scoped_restore, adjust to
std::vector change.

7 years agoAdd tests for filename_language
Simon Marchi [Sat, 28 Oct 2017 01:46:49 +0000 (21:46 -0400)] 
Add tests for filename_language

The next patch touches the filename_language area, but I noticed there
is no test exercising that.  This patch adds some selftests for
add_filename_language, deduce_language_from_filename and
set_ext_lang_command.  Because these tests add entries to the global
filename_language_table vector, it is not possible to run them
successfully multiple times in a same GDB instance.  They can
potentially interfere with each other for the same reason.  I therefore
added the scoped_restore_filename_language_table class that is used to
make sure tests leave that global vector in the same state they found it
(it is replaced in the following patch by a simple scoped_restore).

gdb/ChangeLog:

* symfile.c: Include selftest.h.
(class scoped_restore_filename_language_table): New.
(test_filename_language): New test.
(test_set_ext_lang_command): New test.
(_initialize_symfile): Register tests.

7 years agoAutomatic date update in version.in
GDB Administrator [Sat, 28 Oct 2017 00:00:30 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoUse SaL symbol name when reporting breakpoint locations
Keith Seitz [Fri, 27 Oct 2017 17:57:23 +0000 (10:57 -0700)] 
Use SaL symbol name when reporting breakpoint locations

Currently, "info break" can show some (perhaps) unexpected results when
setting a breakpoint on an inlined function:

(gdb) list
1 #include <stdio.h>
2
3 static inline void foo()
4 {
5         printf("Hello world\n");
6 }
7
8 int main()
9 {
10         foo();
11         return 0;
12 }
13
(gdb) b foo
Breakpoint 1 at 0x400434: file foo.c, line 5.
(gdb) i b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000400434 in main at foo.c:5

GDB reported that we understood what "foo" was, but we then report that the
breakpoint is actually set in main. While that is literally true, we can
do a little better.

This is accomplished by copying the symbol for which the breakpoint was set
into the bp_location.  From there, print_breakpoint_location can use this
information to print out symbol information (if available) instead of calling
find_pc_sect_function.

With the patch installed,

(gdb) i b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000400434 in foo at foo.c:5

gdb/ChangeLog:

* breakpoint.c (print_breakpoint_location): Use the symbol saved
in the bp_location, falling back to find_pc_sect_function when
needed.
(add_location_to_breakpoint): Save sal->symbol.
* breakpoint.h (struct bp_location) <symbol>: New field.
* symtab.c (find_function_start_sal): Save the symbol into the SaL.
* symtab.h (struct symtab_and_line) <symbol>: New field.

gdb/testsuite/ChangeLog:

* gdb.opt/inline-break.exp (break_info_1): New procedure.
Test "info break" for every inlined function breakpoint.

7 years ago[AArch64] Mark LR clobbered by BL in inline asm
Yao Qi [Fri, 27 Oct 2017 14:29:24 +0000 (15:29 +0100)] 
[AArch64] Mark LR clobbered by BL in inline asm

LR is a caller-save register, so, if inline asm does BL (which touches
LR), we should mark LR clobbered.

gdb/testsuite:

2017-10-27  Yao Qi  <yao.qi@linaro.org>

* gdb.arch/insn-reloc.c (can_relocate_bl): Mark "x30" clobbered.

7 years agodwarf: Read register number as unsigned in DW_CFA_def_cfa*
Simon Marchi [Fri, 27 Oct 2017 13:01:36 +0000 (09:01 -0400)] 
dwarf: Read register number as unsigned in DW_CFA_def_cfa*

When displaying the .debug_frame section, the register numbers in the
DW_CFA_def_cfa* statements are read as signed numbers.  I have come
across a target that has register 121, encoded as 0x79 in unsigned LEB128.
Interpreting this as signed results in -7, which makes readelf display
"r-7".

The DWARF5 standard (6.4.2.2) states that the register numbers should be
treated as unsigned LEB128.

Simply replacing READ_SLEB with READ_ULEB resulted in warnings like
these:

/home/emaisin/src/binutils-gdb/binutils/dwarf.c: In function â€˜display_debug_frames’:
/home/emaisin/src/binutils-gdb/binutils/dwarf.c:355:17: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
       if ((var) != _val)     \
                 ^
/home/emaisin/src/binutils-gdb/binutils/dwarf.c:7866:8: note: in expansion of macro â€˜READ_ULEB’
        READ_ULEB (fc->cfa_reg);
        ^
... so I also changed Frame_Chunk::cfa_reg to an unsigned int.

binutils/ChangeLog:

* dwarf.c (struct Frame_Chunk) <cfa_reg>: Change type to
unsigned int.
(display_debug_frames): Read CFA reg as an unsigned number.

7 years agoAdd PR mention to previous commit
Simon Marchi [Fri, 27 Oct 2017 12:57:10 +0000 (08:57 -0400)] 
Add PR mention to previous commit

7 years agoFix broken recursion detection when printing static members
Patrick Frants [Fri, 27 Oct 2017 02:26:08 +0000 (22:26 -0400)] 
Fix broken recursion detection when printing static members

Recursion detection for static members was broken.  The implementation
uses a growing (and shrinking) obstack object to simulate a stack of
addresses (CORE_ADDR).  Pushing addresses is implemented by calling
obstack_grow(), while popping is implemented by calling obstack_free().
The latter is problematic because obstack_free() expects a pointer to
the base of an object.  When popping elements of the stack however,
obstack_free() was called with the new top, which potentially is not the
same as the base of the stack.  This is unintended use and the effect is
that obstack->next_free and obstack->object_base members are assigned
the value of the new top, which equals an empty stack.  Summary: popping
elements would always result in an empty stack, which breaks the
recursion detection.

The fix shrinks the stack using obstack_blank_fast() with a negative
value as described at the bottom of this page:
https://gcc.gnu.org/onlinedocs/libiberty/Extra-Fast-Growing.html "You
can use obstack_blank_fast with a “negative” size argument to make the
current object smaller.  Just don’t try to shrink it beyond zero
length—there’s no telling what will happen if you do that. Earlier
versions of obstacks allowed you to use obstack_blank to shrink objects.
This will no longer work."

The reproducer is added to gdb.cp/classes.exp, which fails without this
patch.

gdb/ChangeLog:

* cp-valprint.c (cp_print_value_fields): Use obstack_blank_fast
to rewind obstack.

gdb/testsuite/ChangeLog:

* gdb.cp/classes.exp (test_static_members): Test printing
Outer::instance.
* gdb.cp/classes.c (struct Inner, struct Outer): New.
(Inner::instance, Outer::instance): New.

7 years agoAutomatic date update in version.in
GDB Administrator [Fri, 27 Oct 2017 00:00:28 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoGarbage collect remote.c:remote_async_terminal_ours_p
Pedro Alves [Thu, 26 Oct 2017 18:53:03 +0000 (19:53 +0100)] 
Garbage collect remote.c:remote_async_terminal_ours_p

remote.c:remote_async_terminal_ours_p stopped being useful after
048094accce2 ("target remote: Don't rely on immediate_quit (introduce
quit handlers)") and commit 41fd2b0f5d95 ("Make input_fd be per UI"),
which turned remote's terminal_inferior/ours methods into nops.

gdb/ChangeLog:
2017-10-26  Pedro Alves  <palves@redhat.com>

* remote.c (remote_async_terminal_ours_p): Delete.
(remote_open_1, remote_terminal_inferior, remote_terminal_ours):
Remove references to 'remote_async_terminal_ours_p'.

7 years agox86: Check invalid XMM register in AVX512 gathers
H.J. Lu [Thu, 26 Oct 2017 18:16:41 +0000 (11:16 -0700)] 
x86: Check invalid XMM register in AVX512 gathers

Extend invalid register check for AVX512 gathers to XMM register.

PR gas/22352
* config/tc-i386.c (check_VecOperands): Also check XMM register
for invalid register in AVX512 gathers.
* testsuite/gas/i386/vgather-check.s: Add tests for AVX512
gathers with XMM register.
* testsuite/gas/i386/x86-64-vgather-check.s: Likewise.
* testsuite/gas/i386/vgather-check-error.l: Updated.
* testsuite/gas/i386/vgather-check-none.d: Likewise.
* testsuite/gas/i386/vgather-check-warn.d: Likewise.
* testsuite/gas/i386/vgather-check-warn.e: Likewise.
* testsuite/gas/i386/vgather-check.d: Likewise.
* testsuite/gas/i386/x86-64-vgather-check-error.l: Likewise.
* testsuite/gas/i386/x86-64-vgather-check-none.d: Likewise.
* testsuite/gas/i386/x86-64-vgather-check-warn.d: Likewise.
* testsuite/gas/i386/x86-64-vgather-check-warn.e: Likewise.
* testsuite/gas/i386/x86-64-vgather-check.d: Likewise.

7 years ago[PR21703]Adjust pr21703 tests on various targets.
Renlin Li [Thu, 26 Oct 2017 14:40:45 +0000 (15:40 +0100)] 
[PR21703]Adjust pr21703 tests on various targets.

xfail tests for certain targets.
Check shared library support for shared test.
Relax pr21703-r.sd and pr21703-shared.sd with additional "#..." pattern lines.

ld/

* testsuite/ld-elf/elf.exp: xfail pr21703 tests on specific targets.
Only run shared lib test for targets which support it.
* testsuite/ld-elf/pr21703-r.sd: Adjust the expected output.
* testsuite/ld-elf/pr21703-shared.sd: Likewise.

7 years agoAs Alan predicted at https://sourceware.org/ml/binutils/2017-10/msg00137.html the...
James Greenhalgh [Thu, 26 Oct 2017 10:30:40 +0000 (11:30 +0100)] 
As Alan predicted at https://sourceware.org/ml/binutils/2017-10/msg00137.html the values in some Arm tests need updating after recent changes. These looked a bit spooky at first, but they are just a difference in the order we emit veneers and far jumps, so are not so scary after all.

Checked with an arm-none-eabi tester and an arm-none-linux-gnueabi tester with no issues.

* testsuite/ld-arm/cortex-a8-far.d: Update expected disassembly.
* testsuite/ld-arm/farcall-group-size2: Likewise.
* testsuite/ld-arm/farcall-group.d: Likewise.

7 years agoRemove regular_breakpoint_inserted_here_p declaration
Yao Qi [Thu, 26 Oct 2017 08:53:38 +0000 (09:53 +0100)] 
Remove regular_breakpoint_inserted_here_p declaration

There is no regular_breakpoint_inserted_here_p definition at all, so
this patch removes the declaration.

gdb:

2017-10-26  Yao Qi  <yao.qi@linaro.org>

* breakpoint.h (regular_breakpoint_inserted_here_p): Remove.

7 years agoconst-fy breakpoint_ops->breakpoint_hit parameter aspace
Yao Qi [Thu, 26 Oct 2017 08:46:16 +0000 (09:46 +0100)] 
const-fy breakpoint_ops->breakpoint_hit parameter aspace

gdb:

2017-10-26  Yao Qi  <yao.qi@linaro.org>

* break-catch-sig.c (signal_catchpoint_breakpoint_hit): Make
aspace const.
* break-catch-syscall.c (breakpoint_hit_catch_syscall):
Likewise.
* breakpoint.c (bpstat_check_location): Remove cast.
(breakpoint_hit_catch_fork): Make aspce const.
(breakpoint_hit_catch_solib): Likewise.
(breakpoint_hit_catch_exec): Likewise.
(breakpoint_hit_ranged_breakpoint): Likewise.
(breakpoint_hit_watchpoint): Likewise.
(base_breakpoint_breakpoint_hit): Likewise.
(bkpt_breakpoint_hit): Likewise.
(dprintf_breakpoint_hit): Likewise.
(tracepoint_breakpoint_hit): Likewise.
* breakpoint.h (breakpoint_ops) <breakpoint_hit>: Likewise.

7 years agoconst-fy function parameter struct address_space *aspace
Yao Qi [Thu, 26 Oct 2017 08:46:16 +0000 (09:46 +0100)] 
const-fy function parameter struct address_space *aspace

This patch changes the parameter "struct address_space *aspace" to "const
address_space *aspace" in many functions.

gdb:

2017-10-26  Yao Qi  <yao.qi@linaro.org>

* breakpoint.c (breakpoint_location_address_match): Change
"struct address_space *" to "const address_space".
(breakpoint_location_address_range_overlap): Likewise.
(breakpoint_here_p): Likewise.
(breakpoint_in_range_p): Likewise.
(moribund_breakpoint_here_p): Likewise.
(bp_location_inserted_here_p): Likewise.
(software_breakpoint_inserted_here_p): Likewise.
(hardware_breakpoint_inserted_here_p): Likewise.
(hardware_watchpoint_inserted_in_range): Likewise.
(bpstat_check_location): Likewise.
(bpstat_stop_status): Likewise.
(breakpoint_address_match): Likewise.
(breakpoint_address_match_range): Likewise.
(breakpoint_location_address_match): Likewise.
(breakpoint_location_address_range_overlap): Likewise.
(insert_single_step_breakpoint): Likewise.
(breakpoint_has_location_inserted_here): Likewise.
(single_step_breakpoint_inserted_here_p): Likewise.
(pc_at_non_inline_function): Likewise.
* breakpoint.h (bpstat_stop_status): Update declaration.
(breakpoint_here_p): Likewise.
(breakpoint_in_range_p): Likewise.
(moribund_breakpoint_here_p): Likewise.
(breakpoint_inserted_here_p): Likewise.
(software_breakpoint_inserted_here_p): Likewise.
(hardware_breakpoint_inserted_here_p): Likewise.
(breakpoint_has_location_inserted_here): Likewise.
(single_step_breakpoint_inserted_here_p): Likewise.
(hardware_watchpoint_inserted_in_range): Likewise.
(breakpoint_address_match): Likewise.
(insert_single_step_breakpoint): Likewise.
(pc_at_non_inline_function): Likewise.
* gdbthread.h (thread_has_single_step_breakpoint_here): Likewise.
* record.c (record_check_stopped_by_breakpoint): Likewise.
* record.h (record_check_stopped_by_breakpoint): Likewise.
* thread.c (thread_has_single_step_breakpoint_here): Likewise.

7 years agoAutomatic date update in version.in
GDB Administrator [Thu, 26 Oct 2017 00:00:22 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agotestsuite/gas/all/fill-1.s: Use L2 rather than .L2.
Hans-Peter Nilsson [Wed, 25 Oct 2017 23:11:06 +0000 (01:11 +0200)] 
testsuite/gas/all/fill-1.s: Use L2 rather than .L2.

For some targets, like mmix-knuth-mmixware, .L2 (and .L1) are invalid
symbols.

7 years agold: Correct -z ibt documentation
H.J. Lu [Wed, 25 Oct 2017 15:44:54 +0000 (08:44 -0700)] 
ld: Correct -z ibt documentation

* ld.texinfo: Correct -z ibt.

7 years agos/get_regcache_arch (regcache)/regcache->arch ()/g
Yao Qi [Wed, 25 Oct 2017 15:37:03 +0000 (16:37 +0100)] 
s/get_regcache_arch (regcache)/regcache->arch ()/g

This patches removes get_regcache_arch, and use regache->arch () instead.
The motivation of this change is that I am going to move some basic stuff
into a base class of regcache.  I don't need to update "client" code
regcache->arch ().  On the other hand, this patch shortens the code a
little bit.

gdb:

2017-10-25  Yao Qi  <yao.qi@linaro.org>

* aarch32-linux-nat.c (aarch32_gp_regcache_supply): Use
regcache->arch () instead get_regcache_arch.
* aarch64-fbsd-nat.c (aarch64_fbsd_fetch_inferior_registers):
Likewise.
(aarch64_fbsd_store_inferior_registers): Likewise.
* aarch64-linux-nat.c (fetch_gregs_from_thread): Likewise.
(store_gregs_to_thread): Likewise.
(fetch_fpregs_from_thread): Likewise.
(store_fpregs_to_thread): Likewise.
* aarch64-tdep.c (aarch64_extract_return_value): Likewise.
(aarch64_store_return_value): Likewise.
(aarch64_software_single_step): Likewise.
* aix-thread.c (aix_thread_wait): Likewise.
(supply_reg32): Likewise.
(supply_sprs64): Likewise.
(supply_sprs32): Likewise.
(fill_gprs64): Likewise.
(fill_gprs32): Likewise.
(fill_sprs64): Likewise.
(fill_sprs32): Likewise.
(store_regs_user_thread): Likewise.
(store_regs_kernel_thread): Likewise.
* alpha-bsd-nat.c (alphabsd_fetch_inferior_registers): Likewise.
(alphabsd_store_inferior_registers): Likewise.
* alpha-tdep.c (alpha_extract_return_value): Likewise.
(alpha_store_return_value): Likewise.
(alpha_deal_with_atomic_sequence): Likewise.
(alpha_next_pc): Likewise.
(alpha_software_single_step): Likewise.
* amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers): Likewise.
(amd64bsd_store_inferior_registers): Likewise.
* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers):
Likewise.
(amd64_linux_store_inferior_registers): Likewise.
* amd64-nat.c (amd64_supply_native_gregset): Likewise.
(amd64_collect_native_gregset): Likewise.
* amd64-obsd-tdep.c (amd64obsd_supply_uthread): Likewise.
(amd64obsd_collect_uthread): Likewise.
* amd64-tdep.c (amd64_supply_fpregset): Likewise.
(amd64_collect_fpregset): Likewise.
(amd64_supply_fxsave): Likewise.
(amd64_supply_xsave): Likewise.
(amd64_collect_fxsave): Likewise.
(amd64_collect_xsave): Likewise.
* arc-tdep.c (arc_write_pc): Likewise.
* arch-utils.c (default_skip_permanent_breakpoint): Likewise.
* arm-fbsd-nat.c (arm_fbsd_fetch_inferior_registers): Likewise.
(arm_fbsd_store_inferior_registers): Likewise.
* arm-linux-nat.c (fetch_vfp_regs): Likewise.
(store_vfp_regs): Likewise.
(arm_linux_fetch_inferior_registers): Likewise.
(arm_linux_store_inferior_registers): Likewise.
* arm-linux-tdep.c (arm_linux_supply_gregset): Likewise.
(arm_linux_sigreturn_next_pc): Likewise.
(arm_linux_get_next_pcs_syscall_next_pc): Likewise.
* arm-nbsd-nat.c (arm_supply_gregset): Likewise.
(fetch_register): Likewise.
(store_register): Likewise.
* arm-tdep.c (arm_is_thumb): Likewise.
(displaced_in_arm_mode): Likewise.
(bx_write_pc): Likewise.
(arm_get_next_pcs_addr_bits_remove): Likewise.
(arm_software_single_step): Likewise.
(arm_extract_return_value): Likewise.
(arm_store_return_value): Likewise.
(arm_write_pc): Likewise.
* bfin-tdep.c (bfin_extract_return_value): Likewise.
* bsd-uthread.c (bsd_uthread_fetch_registers): Likewise.
(bsd_uthread_store_registers): Likewise.
* core-regset.c (fetch_core_registers): Likewise.
* corelow.c (get_core_registers): Likewise.
* cris-tdep.c (cris_store_return_value): Likewise.
(cris_extract_return_value): Likewise.
(find_step_target): Likewise.
(find_step_target): Likewise.
(cris_software_single_step): Likewise.
* ctf.c (ctf_fetch_registers): Likewise.
* darwin-nat.c (cancel_breakpoint): Likewise.
* fbsd-tdep.c (fbsd_collect_thread_registers): Likewise.
* frv-tdep.c (frv_extract_return_value): Likewise.
* ft32-tdep.c (ft32_store_return_value): Likewise.
(ft32_extract_return_value): Likewise.
* go32-nat.c (fetch_register): Likewise.
(go32_fetch_registers): Likewise.
(go32_store_registers): Likewise.
(store_register): Likewise.
* h8300-tdep.c (h8300_extract_return_value): Likewise.
(h8300_store_return_value): Likewise.
* hppa-linux-nat.c (fetch_register): Likewise.
(store_register): Likewise.
(hppa_linux_fetch_inferior_registers): Likewise.
(hppa_linux_store_inferior_registers): Likewise.
* i386-darwin-nat.c (i386_darwin_fetch_inferior_registers): Likewise.
(i386_darwin_store_inferior_registers): Likewise.
* i386-gnu-nat.c (gnu_fetch_registers): Likewise.
(gnu_store_registers): Likewise.
* i386-linux-nat.c (fetch_register): Likewise.
(store_register): Likewise.
(supply_gregset): Likewise.
(fill_gregset): Likewise.
(i386_linux_fetch_inferior_registers): Likewise.
(i386_linux_store_inferior_registers): Likewise.
(i386_linux_resume): Likewise.
* i386-linux-tdep.c (i386_linux_get_syscall_number_from_regcache):
Likewise.
* i386-nto-tdep.c (i386nto_supply_gregset): Likewise.
* i386-obsd-nat.c (i386obsd_supply_pcb): Likewise.
* i386-obsd-tdep.c (i386obsd_supply_uthread): Likewise.
(i386obsd_collect_uthread): Likewise.
* i386-tdep.c (i386_mmx_regnum_to_fp_regnum): Likewise.
(i386_supply_gregset): Likewise.
(i386_collect_gregset): Likewise.
(i386_supply_fpregset): Likewise.
(i386_collect_fpregset): Likewise.
(i386_mpx_bd_base): Likewise.
* i386-v4-nat.c (supply_fpregset): Likewise.
(fill_fpregset): Likewise.
* i387-tdep.c (i387_supply_fsave): Likewise.
(i387_collect_fsave): Likewise.
(i387_supply_fxsave): Likewise.
(i387_collect_fxsave): Likewise.
(i387_supply_xsave): Likewise.
(i387_collect_xsave): Likewise.
* ia64-linux-nat.c (ia64_linux_fetch_registers): Likewise.
(ia64_linux_store_registers): Likewise.
* ia64-tdep.c (ia64_access_rse_reg): Likewise.
(ia64_extract_return_value): Likewise.
(ia64_store_return_value): Likewise.
(find_func_descr): Likewise.
* inf-child.c (inf_child_fetch_inferior_registers): Likewise.
* inf-ptrace.c (inf_ptrace_fetch_registers): Likewise.
(inf_ptrace_store_registers): Likewise.
* infrun.c (use_displaced_stepping): Likewise.
(displaced_step_prepare_throw): Likewise.
(resume): Likewise.
(proceed): Likewise.
(do_target_wait): Likewise.
(adjust_pc_after_break): Likewise.
(handle_inferior_event_1): Likewise.
(handle_signal_stop): Likewise.
(save_infcall_suspend_state): Likewise.
(restore_infcall_suspend_state): Likewise.
* iq2000-tdep.c (iq2000_extract_return_value): Likewise.
* jit.c (jit_frame_prev_register): Likewise.
* linux-nat.c (save_stop_reason): Likewise.
(linux_nat_wait_1): Likewise.
(resume_stopped_resumed_lwps): Likewise.
* linux-record.c (record_linux_sockaddr): Likewise.
(record_linux_msghdr): Likewise.
(record_linux_system_call): Likewise.
* linux-tdep.c (linux_collect_thread_registers): Likewise.
* lm32-tdep.c (lm32_extract_return_value): Likewise.
(lm32_store_return_value): Likewise.
* m32c-tdep.c (m32c_read_flg): Likewise.
(m32c_pseudo_register_read): Likewise.
(m32c_pseudo_register_write): Likewise.
* m32r-linux-tdep.c (m32r_linux_supply_gregset): Likewise.
(m32r_linux_collect_gregset): Likewise.
* m32r-tdep.c (m32r_store_return_value): Likewise.
(m32r_extract_return_value): Likewise.
* m68k-bsd-nat.c (m68kbsd_supply_fpregset): Likewise.
(m68kbsd_collect_fpregset): Likewise.
* m68k-bsd-tdep.c (m68kbsd_supply_fpregset): Likewise.
* m68k-linux-nat.c (fetch_register): Likewise.
(old_fetch_inferior_registers): Likewise.
(old_store_inferior_registers): Likewise.
(store_regs): Likewise.
* m68k-tdep.c (m68k_svr4_extract_return_value): Likewise.
(m68k_svr4_store_return_value): Likewise.
* m88k-tdep.c (m88k_store_arguments): Likewise.
* mi/mi-main.c (mi_cmd_data_list_changed_registers): Likewise.
(mi_cmd_data_write_register_values): Likewise.
* mips-fbsd-nat.c (mips_fbsd_fetch_inferior_registers): Likewise.
(mips_fbsd_store_inferior_registers): Likewise.
* mips-fbsd-tdep.c (mips_fbsd_supply_fpregs): Likewise.
(mips_fbsd_supply_gregs): Likewise.
(mips_fbsd_collect_fpregs): Likewise.
(mips_fbsd_collect_gregs): Likewise.
(mips_fbsd_supply_fpregset): Likewise.
(mips_fbsd_collect_fpregset): Likewise.
(mips_fbsd_supply_gregset): Likewise.
(mips_fbsd_collect_gregset): Likewise.
* mips-linux-nat.c (supply_gregset): Likewise.
(fill_gregset): Likewise.
(supply_fpregset): Likewise.
(fill_fpregset): Likewise.
* mips-linux-tdep.c (mips_supply_gregset): Likewise.
(mips_fill_gregset): Likewise.
(mips_supply_fpregset): Likewise.
(mips_fill_fpregset): Likewise.
(mips64_supply_gregset): Likewise.
(micromips_linux_sigframe_validate): Likewise.
* mips-nbsd-nat.c (mipsnbsd_fetch_inferior_registers): Likewise.
(mipsnbsd_fetch_inferior_registers): Likewise.
(mipsnbsd_store_inferior_registers): Likewise.
* mips-nbsd-tdep.c (mipsnbsd_supply_fpregset): Likewise.
(mipsnbsd_supply_gregset): Likewise.
(mipsnbsd_iterate_over_regset_sections): Likewise.
(mipsnbsd_supply_reg): Likewise.
(mipsnbsd_supply_fpreg): Likewise.
* mips-tdep.c (mips_in_frame_stub): Likewise.
(mips_dummy_id): Likewise.
(is_octeon_bbit_op): Likewise.
(micromips_bc1_pc): Likewise.
(extended_mips16_next_pc): Likewise.
(mips16_next_pc): Likewise.
(deal_with_atomic_sequence): Likewise.
* moxie-tdep.c (moxie_process_readu): Likewise.
* nios2-tdep.c (nios2_get_next_pc): Likewise.
* nto-procfs.c (procfs_store_registers): Likewise.
* ppc-fbsd-nat.c (ppcfbsd_fetch_inferior_registers): Likewise.
(ppcfbsd_store_inferior_registers): Likewise.
* ppc-linux-nat.c (fetch_vsx_register): Likewise.
(fetch_altivec_register): Likewise.
(get_spe_registers): Likewise.
(fetch_spe_register): Likewise.
(fetch_altivec_registers): Likewise.
(fetch_all_gp_regs): Likewise.
(fetch_all_fp_regs): Likewise.
(store_vsx_register): Likewise.
(store_altivec_register): Likewise.
(set_spe_registers): Likewise.
(store_spe_register): Likewise.
(store_altivec_registers): Likewise.
(store_all_gp_regs): Likewise.
(store_all_fp_regs): Likewise.
* ppc-linux-tdep.c (ppc_linux_supply_gregset): Likewise.
(ppc_linux_collect_gregset): Likewise.
(ppc_canonicalize_syscall): Likewise.
(ppc_linux_record_signal): Likewise.
(ppu2spu_prev_register): Likewise.
* ppc-nbsd-nat.c (ppcnbsd_supply_pcb): Likewise.
* ppc-obsd-nat.c (ppcobsd_fetch_registers): Likewise.
(ppcobsd_store_registers): Likewise.
* ppc-ravenscar-thread.c (ppc_ravenscar_generic_fetch_registers):
Likewise.
(ppc_ravenscar_generic_store_registers): Likewise.
* procfs.c (procfs_fetch_registers): Likewise.
(procfs_store_registers): Likewise.
* ravenscar-thread.c (ravenscar_fetch_registers): Likewise.
(ravenscar_store_registers): Likewise.
(ravenscar_prepare_to_store): Likewise.
* record-btrace.c (record_btrace_fetch_registers): Likewise.
* record-full.c (record_full_wait_1): Likewise.
(record_full_registers_change): Likewise.
(record_full_store_registers): Likewise.
(record_full_core_fetch_registers): Likewise.
(record_full_save): Likewise.
(record_full_goto_insn): Likewise.
* regcache.c (regcache_register_size): Likewise.
(get_regcache_arch): Remove.
(regcache_read_pc): Likewise.
* regcache.h (get_regcache_arch): Remove.
* remote-sim.c (gdbsim_fetch_register): Likewise.
(gdbsim_store_register): Likewise.
* remote.c (fetch_register_using_p): Likewise.
(send_g_packet): Likewise.
(remote_prepare_to_store): Likewise.
(store_registers_using_G): Likewise.
* reverse.c (save_bookmark_command): Likewise.
(goto_bookmark_command): Likewise.
* rs6000-aix-tdep.c (branch_dest): Likewise.
* rs6000-nat.c (rs6000_ptrace64): Likewise.
(fetch_register): Likewise.
* rs6000-tdep.c (ppc_supply_reg): Likewise.
(ppc_collect_reg): Likewise.
(ppc_collect_gregset): Likewise.
(ppc_collect_fpregset): Likewise.
(ppc_collect_vsxregset): Likewise.
(ppc_collect_vrregset): Likewise.
(ppc_displaced_step_hw_singlestep): Likewise.
(rs6000_pseudo_register_read): Likewise.
(rs6000_pseudo_register_write): Likewise.
* s390-linux-nat.c (supply_gregset): Likewise.
(fill_gregset): Likewise.
(s390_linux_fetch_inferior_registers): Likewise.
* s390-linux-tdep.c (s390_write_pc): Likewise.
(s390_software_single_step): Likewise.
(s390_all_but_pc_registers_record): Likewise.
(s390_linux_syscall_record): Likewise.
* sentinel-frame.c (sentinel_frame_prev_arch): Likewise.
* sh-nbsd-nat.c (shnbsd_fetch_inferior_registers): Likewise.
(shnbsd_store_inferior_registers): Likewise.
* sh-tdep.c (sh_extract_return_value_nofpu): Likewise.
(sh_extract_return_value_fpu): Likewise.
(sh_store_return_value_nofpu): Likewise.
(sh_corefile_supply_regset): Likewise.
(sh_corefile_collect_regset): Likewise.
* sh64-tdep.c (sh64_extract_return_value): Likewise.
(sh64_store_return_value): Likewise.
* sparc-linux-tdep.c (sparc32_linux_collect_core_fpregset): Likewise.
* sparc-nat.c (sparc_fetch_inferior_registers): Likewise.
(sparc_store_inferior_registers): Likewise.
* sparc-ravenscar-thread.c (register_in_thread_descriptor_p): Likewise.
(sparc_ravenscar_prepare_to_store): Likewise.
* sparc-tdep.c (sparc32_store_arguments): Likewise.
(sparc_analyze_control_transfer): Likewise.
(sparc_step_trap): Likewise.
(sparc_software_single_step): Likewise.
(sparc32_gdbarch_init): Likewise.
(sparc_supply_rwindow): Likewise.
(sparc_collect_rwindow): Likewise.
* sparc64-linux-tdep.c (sparc64_linux_collect_core_fpregset): Likewise.
* sparc64-nbsd-nat.c (sparc64nbsd_supply_gregset): Likewise.
(sparc64nbsd_collect_gregset): Likewise.
(sparc64nbsd_supply_fpregset): Likewise.
(sparc64nbsd_collect_fpregset): Likewise.
* sparc64-tdep.c (sparc64_store_arguments): Likewise.
(sparc64_supply_gregset): Likewise.
(sparc64_collect_gregset): Likewise.
(sparc64_supply_fpregset): Likewise.
(sparc64_collect_fpregset): Likewise.
* spu-linux-nat.c (spu_fetch_inferior_registers): Likewise.
* spu-tdep.c (spu_unwind_sp): Likewise.
(spu2ppu_prev_register): Likewise.
(spu_memory_remove_breakpoint): Likewise.
* stack.c (return_command): Likewise.
* tic6x-tdep.c (tic6x_extract_signed_field): Likewise.
* tracefile-tfile.c (tfile_fetch_registers): Likewise.
* tracefile.c (trace_save_ctf): Likewise.
* windows-nat.c (do_windows_fetch_inferior_registers): Likewise.
(do_windows_store_inferior_registers): Likewise.
(windows_resume): Likewise.
* xtensa-linux-nat.c (fill_gregset): Likewise.
(supply_gregset_reg): Likewise.
* xtensa-tdep.c (xtensa_register_write_masked): Likewise.
(xtensa_register_read_masked): Likewise.
(xtensa_supply_gregset): Likewise.
(xtensa_extract_return_value): Likewise.
(xtensa_store_return_value): Likewise.

7 years agoTarget FP: Use target format throughout expression parsing
Ulrich Weigand [Wed, 25 Oct 2017 13:32:23 +0000 (15:32 +0200)] 
Target FP: Use target format throughout expression parsing

When parsing floating-point literals, the language parsers currently
use parse_float or some equivalent routine to parse the input string
into a DOUBLEST, which is then stored within a OP_DOUBLE expression
node.  When evaluating the expression, the OP_DOUBLE is finally
converted into a value in target format.

On the other hand, *decimal* floating-point literals are parsed
directly into target format and stored that way in a OP_DECFLOAT
expression node.  In order to eliminate the DOUBLEST, this patch
therefore unifies the handling of binary and decimal floating-
point literals and stores them both in target format within a
new OP_FLOAT expression node, replacing both OP_DOUBLE and
OP_DECFLOAT.

In order to store literals in target format, the parse_float
routine needs to know the type of the literal.  All parsers
therefore need to be changed to determine the appropriate type
(e.g. by detecting suffixes) *before* calling parse_float,
instead of after it as today.  However, this change is mostly
straightforward -- again, this is already done for decimal FP
today.

The core of the literal parsing is moved into a new routine
floatformat_from_string, mirroring floatformat_to_string.
The parse_float routine now calls either floatformat_from_string
or decimal_from_sting, allowing it to handle any type of FP
literal.

All language parsers need to be updated.  Some notes on
specific changes to the various languages:

- C: Decimal FP is now handled in parse_float, and no longer
  needs to be handled specially.

- D: Straightforward.

- Fortran: Still used a hard-coded "atof", also replaced by
  parse_float now.  Continues to always use builtin_real_s8
  as the type of literal, even though this is probably wrong.

- Go: This used to handle "f" and "l" suffixes, even though
  the Go language actually doesn't support those.  I kept this
  support for now -- maybe revisit later.  Note the the GDB
  test suite for some reason actually *verifies* that GDB supports
  those unsupported suffixes ...

- Pascal: Likewise -- this handles suffixes that are not
  supported in the language standard.

- Modula-2: Like Fortran, used to use "atof".

- Rust: Mostly straightforward, except for a unit-testing hitch.
  The code use to set a special "unit_testing" flag which would
  cause "rust_type" to always return NULL.  This makes it not
  possible to encode a literal into target format (which type?).
  The reason for this flag appears to have been that during
  unit testing, there is no "rust_parser" context set up, which
  means no "gdbarch" is available to use its types.  To fix this,
  I removed the unit_testing flag, and instead simply just set up
  a dummy rust_parser context during unit testing.

- Ada: This used to check sizeof (DOUBLEST) to determine which
  type to use for floating-point literal.  This seems questionable
  to begin with (since DOUBLEST is quite unrelated to target formats),
  and in any case we need to get rid of DOUBLEST.  I'm now simply
  always using the largest type (builtin_long_double).

gdb/ChangeLog:
2017-10-25  Ulrich Weigand  <uweigand@de.ibm.com>

* doublest.c (floatformat_from_string): New function.
* doublest.h (floatformat_from_string): Add prototype.

* std-operator.def (OP_DOUBLE, OP_DECFLOAT): Remove, replace by ...
(OP_FLOAT): ... this.
* expression.h: Do not include "doublest.h".
(union exp_element): Replace doubleconst and decfloatconst by
new element floatconst.
* ada-lang.c (resolve_subexp): Handle OP_FLOAT instead of OP_DOUBLE.
(ada_evaluate_subexp): Likewise.
* eval.c (evaluate_subexp_standard): Handle OP_FLOAT instead of
OP_DOUBLE and OP_DECFLOAT.
* expprint.c (print_subexp_standard): Likewise.
(dump_subexp_body_standard): Likewise.
* breakpoint.c (watchpoint_exp_is_const): Likewise.

* parse.c: Include "dfp.h".
(write_exp_elt_dblcst, write_exp_elt_decfloatcst): Remove.
(write_exp_elt_floatcst): New function.
(operator_length_standard): Handle OP_FLOAT instead of OP_DOUBLE
and OP_DECFLOAT.
(operator_check_standard): Likewise.
(parse_float): Do not accept suffix.  Take type as input.  Return bool.
Return target format buffer instead of host DOUBLEST.
Use floatformat_from_string and decimal_from_string to parse
either binary or decimal floating-point types.
(parse_c_float): Remove.
* parser-defs.h: Do not include "doublest.h".
(write_exp_elt_dblcst, write_exp_elt_decfloatcst): Remove.
(write_exp_elt_floatcst): Add prototype.
(parse_float): Update prototype.
(parse_c_float): Remove.

* c-exp.y: Do not include "dfp.h".
(typed_val_float): Use byte buffer instead of DOUBLEST.
(typed_val_decfloat): Remove.
(DECFLOAT): Remove.
(FLOAT): Use OP_FLOAT and write_exp_elt_floatcst.
(parse_number): Update to new parse_float interface.
Parse suffixes and determine type before calling parse_float.
Handle decimal and binary FP types the same way.

* d-exp.y (typed_val_float): Use byte buffer instead of DOUBLEST.
(FLOAT_LITERAL): Use OP_FLOAT and write_exp_elt_floatcst.
(parse_number): Update to new parse_float interface.
Parse suffixes and determine type before calling parse_float.

* f-exp.y: Replace dval by typed_val_float.
(FLOAT): Use OP_FLOAT and write_exp_elt_floatcst.
(parse_number): Use parse_float instead of atof.

* go-exp.y (typed_val_float): Use byte buffer instead of DOUBLEST.
(parse_go_float): Remove.
(FLOAT): Use OP_FLOAT and write_exp_elt_floatcst.
(parse_number): Call parse_float instead of parse_go_float.
Parse suffixes and determine type before calling parse_float.

* p-exp.y (typed_val_float): Use byte buffer instead of DOUBLEST.
(FLOAT): Use OP_FLOAT and write_exp_elt_floatcst.
(parse_number): Update to new parse_float interface.
Parse suffixes and determine type before calling parse_float.

* m2-exp.y: Replace dval by byte buffer val.
(FLOAT): Use OP_FLOAT and write_exp_elt_floatcst.
(parse_number): Call parse_float instead of atof.

* rust-exp.y (typed_val_float): Use byte buffer instead of DOUBLEST.
(lex_number): Call parse_float instead of strtod.
(ast_dliteral): Use OP_FLOAT instead of OP_DOUBLE.
(convert_ast_to_expression): Handle OP_FLOAT instead of OP_DOUBLE.
Use write_exp_elt_floatcst.
(unit_testing): Remove static variable.
(rust_type): Do not check unit_testing.
(rust_lex_tests): Do not set uint_testing.  Set up dummy rust_parser.

* ada-exp.y (type_float, type_double): Remove.
(typed_val_float): Use byte buffer instead of DOUBLEST.
(FLOAT): Use OP_FLOAT and write_exp_elt_floatcst.
* ada-lex.l (processReal): Use parse_float instead of sscanf.

7 years agoPR22348, conflicting global vars in crx and cr16
Alan Modra [Wed, 25 Oct 2017 11:29:14 +0000 (21:59 +1030)] 
PR22348, conflicting global vars in crx and cr16

include/
PR 22348
* opcode/cr16.h (instruction): Delete.
(cr16_words, cr16_allWords, cr16_currInsn): Delete.
* opcode/crx.h (crx_cst4_map): Rename from cst4_map.
(crx_cst4_maps): Rename from cst4_maps.
(crx_no_op_insn): Rename from no_op_insn.
(instruction): Delete.
opcodes/
PR 22348
* cr16-dis.c (cr16_cinvs, instruction, cr16_currInsn): Make static.
(cr16_words, cr16_allWords, processing_argument_number): Likewise.
(imm4flag, size_changed): Likewise.
* crx-dis.c (crx_cinvs, NUMCINVS, instruction, currInsn): Likewise.
(words, allWords, processing_argument_number): Likewise.
(cst4flag, size_changed): Likewise.
* crx-opc.c (crx_cst4_map): Rename from cst4_map.
(crx_cst4_maps): Rename from cst4_maps.
(crx_no_op_insn): Rename from no_op_insn.
gas/
PR 22348
* config/tc-crx.c (instruction, output_opcode): Make static.
(relocatable, ins_parse, cur_arg_num): Likewise.
(parse_insn): Adjust for renamed opcodes globals.
(check_range): Likewise

7 years agoAdd common AARCH64 REGNUM defines
Alan Hayward [Wed, 25 Oct 2017 08:06:41 +0000 (09:06 +0100)] 
Add common AARCH64 REGNUM defines

gdb/
* aarch64-tdep.h (enum aarch64_regnum): Remove.
* arch/aarch64.h: New file.

gdbserver/
* linux-aarch64-low.c (aarch64_fill_gregset): Replace defines
with REGNO.
(aarch64_store_gregset): Likewise.
(aarch64_fill_fpregset): Likewise.
(aarch64_store_fpregset): Likewise.

7 years agoAllow for __gnu_lto_slim prefixed with extra "_"
Alan Modra [Wed, 25 Oct 2017 05:02:52 +0000 (15:32 +1030)] 
Allow for __gnu_lto_slim prefixed with extra "_"

Some targets prefix global symbols with "_".

bfd/
* archive.c (_bfd_compute_and_write_armap): Match "__gnu_lto_slim"
optionally prefixed with "_".
* linker.c (_bfd_generic_link_add_one_symbol): Likewise.
binutils/
* nm.c (filter_symbols): Match "__gnu_lto_slim" optionally prefixed
with "_".
gold/
* symtab.cc (Symbol_table::add_from_relobj): Match "__gnu_lto_slim"
optionally prefixed with "_".
ld/
* testsuite/ld-plugin/lto-3r.d: Match "__gnu_lto_v" optionally
prefixed with "_".
* testsuite/ld-plugin/lto-5r.d: Likewise.

7 years agoYet another fill-1 test fix
Alan Modra [Wed, 25 Oct 2017 05:01:58 +0000 (15:31 +1030)] 
Yet another fill-1 test fix

tic4x fails due to being a 4 octets per byte target, while tic54x is 2
octets per byte.

mmix still fails with
fill-1.s:4: Error: unknown pseudo-op: `.l1:'
fill-1.s:6: Error: unknown pseudo-op: `.l2:'
fill-1.s:3: Error: .space specifies non-absolute value

and if the labels are changed to L1 and L2 then mep-elf fails with
fill-1.s:3: Error: .space specifies non-absolute value

Since both of those look like they ought to be investigated by the
target maintainers, I'm tweaking the test to fail on both targets.

* testsuite/gas/all/fill-1.d: Exclude tic4x and tic54x.
* testsuite/gas/all/fill-1.s: Use L1 rather than .L1.

7 years agoAutomatic date update in version.in
GDB Administrator [Wed, 25 Oct 2017 00:00:26 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoFix format typos in previous previous ld/ChangeLog entry
Hans-Peter Nilsson [Tue, 24 Oct 2017 22:46:24 +0000 (00:46 +0200)] 
Fix format typos in previous previous ld/ChangeLog entry

7 years agotestsuite/ld-riscv-elf/ld-riscv-elf.exp: Fix typo for istarget.
Hans-Peter Nilsson [Tue, 24 Oct 2017 22:45:05 +0000 (00:45 +0200)] 
testsuite/ld-riscv-elf/ld-riscv-elf.exp: Fix typo for istarget.

7 years agoFix racy test in gdb.base/new-ui.exp
Pedro Alves [Tue, 24 Oct 2017 22:22:56 +0000 (23:22 +0100)] 
Fix racy test in gdb.base/new-ui.exp

I noticed gdb.base/new-ui.exp failing once here with:

 FAIL: gdb.base/new-ui.exp: do_test: delete all breakpoints on extra console (got interactive prompt)
 FAIL: gdb.base/new-ui.exp: do_test: main console: next causes no spurious output on other console
 FAIL: gdb.base/new-ui.exp: do_test: main console: breakpoint hit reported on other console

The problem is 100% reproducible with check-read1:
  $ make check-read1 TESTS="gdb.*/new-ui.exp"

testsuite/gdb.log shows:
  delete
  Delete all breakpoints? (y or n) [answered Y; input not from terminal]
  (gdb) FAIL: gdb.base/new-ui.exp: do_test: delete all breakpoints on extra console (got interactive prompt)

This commit fixes the problem.

gdb/testsuite/ChangeLog:
2017-10-24  Pedro Alves  <palves@redhat.com>

* gdb.base/new-ui.exp (do_test): Split "delete all breakpoints on
extra console" test in two stages.

7 years agoRISC-V: Fix disassembly of c.addi4spn, c.addi16sp, c.lui when imm=0
Andrew Waterman [Thu, 19 Oct 2017 18:21:44 +0000 (11:21 -0700)] 
RISC-V: Fix disassembly of c.addi4spn, c.addi16sp, c.lui when imm=0

These are all invalid instructions, so they should not disassemble.

opcodes/ChangeLog

2017-10-24  Andrew Waterman  <andrew@sifive.com>

        * riscv-opc.c (match_c_addi16sp) : New function.
        (match_c_addi4spn): New function.
        (match_c_lui): Don't allow 0-immediate encodings.
        (riscv_opcodes) <addi>: Use the above functions.
        <add>: Likewise.
        <c.addi4spn>: Likewise.
        <c.addi16sp>: Likewise.

gas/ChangeLog

2017-10-24  Andrew Waterman  <andrew@sifive.com>

        * testsuite/gas/riscv/c-addi16sp-fail.d: New test.
        testsuite/gas/riscv/c-addi16sp-fail.l: Likewise.
        testsuite/gas/riscv/c-addi16sp-fail.s: Likewise.
        testsuite/gas/riscv/c-addi4spn-fail.d: Likewise.
        testsuite/gas/riscv/c-addi4spn-fail.l: Likewise.
        testsuite/gas/riscv/c-addi4spn-fail.s: Likewise.
        testsuite/gas/riscv/riscv.exp: Add new tests.

7 years agoUse const reference for decimal_from_string argument
Ulrich Weigand [Tue, 24 Oct 2017 16:34:41 +0000 (18:34 +0200)] 
Use const reference for decimal_from_string argument

No functional change.

gdb/ChangeLog:
2017-10-24  Ulrich Weigand  <uweigand@de.ibm.com>

* dfp.h (decimal_from_string): Use const reference for argument.
* dfp.c (decimal_from_string): Likewise.

7 years agoTarget FP printing: Use floatformat_to_string in tdep code
Ulrich Weigand [Tue, 24 Oct 2017 16:01:39 +0000 (18:01 +0200)] 
Target FP printing: Use floatformat_to_string in tdep code

A few tdep files use target-specific printing routines to output values in
the floating-point registers.  To get rid of host floating-point code,
this patch changes them to use floatformat_to_string instead.

No functional change intended, the resulting output should look the same.

ChangeLog:
2017-10-24  Ulrich Weigand  <uweigand@de.ibm.com>

* i387-tdep.c (print_i387_value): Use floatformat_to_string.
* sh64-tdep.c (sh64_do_fp_register): Likewise.
* mips-tdep.c (mips_print_fp_register): Likewise.

7 years agoTarget FP printing: Simplify and fix ui_printf
Ulrich Weigand [Tue, 24 Oct 2017 16:00:50 +0000 (18:00 +0200)] 
Target FP printing: Simplify and fix ui_printf

This patch adds support for handling format strings to both
floatformat_to_string and decimal_to_string, and then uses
those routines to implement ui_printf formatted printing.

There is already a subroutine printf_decfloat that ui_printf uses to
handle decimal FP.  This is renamed to printf_floating and updated
to handle both binary and decimal FP.  This includes the following
set of changes:

- printf_decfloat currently parses the format string again to determine
  the intended target format.  This seems superfluous since the common
  parsing code in parse_format_string already did this, but then did
  not pass the result on to its users.  Fixed by splitting the decfloat_arg
  argument class into three distinct classes, and passing them through.

- Now we can rename printf_decfloat to printf_floating and also call it
  for the argument classes representing binary FP types.

- The code will now use the argclass to detect the type the value should
  be printed at, and converts the input value to this type if necessary.
  To remain compatible with current behavior, for binary FP the code
  instead tries to re-interpret the input value as a FP type of the
  same size if that exists.  (Maybe this behavior is more confusing
  than useful -- but this can be changed later if we want to ...)

- Finally, we can use floatformat_to_string / decimal_to_string passing
  the format string to perform the formatted output using the desired
  target FP type.

Note that we no longer generate different code depending on whether or not
the host supports "long double" -- this check is obsolete anyway since C++11
mandates "long double", and in any case a %lg format string is intended to
refer to the *target* long double type, not the host version.

Note also that formatted printing of DFP numbers may not work correctly,
since it attempts to use the host printf to do so (and makes unwarranted
assumptions about the host ABI while doing so!).  This is no change to
the current behavior -- I simply moved the code from printf_decfloat to
the decimal_to_string routine in dfp.c.  If we want to fix it in the
future, that is a more appropriate place anyway.

ChangeLog:
2017-10-24  Ulrich Weigand  <uweigand@de.ibm.com>

* common/format.h (enum argclass): Replace decfloat_arg by
dec32float_arg, dec64float_arg, and dec128float_arg.
* common/format.c (parse_format_string): Update to return
new decimal float argument classes.

* printcmd.c (printf_decfloat): Rename to ...
(printf_floating): ... this.  Add argclass argument, and use it
instead of parsing the format string again.  Add support for
binary floating-point values, using floatformat_to_string.
Convert value to the target format if it doesn't already match.
(ui_printf): Call printf_floating instead of printf_decfloat,
also for double_arg / long_double_arg.  Pass argclass.

* dfp.c (decimal_to_string): Add format string argument.
* dfp.h (decimal_to_string): Likewise.

* doublest.c (floatformat_to_string): Add format string argument.
* doublest.h (floatformat_to_string): Likewise.

7 years agoTarget FP printing: Simplify and fix print_floating
Ulrich Weigand [Tue, 24 Oct 2017 15:59:22 +0000 (17:59 +0200)] 
Target FP printing: Simplify and fix print_floating

The print_floating routine currently makes a lot of assumptions about host
and target floating point formats.  This patch cleans up many of those.

One problem is that print_floating may currently be called with types
that are not actually floating-point types, and it tries hard to output
those as floating-point values anyway.  However, there is only one single
caller of print_floating where this can ever happen: print_scalar_formatted.
And in fact, it is much simpler to handle the case where the value to be
printed is not already of floating-point type right there.

So this patch changes print_scalar_formatted to handle the 'f' format
as follows:

- If the value to be printed is already of floating-point type, just
  call print_floating on it.

- Otherwise, if there is a standard target floating-point type of
  the same size as the value, call print_floating using that type.

- Otherwise, just print the value as if the 'f' format had not been
  specified at all.

This has the overall effect to printing everything the same way as
the old code did, but is overall a lot simpler.  (Also, it would
allow us to change the above strategy more easily, if that might
be a more intuitive user interface.  For example, in the third
case above, maybe an error would be more appropriate?)

Given that change, print_floating can become much simpler.  In particular,
we now always have a floating-point format that we can consult.  This
means we can use the floating-point format to programmatically determine
the number of digits necessary to print the value.

The current code uses a hard-coded value of 9, 17, or 35 digits.  Note
that this matches the DECIMAL_DIG values for IEEE-32, IEEE-64, and
IEEE-128.  (Actually, for IEEE-128 the correct value is 36 -- the 35
seems to be an oversight.)  The DECIMAL_DIG value is defined to be
the smallest number so that any number in the target format, when
printed to this number of digits and then scanned back into a binary
floating-point number, will result in the original value.

Now that we always have a FP format, we can just compute the DECIMAL_DIG
value using the formula from the C standard.  This will be correct for
*all* FP formats, not just the above list, and it will be correct (as
opposed to current code) if the target formats differ from the host ones.

The patch moves the new logic to a new floatformat_to_string routine
(analogous to the existing decimal_to_string).  The print_floating
routine now calls floatformat_to_string or decimal_to_string, making
the separate print_decimal_floating and generic_val_print_decfloat routines
unnecessary.

gdb/ChangeLog:
2017-10-24  Ulrich Weigand  <uweigand@de.ibm.com>

* doublest.c (floatformat_precision): New routine.
(floatformat_to_string): Likewise.
* doublest.c (floatformat_to_string): Add prototype.

* printcmd.c (print_scalar_formatted): Only call print_floating
on floating-point types.
* valprint.c: Do not include "floatformat.h".
(generic_val_print_decfloat): Remove.
(generic_val_print): Call generic_val_print_float for both
TYPE_CODE_FLT and TYPE_CODE_DECFLOAT.
(print_floating): Use floatformat_to_string.  Handle decimal float.
(print_decimal_floating): Remove, merge into floatformat_to_string.
* value.h (print_decimal_floating): Remove.

* Makefile.in: Do not build doublest.c with -Wformat-nonliteral.

7 years agoRISC-V: Only relax to C.LUI when imm != 0 and rd != 0/2
Andrew Waterman [Sun, 24 Sep 2017 01:04:16 +0000 (18:04 -0700)] 
RISC-V: Only relax to C.LUI when imm != 0 and rd != 0/2

This matches the ISA specification.  This also adds two tests: one to
make sure the assembler rejects invalid 'c.lui's, and one to make sure
we only relax valid 'c.lui's.

bfd/ChangeLog

2017-10-24  Andrew Waterman  <andrew@sifive.com>

        * elfnn-riscv.c (_bfd_riscv_relax_lui): Don't relax to c.lui
        when rd is x0.

include/ChangeLog

2017-10-24  Andrew Waterman  <andrew@sifive.com>

        * opcode/riscv.h (VALID_RVC_LUI_IMM): c.lui can't load the
        immediate 0.

gas/ChangeLog

2017-10-24  Andrew Waterman  <andrew@sifive.com>

        * testsuite/gas/riscv/c-lui-fail.d: New testcase.
        gas/testsuite/gas/riscv/c-lui-fail.l: Likewise.
        gas/testsuite/gas/riscv/c-lui-fail.s: Likewise.
        gas/testsuite/gas/riscv/riscv.exp: Likewise.

ld/ChangeLog

2017-10-24  Andrew Waterman  <andrew@sifive.com>

        * ld/testsuite/ld-riscv-elf/c-lui.d: New testcase.
        ld/testsuite/ld-riscv-elf/c-lui.s: Likewise.
        ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp: New test suite.

7 years agoFix my previous gas/ChangeLog entry
Palmer Dabbelt [Tue, 24 Oct 2017 13:58:48 +0000 (06:58 -0700)] 
Fix my previous gas/ChangeLog entry

7 years agoi386: Support .code64 directive only with 64-bit bfd
H.J. Lu [Tue, 24 Oct 2017 14:47:32 +0000 (07:47 -0700)] 
i386: Support .code64 directive only with 64-bit bfd

Without 64-bit bfd, we can't properly support .code64 directive in
32-bit mode.

* config/tc-i386.c (md_pseudo_table): Add .code64 directive
only if BFD64 is defined.
* testsuite/gas/i386/code64-inval.l: New file.
* gas/testsuite/gas/i386/code64-inval.s: Likewise.
* gas/testsuite/gas/i386/code64.d: Likewise.
* gas/testsuite/gas/i386/code64.s: Likewise.
* testsuite/gas/i386/i386.exp: Run mixed-mode-reloc32,
att-regs, intel-regs, intel-expr and string-ok tests only if
assembler supports x86-64.  Run code64 and code64-inval.

7 years agoFix gdb.opt/inline-cmds.exp regressions
Ulrich Weigand [Tue, 24 Oct 2017 14:33:53 +0000 (16:33 +0200)] 
Fix gdb.opt/inline-cmds.exp regressions

When sorting pending blocks in end_symtab_get_static_block, blocks
with the same starting address must remain in the original order
to preserve inline function caller/callee relationships.

The original code seems to have implicitly relied on the fact that the
glibc qsort implemention actually (in the common case) provides a stable
sort, although this is not guaranteed by the standard.  But the GNU
libstdc++ std::sort implementation is *not* stable.

gdb/ChangeLog:
2017-10-24  Ulrich Weigand  <uweigand@de.ibm.com>

* buildsym.c (end_symtab_get_static_block): Use std::stable_sort.

7 years ago[BFD][PR21703]Override the new defined symbol with the old normal symbol when --allow...
Renlin Li [Tue, 24 Oct 2017 11:42:30 +0000 (12:42 +0100)] 
[BFD][PR21703]Override the new defined symbol with the old normal symbol when --allow-multiple-definition is provided.

The behavior of _bfd_elf_merge_symbol and _bfd_generic_link_add_one_symbol is
inconsistent.

In multiple definition case, _bfd_elf_merge_symbol decided to override the old
symbol definition with the new defintion, (size, type, target data)
In _bfd_generic_link_add_one_symbol, it simply return without doing anything
because of allow-multiple-definition is provided.
This leaves the symbol in a wrong state.

Here, following the documentation, I made this patch to force the old definition
override the new definition if the old symbol is not dynamic or weak.
Because, in those two cases, it's expected to do some merge. I have checked
that, those two cases are properly handled.

bfd/
PR ld/21703
* elflink.c (_bfd_elf_merge_symbol): Handle multiple definition case.

ld/

PR ld/21703
* testsuite/ld-elf/elf.exp: Run new tests.
* testsuite/ld-elf/pr21703-1.s: New.
* testsuite/ld-elf/pr21703-2.s: New.
* testsuite/ld-elf/pr21703-3.s: New.
* testsuite/ld-elf/pr21703-4.s: New.
* testsuite/ld-elf/pr21703-r.sd: New.
* testsuite/ld-elf/pr21703-shared.sd: New.
* testsuite/ld-elf/pr21703.sd: New.
* testsuite/ld-elf/pr21703.ver: New.

7 years agoReindent gdb.threads/attach-into-signal.exp
Pedro Alves [Tue, 24 Oct 2017 09:43:45 +0000 (10:43 +0100)] 
Reindent gdb.threads/attach-into-signal.exp

A previous patch removed one nesting level.

gdb/testsuite/ChangeLog:
2017-10-24  Pedro Alves  <palves@redhat.com>

* gdb.threads/attach-into-signal.exp (corefunc): Reindent.

7 years agoDrop /proc/PID/status polling from gdb.threads/attach-into-signal.exp
Pedro Alves [Tue, 24 Oct 2017 09:43:35 +0000 (10:43 +0100)] 
Drop /proc/PID/status polling from gdb.threads/attach-into-signal.exp

I noticed that the 'with_test_prefix "stoppedtry $stoppedtry"' prefix
in this testcase is unnecessary, because inside that block there are
no pass/fail calls.  In fact the block includes a comment saying:

  # No PASS message as we may be looping in multiple
  # attempts.

but looking deeper at this I noticed a few odd things with this code
block:

1. This code is assuming that the second line in the /proc/PID/status
   files is the "State:" line, which may have been true when this was
   originally written, but is not true on my machine at least (Linux
   4.8.13).

     $ cat /proc/self/status
     Name:   cat
     Umask:  0002
     State:  R (running)

   So nowadays, that 'string match "*(stopped)*"' is running against
   the "Umask:" line and thus always returns false, meaning the loop
   always breaks on $stoppedtry == 0.

2. The loop seems to be waiting for the process to become "(stopped)",
   but if so then that 'if {![string match]}' check is reversed, it
   should be checking 'if {[string match]}' instead, because "string
   match" returns true if the string matches, not 0.

3. But if we fixed all that, we'd still run into the simple fact that
   nothing is actually stopping the test's inferior process before GDB
   attaches...  The top of the testcase says:

    # This test was created by modifying attach-stopped.exp.

   ... and attach-stopped.exp does have:

       # Stop the program
       remote_exec build "kill -s STOP ${testpid}"

   but then attach-stopped.exp doesn't have an equivalent
   /proc/PID/status poll loop...  (Maybe it could.)

So remove this whole loop as useless.

gdb/testsuite/ChangeLog:
2017-10-24  Pedro Alves  <palves@redhat.com>

* gdb.threads/attach-into-signal.exp: Remove whole "stoppedtry"
loop.

7 years agoFix unstable test names in gdb.threads/attach-into-signal.exp
Pedro Alves [Tue, 24 Oct 2017 09:43:35 +0000 (10:43 +0100)] 
Fix unstable test names in gdb.threads/attach-into-signal.exp

Currently, if you diff testsuite/gdb.sum of two testsuite runs you'll
often see spurious hunks like these:

  -PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attempt 2: attach (pass 2), pending signal catch
  +PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attempt 1: attach (pass 2), pending signal catch
   PASS: gdb.threads/attach-into-signal.exp: successfully compiled posix threads test case
   PASS: gdb.threads/attach-into-signal.exp: threaded: handle SIGALRM stop print pass
  -PASS: gdb.threads/attach-into-signal.exp: threaded: attempt 1: attach (pass 1), pending signal catch
  -PASS: gdb.threads/attach-into-signal.exp: threaded: attempt 1: attach (pass 2), pending signal catch
  +PASS: gdb.threads/attach-into-signal.exp: threaded: attempt 2: attach (pass 1), pending signal catch
  +PASS: gdb.threads/attach-into-signal.exp: threaded: attempt 4: attach (pass 2), pending signal catch

Fix this by removing the "attempt $attempt" test prefix.  The attempt
number can be retrieved from gdb.log instead, since the testcase is
already using "verbose -log" to that effect.

(The 'with_test_prefix "stoppedtry $stoppedtry"' prefix is unnecessary
too, because inside that block there are no pass/fail calls.  In fact
the block includes a comment saying:

  # No PASS message as we may be looping in multiple
  # attempts.

but I'll drop that whole loop in the next patch instead.)

After this commit we'll show:

  PASS: gdb.threads/attach-into-signal.exp: nonthreaded: handle SIGALRM stop print pass
  PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attach (pass 1), pending signal catch
  PASS: gdb.threads/attach-into-signal.exp: nonthreaded: attach (pass 2), pending signal catch
  PASS: gdb.threads/attach-into-signal.exp: successfully compiled posix threads test case
  PASS: gdb.threads/attach-into-signal.exp: threaded: handle SIGALRM stop print pass
  PASS: gdb.threads/attach-into-signal.exp: threaded: attach (pass 1), pending signal catch
  PASS: gdb.threads/attach-into-signal.exp: threaded: attach (pass 2), pending signal catch

(I've avoided reindenting to make the patch easier to maintain/read.
I'll reindent the blocks after this is in.)

gdb/testsuite/ChangeLog:
2017-10-24  Pedro Alves  <palves@redhat.com>

* gdb.threads/attach-into-signal.exp (corefunc): Remove "attach
$attempt" test prefix.

7 years agoFix unstable test names in gdb.python/py-objfile.exp
Pedro Alves [Tue, 24 Oct 2017 09:43:34 +0000 (10:43 +0100)] 
Fix unstable test names in gdb.python/py-objfile.exp

Currently, if you diff testsuite/gdb.sum of different builds you see
this spurious hunk:

  -PASS: gdb.python/py-objfile.exp: get python valueof "sep_objfile.build_id" (6a0bfcab663f9810ccff33c756afdebb940037d4)
  +PASS: gdb.python/py-objfile.exp: get python valueof "sep_objfile.build_id" (1f5531c657c57777b05fc95baa0025fd1d115c3b)

Fix this by syncing get_python_valueof with get_integer_valueof, which
stopped outputting the value in commit 2f20e312aad6
("get_integer_valueof: Don't output value in test name").

After this commit we'll show:

  PASS: gdb.python/py-objfile.exp: get python valueof "sep_objfile.build_id"

As the comment explicitly says get_python_valueof is modeled on
get_integer_valueof, I went ahead and also added the optional 'test'
parameter while at it.

gdb/testsuite/ChangeLog:
2017-10-24  Pedro Alves  <palves@redhat.com>

* lib/gdb-python.exp (get_python_valueof): Add 'test' optional
parameter and handle it.  Don't output read value in test name.

7 years agoFix unstable test names in gdb.gdb/unittest.exp
Pedro Alves [Tue, 24 Oct 2017 09:43:34 +0000 (10:43 +0100)] 
Fix unstable test names in gdb.gdb/unittest.exp

Currently, if you diff testsuite/gdb.sum of two builds built from different
source directories you see this spurious hunk:

  -PASS: gdb.gdb/unittest.exp: maintenance check xml-descriptions /home/pedro/gdb1/src/gdb/testsuite/../features
  +PASS: gdb.gdb/unittest.exp: maintenance check xml-descriptions /home/pedro/gdb2/src/gdb/testsuite/../features

After this commit we'll show instead:

  PASS: gdb.gdb/unittest.exp: maintenance check xml-descriptions ${srcdir}/../features

gdb/testsuite/ChangeLog:
2017-10-24  Pedro Alves  <palves@redhat.com>

* gdb.gdb/unittest.exp ('maintenance check xml-descriptions'): Use
custom test name.

7 years agoFix unstable test names in gdb.base/startup-with-shell.exp
Pedro Alves [Tue, 24 Oct 2017 09:43:33 +0000 (10:43 +0100)] 
Fix unstable test names in gdb.base/startup-with-shell.exp

Currently, if you diff testsuite/gdb.sum of two builds in different
directories you see these spurious hunks:

  -PASS: gdb.base/startup-with-shell.exp: touch /home/pedro/gdb1/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/unique-file.unique-extension
  +PASS: gdb.base/startup-with-shell.exp: touch /home/pedro/gdb2/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/unique-file.unique-extension

  -PASS: gdb.base/startup-with-shell.exp: startup_with_shell = on; run_args = *.unique-extension: set args /home/pedro/gdb1/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/*.unique-extension
  +PASS: gdb.base/startup-with-shell.exp: startup_with_shell = on; run_args = *.unique-extension: set args /home/pedro/gdb2/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/*.unique-extension

  -PASS: gdb.base/startup-with-shell.exp: startup_with_shell = off; run_args = *.unique-extension: set args /home/pedro/gdb1/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/*.unique-extension
  +PASS: gdb.base/startup-with-shell.exp: startup_with_shell = off; run_args = *.unique-extension: set args /home/pedro/gdb2/build/gdb/testsuite/outputs/gdb.base/startup-with-shell/*.unique-extension

Since the run_args arguments are already shown in the test prefix, we
can change the "set args" test name to literally "set args $run_args".
I.e., after this commit we'll show:

  PASS: gdb.base/startup-with-shell.exp: startup_with_shell = on; run_args = *.unique-extension: set args $run_args
  PASS: gdb.base/startup-with-shell.exp: startup_with_shell = off; run_args = *.unique-extension: set args $run_args
  PASS: gdb.base/startup-with-shell.exp: startup_with_shell = on; run_args = $TEST: set args $run_args
  PASS: gdb.base/startup-with-shell.exp: startup_with_shell = off; run_args = $TEST: set args $run_args

gdb/testsuite/ChangeLog:
2017-10-24  Pedro Alves  <palves@redhat.com>

* gdb.base/startup-with-shell.exp ('touch $unique_file'): Don't
include the unstable output directory name in the test's name.
(initial_setup_simple) <'set args'>: Use custom test name.

7 years agoFix unstable test names in gdb.arch/arc-tdesc-cpu.exp
Pedro Alves [Tue, 24 Oct 2017 09:43:33 +0000 (10:43 +0100)] 
Fix unstable test names in gdb.arch/arc-tdesc-cpu.exp

Currently if you diff testsuite/gdb.sum of two builds built from
different source trees you see this spurious hunk:

  -PASS: gdb.arch/arc-tdesc-cpu.exp: set tdesc filename /home/pedro/gdb1/src/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml
  +PASS: gdb.arch/arc-tdesc-cpu.exp: set tdesc filename /home/pedro/gdb2/src/gdb/testsuite/gdb.arch/arc-tdesc-cpu.xml

After this commit we'll show this instead in gdb.sum:
  PASS: gdb.arch/arc-tdesc-cpu.exp: set tdesc filename $srcdir/gdb.arch/arc-tdesc-cpu.xml

gdb/testsuite/ChangeLog:
2017-10-24  Pedro Alves  <palves@redhat.com>

* gdb.arch/arc-tdesc-cpu.exp ('set tdesc filename'): Use gdb_test
with explicit test name.

7 years agoRISC-V: Don't emit 2-byte NOPs if the C extension is disabled
Palmer Dabbelt [Fri, 6 Oct 2017 19:06:45 +0000 (12:06 -0700)] 
RISC-V: Don't emit 2-byte NOPs if the C extension is disabled

Systems without the C extension mandate 4-byte alignment for
instructions, so there is no reason to allow for 2-byte alignment.  This
change avoids emitting lots of unimplemented instructions into object
files on non-C targets, which users keep reporting as a bug.  While this
isn't actually a bug (as none of the offsets in object files are
relevant until RISC-V), it is ugly.

gas/ChangeLog

2017-10-23  Palmer Dabbelt  <palmer@dabbelt.com>

        * config/tc-riscv.c (riscv_frag_align_code): Align code by 4
        bytes on non-RVC systems.

7 years agoAutomatic date update in version.in
GDB Administrator [Tue, 24 Oct 2017 00:00:31 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoi386: Don't add elf32_x86_64 to supported emulations
H.J. Lu [Mon, 23 Oct 2017 21:44:04 +0000 (14:44 -0700)] 
i386: Don't add elf32_x86_64 to supported emulations

For 32-bit BFD, since elf64-x86-64.o isn't compiled in, "-m elf32_x86_64"
never worked.  Don't add elf32_x86_64 to supported emulations with 32-bit
BFD.

* configure.tgt (i[3-7]86-*-linux-*): Move elf32_x86_64 from
targ_extra_libpath to targ64_extra_libpath.

7 years agoAdd missing ChangeLog entries
Igor Tsimbalist [Mon, 23 Oct 2017 20:09:26 +0000 (13:09 -0700)] 
Add missing ChangeLog entries

7 years agoMake sure that undefined symbols added to the linker command line via the -u option...
Nick Clifton [Mon, 23 Oct 2017 17:16:49 +0000 (18:16 +0100)] 
Make sure that undefined symbols added to the linker command line via the -u option appear in the output executable, if they have not been resolved.

PR 22319
bfd * elflink.c (elf_link_output_extsym): Keep global undefined
symbols if they have been marked as needed.

ld * testsuite/ld-elf/pr22310.s: New test source file.
* testsuite/ld-elf/pr22310.d: New test driver.
* testsuite/ld-mmix/undef-3.d: Update expected output from readelf.

7 years agoFix the master due to bad regenerated files
Igor Tsimbalist [Mon, 23 Oct 2017 16:28:46 +0000 (19:28 +0300)] 
Fix the master due to bad regenerated files

* i386-init.h: Regenerate
* i386-tbl.h: Likewise

7 years agoMIPS: Preset EF_MIPS_ABI2 with n32 ELF objects
Maciej W. Rozycki [Mon, 23 Oct 2017 14:39:46 +0000 (15:39 +0100)] 
MIPS: Preset EF_MIPS_ABI2 with n32 ELF objects

Fix a bug in MIPS n32 ELF object file generation and make such objects
consistent with the n32 BFD requested, by presetting the EF_MIPS_ABI2
flag in the `e_flags' member of the newly created ELF file header, as it
is this flag that tells n32 objects apart from o32 objects.

This flag will then stay set through to output file generation for
writers such as GAS or GDB's `generate-core-file' command.  Readers will
overwrite the whole of `e_flags' along with the rest of the ELF file
header in `elf_swap_ehdr_in' and then verify in `mips_elf_n32_object_p'
that the flag is still set before accepting an input file as an n32
object.

The issue was discovered with GDB's `generate-core-file' command making
o32 core files out of n32 debuggees.

bfd/
* elfn32-mips.c (mips_elf_n32_mkobject): New prototype and
function.
(bfd_elf32_mkobject): Use `mips_elf_n32_mkobject' rather than
`_bfd_mips_elf_mkobject'.

gas/
* config/tc-mips.c (mips_elf_final_processing): Don't set
EF_MIPS_ABI2 in `e_flags'.

7 years agoEnable Intel AVX512_BITALG instructions.
Igor Tsimbalist [Fri, 20 Oct 2017 20:56:30 +0000 (23:56 +0300)] 
Enable Intel AVX512_BITALG instructions.

Intel has disclosed a set of new instructions. The spec is
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

gas/

* config/tc-i386.c (cpu_arch): Add .avx512_bitalg.
(cpu_noarch): noavx512_bitalg.
* doc/c-i386.texi: Document .avx512_bitalg, noavx512_bitalg.
* testsuite/gas/i386/i386.exp: Add AVX512_BITALG tests.
* testsuite/gas/i386/avx512f_bitalg-intel.d: New test.
* testsuite/gas/i386/avx512f_bitalg.d: Likewise.
* testsuite/gas/i386/avx512f_bitalg.s: Likewise.
* testsuite/gas/i386/avx512vl_bitalg-intel.d: Likewise.
* testsuite/gas/i386/avx512vl_bitalg.d: Likewise.
* testsuite/gas/i386/avx512vl_bitalg.s: Likewise.
* testsuite/gas/i386/x86-64-avx512f_bitalg-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx512f_bitalg.d: Likewise.
* testsuite/gas/i386/x86-64-avx512f_bitalg.s: Likewise.
* testsuite/gas/i386/x86-64-avx512vl_bitalg-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vl_bitalg.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vl_bitalg.s: Likewise.

opcodes/

* i386-dis.c (enum): Add PREFIX_EVEX_0F3854, PREFIX_EVEX_0F388F.
(enum): Add EVEX_W_0F3854_P_2.
* i386-dis-evex.h (evex_table): Updated.
* i386-gen.c (cpu_flag_init): Add CPU_AVX512_BITALG,
CPU_ANY_AVX512_BITALG_FLAGS. Update CPU_ANY_AVX512F_FLAGS.
(cpu_flags): Add CpuAVX512_BITALG.
* i386-opc.h (enum): Add CpuAVX512_BITALG.
(i386_cpu_flags): Add cpuavx512_bitalg..
* i386-opc.tbl: Add Intel AVX512_BITALG instructions.
* i386-init.h: Regenerate.
* i386-tbl.h: Likewise.

7 years agoEnable Intel AVX512_VNNI instructions.
Igor Tsimbalist [Fri, 20 Oct 2017 20:52:52 +0000 (23:52 +0300)] 
Enable Intel AVX512_VNNI instructions.

Intel has disclosed a set of new instructions. The spec is
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

gas/

* config/tc-i386.c (cpu_arch): Add .avx512_vnni.
(cpu_noarch): Add noavx512_vnni.
* doc/c-i386.texi: Document .avx512_vnni.
* testsuite/gas/i386/i386.exp: Add AVX512_VNNI tests.
* testsuite/gas/i386/avx512vnni-intel.d: New test.
* testsuite/gas/i386/avx512vnni.d: Likewise.
* testsuite/gas/i386/avx512vnni.s: Likewise.
* testsuite/gas/i386/avx512vnni_vl-intel.d: Likewise.
* testsuite/gas/i386/avx512vnni_vl.d: Likewise.
* testsuite/gas/i386/avx512vnni_vl.s: Likewise.
* testsuite/gas/i386/x86-64-avx512vnni-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vnni.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vnni.s: Likewise.
* testsuite/gas/i386/x86-64-avx512vnni_vl-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vnni_vl.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vnni_vl.s: Likewise.

opcodes/

* i386-dis.c (enum): Add PREFIX_EVEX_0F3850, PREFIX_EVEX_0F3851.
* i386-dis-evex.h (evex_table): Updated.
* i386-gen.c (cpu_flag_init): Add CPU_AVX512_VNNI,
CPU_ANY_AVX512_VNNI_FLAGS. Update CPU_ANY_AVX512F_FLAGS.
(cpu_flags): Add CpuAVX512_VNNI.
* i386-opc.h (enum): Add CpuAVX512_VNNI.
(i386_cpu_flags): Add cpuavx512_vnni.
* i386-opc.tbl Add Intel AVX512_VNNI instructions.
* i386-init.h: Regenerate.
* i386-tbl.h: Likewise.

7 years agoEnable Intel VPCLMULQDQ instruction.
Igor Tsimbalist [Fri, 20 Oct 2017 20:42:40 +0000 (23:42 +0300)] 
Enable Intel VPCLMULQDQ instruction.

Intel has disclosed a set of new instructions. The spec is
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

gas/

* config/tc-i386.c (cpu_arch): Add VPCLMULQDQ.
* doc/c-i386.texi: Document VPCLMULQDQ.
* testsuite/gas/i386/i386.exp: Run VPCLMULQDQ tests.
* testsuite/gas/i386/avx512f_vpclmulqdq-intel.d: New test.
* testsuite/gas/i386/avx512f_vpclmulqdq-wig.s: Ditto.
* testsuite/gas/i386/avx512f_vpclmulqdq-wig1-intel.d: Ditto.
* testsuite/gas/i386/avx512f_vpclmulqdq-wig1.d: Ditto.
* testsuite/gas/i386/avx512f_vpclmulqdq.d: Ditto.
* testsuite/gas/i386/avx512f_vpclmulqdq.s: Ditto.
* testsuite/gas/i386/avx512vl_vpclmulqdq-intel.d: Ditto.
* testsuite/gas/i386/avx512vl_vpclmulqdq-wig.s: Ditto.
* testsuite/gas/i386/avx512vl_vpclmulqdq-wig1-intel.d: Ditto.
* testsuite/gas/i386/avx512vl_vpclmulqdq-wig1.d: Ditto.
* testsuite/gas/i386/avx512vl_vpclmulqdq.d: Ditto.
* testsuite/gas/i386/avx512vl_vpclmulqdq.s: Ditto.
* testsuite/gas/i386/vpclmulqdq-intel.d: Ditto.
* testsuite/gas/i386/vpclmulqdq.d: Ditto.
* testsuite/gas/i386/vpclmulqdq.s: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vpclmulqdq-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vpclmulqdq-wig.s: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vpclmulqdq-wig1-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vpclmulqdq-wig1.d: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vpclmulqdq.d: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vpclmulqdq.s: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vpclmulqdq-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vpclmulqdq-wig.s: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vpclmulqdq-wig1-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vpclmulqdq-wig1.d: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vpclmulqdq.d: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vpclmulqdq.s: Ditto.
* testsuite/gas/i386/x86-64-vpclmulqdq-intel.d: Ditto.
* testsuite/gas/i386/x86-64-vpclmulqdq.d: Ditto.
* testsuite/gas/i386/x86-64-vpclmulqdq.s: Ditto.

opcodes/

* i386-dis.c (enum): Add PREFIX_EVEX_0F3A44.
(enum): Remove VEX_LEN_0F3A44_P_2.
(vex_len_table): Ditto.
(enum): Remove VEX_W_0F3A44_P_2.
(vew_w_table): Ditto.
(prefix_table): Adjust instructions (see prefixes above).
* i386-dis-evex.h (evex_table):
Add new instructions (see prefixes above).
* i386-gen.c (cpu_flag_init): Add VPCLMULQDQ.
(bitfield_cpu_flags): Ditto.
* i386-opc.h (enum): Ditto.
(i386_cpu_flags): Ditto.
(CpuUnused): Comment out to avoid zero-width field problem.
* i386-opc.tbl (vpclmulqdq): New instruction.
* i386-init.h: Regenerate.
* i386-tbl.h: Ditto.

7 years agoEnable Intel VAES instructions.
Igor Tsimbalist [Fri, 20 Oct 2017 20:35:45 +0000 (23:35 +0300)] 
Enable Intel VAES instructions.

Intel has disclosed a set of new instructions. The spec is
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

gas/

* config/tc-i386.c (cpu_arch): Add VAES.
* doc/c-i386.texi: Document VAES.
* testsuite/gas/i386/i386.exp: Run VAES tests.
* testsuite/gas/i386/avx512f_vaes-intel.d: New test.
* testsuite/gas/i386/avx512f_vaes-wig.s: Ditto.
* testsuite/gas/i386/avx512f_vaes-wig1-intel.d: Ditto.
* testsuite/gas/i386/avx512f_vaes-wig1.d: Ditto.
* testsuite/gas/i386/avx512f_vaes.d: Ditto.
* testsuite/gas/i386/avx512f_vaes.s: Ditto.
* testsuite/gas/i386/avx512vl_vaes-intel.d: Ditto.
* testsuite/gas/i386/avx512vl_vaes-wig.s: Ditto.
* testsuite/gas/i386/avx512vl_vaes-wig1-intel.d: Ditto.
* testsuite/gas/i386/avx512vl_vaes-wig1.d: Ditto.
* testsuite/gas/i386/avx512vl_vaes.d: Ditto.
* testsuite/gas/i386/avx512vl_vaes.s: Ditto.
* testsuite/gas/i386/vaes-intel.d: Ditto.
* testsuite/gas/i386/vaes.d: Ditto.
* testsuite/gas/i386/vaes.s: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vaes-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vaes-wig.s: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vaes-wig1-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vaes-wig1.d: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vaes.d: Ditto.
* testsuite/gas/i386/x86-64-avx512f_vaes.s: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vaes-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vaes-wig.s: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vaes-wig1-intel.d: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vaes-wig1.d: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vaes.d: Ditto.
* testsuite/gas/i386/x86-64-avx512vl_vaes.s: Ditto.
* testsuite/gas/i386/x86-64-vaes-intel.d: Ditto.
* testsuite/gas/i386/x86-64-vaes.d: Ditto.
* testsuite/gas/i386/x86-64-vaes.s: Ditto.

opcodes/

* i386-dis.c (enum): Add PREFIX_EVEX_0F38DC, PREFIX_EVEX_0F38DD,
PREFIX_EVEX_0F38DE, PREFIX_EVEX_0F38DF.
(enum): Remove VEX_LEN_0F38DC_P_2, VEX_LEN_0F38DD_P_2,
VEX_LEN_0F38DE_P_2, VEX_LEN_0F38DF_P_2.
(vex_len_table): Ditto.
(enum): Remove VEX_W_0F38DC_P_2, VEX_W_0F38DD_P_2,
VEX_W_0F38DE_P_2, VEX_W_0F38DF_P_2.
(vew_w_table): Ditto.
(prefix_table): Adjust instructions (see prefixes above).
* i386-dis-evex.h (evex_table):
Add new instructions (see prefixes above).
* i386-gen.c (cpu_flag_init): Add VAES.
(bitfield_cpu_flags): Ditto.
* i386-opc.h (enum): Ditto.
(i386_cpu_flags): Ditto.
* i386-opc.tbl (vaes{enc,dec}{last,}): New instructions.
* i386-init.h: Regenerate.
* i386-tbl.h: Ditto.

7 years agoEnable Intel GFNI instructions.
Igor Tsimbalist [Fri, 20 Oct 2017 20:26:11 +0000 (23:26 +0300)] 
Enable Intel GFNI instructions.

Intel has disclosed a set of new instructions. The spec is
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

gas/

* config/tc-i386.c (cpu_arch): Add .gfni.
* doc/c-i386.texi: Document .gfni.
* testsuite/gas/i386/i386.exp: Add GFNI tests.
* testsuite/gas/i386/avx.s: New GFNI test.
* testsuite/gas/i386/x86-64-avx.s: Likewise.
* testsuite/gas/i386/avx.d: Adjust.
* testsuite/gas/i386/avx-intel.d: Likewise
* testsuite/gas/i386/ilp32/x86-64-avx-intel.d: Likewise.
* testsuite/gas/i386/ilp32/x86-64-avx.d: Likewise.
* testsuite/gas/i386/avx512f_gfni-intel.d: New test.
* testsuite/gas/i386/avx512f_gfni.d: Likewise.
* testsuite/gas/i386/avx512f_gfni.s: Likewise.
* testsuite/gas/i386/avx512vl_gfni-intel.d: Likewise.
* testsuite/gas/i386/avx512vl_gfni.d: Likewise.
* testsuite/gas/i386/avx512vl_gfni.s: Likewise.
* testsuite/gas/i386/gfni-intel.d: Likewise.
* testsuite/gas/i386/gfni.d: Likewise.
* testsuite/gas/i386/gfni.s: Likewise.
* testsuite/gas/i386/x86-64-avx512f_gfni-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx512f_gfni.d: Likewise.
* testsuite/gas/i386/x86-64-avx512f_gfni.s: Likewise.
* testsuite/gas/i386/x86-64-avx512vl_gfni-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vl_gfni.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vl_gfni.s: Likewise.
* testsuite/gas/i386/x86-64-avx_gfni-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx_gfni.d: Likewise.
* testsuite/gas/i386/x86-64-avx_gfni.s: Likewise.
* testsuite/gas/i386/x86-64-gfni-intel.d: Likewise.
* testsuite/gas/i386/x86-64-gfni.d: Likewise.
* testsuite/gas/i386/x86-64-gfni.s: Likewise.

opcodes/

* i386-dis.c (enum): Add PREFIX_0F38CF, PREFIX_0F3ACE, PREFIX_0F3ACF,
PREFIX_VEX_0F38CF, PREFIX_VEX_0F3ACE, PREFIX_VEX_0F3ACF,
PREFIX_EVEX_0F38CF, PREFIX_EVEX_0F3ACE, PREFIX_EVEX_0F3ACF.
(enum): Add VEX_W_0F38CF_P_2, VEX_W_0F3ACE_P_2, VEX_W_0F3ACF_P_2,
EVEX_W_0F3ACE_P_2, EVEX_W_0F3ACF_P_2.
(prefix_table): Updated (see prefixes above).
(three_byte_table): Likewise.
(vex_w_table): Likewise.
* i386-dis-evex.h: Likewise.
* i386-gen.c (cpu_flag_init): Add CPU_GFNI_FLAGS, CpuGFNI.
(cpu_flags): Add CpuGFNI.
* i386-opc.h (enum): Add CpuGFNI.
(i386_cpu_flags): Add cpugfni.
* i386-opc.tbl: Add Intel GFNI instructions.
* i386-init.h: Regenerate.
* i386-tbl.h: Likewise.

7 years agoEnable Intel AVX512_VBMI2 instructions.
Igor Tsimbalist [Fri, 20 Oct 2017 19:52:59 +0000 (22:52 +0300)] 
Enable Intel AVX512_VBMI2 instructions.

Intel has disclosed a set of new instructions. The spec is
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

gas/

* config/tc-i386.c (cpu_arch): Add .avx512_vbmi2.
(cpu_noarch): noavx512_vbmi2.
* doc/c-i386.texi: Document .avx512_vbmi2, noavx512_vbmi2.
* testsuite/gas/i386/i386.exp: Add AVX512_VBMI2 tests.
* testsuite/gas/i386/avx512vbmi2-intel.d: New test.
* testsuite/gas/i386/avx512vbmi2.d: Likewise.
* testsuite/gas/i386/avx512vbmi2.s: Likewise.
* testsuite/gas/i386/avx512vbmi2_vl-intel.d: Likewise.
* testsuite/gas/i386/avx512vbmi2_vl.d: Likewise.
* testsuite/gas/i386/avx512vbmi2_vl.s: Likewise.
* testsuite/gas/i386/x86-64-avx512vbmi2-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vbmi2.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vbmi2.s: Likewise.
* testsuite/gas/i386/x86-64-avx512vbmi2_vl-intel.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vbmi2_vl.d: Likewise.
* testsuite/gas/i386/x86-64-avx512vbmi2_vl.s: Likewise.

opcodes/

* i386-dis.c (enum): Add b_scalar_mode, w_scalar_mode.
Define EXbScalar and EXwScalar for OP_EX.
(enum): Add PREFIX_EVEX_0F3862, PREFIX_EVEX_0F3863,
PREFIX_EVEX_0F3870, PREFIX_EVEX_0F3871, PREFIX_EVEX_0F3872,
PREFIX_EVEX_0F3873, PREFIX_EVEX_0F3A70, PREFIX_EVEX_0F3A71,
PREFIX_EVEX_0F3A72, PREFIX_EVEX_0F3A73.
(enum): Add EVEX_W_0F3862_P_2, EVEX_W_0F3863_P_2,
EVEX_W_0F3870_P_2, EVEX_W_0F3871_P_2, EVEX_W_0F3872_P_2,
EVEX_W_0F3873_P_2, EVEX_W_0F3A70_P_2, EVEX_W_0F3A71_P_2,
EVEX_W_0F3A72_P_2, EVEX_W_0F3A73_P_2.
(intel_operand_size): Handle b_scalar_mode and w_scalar_mode.
(OP_E_memory): Likewise.
* i386-dis-evex.h: Updated.
* i386-gen.c (cpu_flag_init): Add CPU_AVX512_VBMI2,
CPU_ANY_AVX512_VBMI2_FLAGS. Update CPU_ANY_AVX512F_FLAGS.
(cpu_flags): Add CpuAVX512_VBMI2.
* i386-opc.h (enum): Add CpuAVX512_VBMI2.
(i386_cpu_flags): Add cpuavx512_vbmi2.
* i386-opc.tbl: Add Intel AVX512_VBMI2 instructions.
* i386-init.h: Regenerate.
* i386-tbl.h: Likewise.

7 years agoAutomatic date update in version.in
GDB Administrator [Mon, 23 Oct 2017 00:00:26 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoFix spurious left-over quotes from last edit.
Hans-Peter Nilsson [Sun, 22 Oct 2017 11:32:44 +0000 (13:32 +0200)] 
Fix spurious left-over quotes from last edit.

With a 32-bit bfd (default on an ILP32 system) the previous markings
on tests *were* correct.  There, the results have been consistent
since they were added.  The tests would appear to "spuriously" xpass
"only" on LP64 hosts, which were not the norm in 2000.  (But, now CRIS
requires a 64-bit BFD.)

7 years agoFix gas/22304 by forcing a 64-bit bfd for cris*-*.
Hans-Peter Nilsson [Sun, 22 Oct 2017 11:05:07 +0000 (13:05 +0200)] 
Fix gas/22304 by forcing a 64-bit bfd for cris*-*.

PR gas/22304
* config.bfd (cris-*-* | crisv32-*-*): Require a 64-bit BFD.

7 years agoAutomatic date update in version.in
GDB Administrator [Sun, 22 Oct 2017 00:00:28 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoPR ld/21233
Hans-Peter Nilsson [Sat, 21 Oct 2017 17:46:22 +0000 (19:46 +0200)] 
PR ld/21233

* testsuite/ld-elf/shared.exp: Remove kfails.

The test-cases started passing with 5c3261b0e834647c,
"ELF: Call check_relocs after opening all inputs".

The lists could now be re-concatenated (see other run_ld_link_tests
calls in shared.exp), but are for now left separate to simplify future
kfail/xfailing.

7 years agoAdd overloads of for_each_thread/find_thread that filter on pid
Simon Marchi [Sat, 21 Oct 2017 16:20:21 +0000 (12:20 -0400)] 
Add overloads of for_each_thread/find_thread that filter on pid

It happens often that we want to iterate or find threads restricted to a
given pid.  I think it's worth having an overload to help with this.
Right now there is a single user of each of the find_thread and
for_each_thread overload, but as we replace the usages of find_inferior
with for_each_thread/find_thread, more usages will pop up.

gdb/gdbserver/ChangeLog:

* gdbthread.h (find_thread, for_each_thread): New functions.
* inferiors.c (thread_of_pid): Remove.
(find_any_thread_of_pid): Use find_thread.
* linux-low.c (num_lwps): Use for_each_thread.

7 years agoGet rid of VEC (mem_region)
Simon Marchi [Sat, 21 Oct 2017 16:06:42 +0000 (12:06 -0400)] 
Get rid of VEC (mem_region)

This patch removes VEC (mem_region).  Doing so requires touching a lot
of little things here and there.

The fields in mem_attrib are now initialized during construction.  The
values match those that were in default_mem_attrib (now removed).
unknown_mem_attrib is also removed, and replaced with a static method
(mem_attrib::unknown) that returns the equivalent.

mem_region is initialized in a way similar to mem_region_init (now
removed) did.

I found the organization of mem_region_list and target_mem_region_list a
bit confusing.  Sometimes mem_region_list points to the same vector as
target_mem_region_list (and therefore does not own it), and sometimes
(when the user manually edits the mem regions) points to another vector,
and in this case owns it.  To avoid this ambiguity, I think it is
simpler to have two vectors, one for target-defined regions and one for
user-defined regions, and have mem_region_list point to one or the
other.  There are now no vector objects dynamically allocated, both are
static.

The make-target-delegates script does not generate valid code when a
target method returns a type with a parameter list.  For this reason, I
created a typedef (mem_region_vector) that's only used in the target_ops
structure.  If you speak perl, you are welcome to improve the script!

Regtested on the buildbot.

gdb/ChangeLog:

* memattr.h: Don't include vec.h.
(struct mem_attrib): Initialize fields.
<unknown>: New static method.
(struct mem_region): Add constructors, operator<, initialize
fields.
* memattr.c: Include algorithm.
(default_mem_attrib, unknown_mem_attrib): Remove.
(user_mem_region_list): New global.
(target_mem_region_list, mem_region_list): Change type to
std::vector<mem_region>.
(mem_use_target): Now a function.
(target_mem_regions_valid): Change type to bool.
(mem_region_lessthan, mem_region_cmp, mem_region_init): Remove.
(require_user_regions): Adjust.
(require_target_regions): Adjust.
(create_mem_region): Adjust.
(lookup_mem_region): Adjust.
(invalidate_target_mem_regions): Adjust.
(mem_clear): Rename to...
(user_mem_clear): ... this, and adjust.
(mem_command): Adjust.
(info_mem_command): Adjust.
(mem_enable, enable_mem_command, mem_disable,
disable_mem_command): Adjust.
(mem_delete): Adjust.
(delete_mem_command): Adjust.
* memory-map.h (parse_memory_map): Return an std::vector.
* memory-map.c (parse_memory_map): Likewise.
(struct memory_map_parsing_data): Add constructor.
<memory_map>: Point to std::vector.
(memory_map_start_memory): Adjust.
(memory_map_end_memory): Adjust.
(memory_map_end_property): Adjust.
(clear_result): Remove.
* remote.c (remote_memory_map): Return an std::vector.
* target-debug.h (target_debug_print_VEC_mem_region_s__p):
Remove.
(target_debug_print_mem_region_vector): New.
* target-delegates.c: Regenerate.
* target.h (mem_region_vector): New typedef.
(to_memory_map): Return mem_region_vector.
(target_memory_map): Return an std::vector.
* target.c (target_memory_map): Return an std::vector.
(flash_erase_command): Adjust.

7 years agoUse std::string in memory_map_parsing_data
Simon Marchi [Sat, 21 Oct 2017 16:06:22 +0000 (12:06 -0400)] 
Use std::string in memory_map_parsing_data

Replace the fixed-size array with a string.

gdb/ChangeLog:

* memory-map.c (struct memory_map_parsing_data) <property_name>:
Change type to std::string.
(memory_map_start_property): Adjust.
(memory_map_end_property): Adjust.

7 years agoCreate a displaced_step_closure class hierarchy
Simon Marchi [Sat, 21 Oct 2017 15:27:52 +0000 (11:27 -0400)] 
Create a displaced_step_closure class hierarchy

displaced_step_closure is a type defined in multiple -tdep.c files.
Trying to xfree it from the common code (infrun.c) is a problem when we
try to poison xfree for non-POD types.  Because there can be multiple of
these types in the same build, this patch makes a hierarchy of classes
with a virtual destructor.  When the common code deletes the object
through a displaced_step_closure pointer, it will invoke the right
destructor.

The amd64 used a last-member array with a variable size.  That doesn't
work with new, so I changed it for an std::vector.  Other architectures
which used a simple byte buffer as a closure now use a shared
buf_displaced_step_closure, a closure type that only contains a
gdb::byte_vector.

Reg-tested on the buildbot.

gdb/ChangeLog:

* infrun.h: Include common/byte-vector.h.
(struct displaced_step_closure): New struct.
(struct buf_displaced_step_closure): New struct.
* infrun.c (displaced_step_closure::~displaced_step_closure):
Provide default implementation.
(displaced_step_clear): Deallocate step closure with delete.
* aarch64-tdep.c (displaced_step_closure): Rename to ...
(aarch64_displaced_step_closure): ... this, extend
displaced_step_closure.
(aarch64_displaced_step_data) <dsc>: Change type to
aarch64_displaced_step_closure.
(aarch64_displaced_step_copy_insn): Adjust to type change, use
unique_ptr.
(aarch64_displaced_step_fixup): Add cast for displaced step
closure.
* amd64-tdep.c (displaced_step_closure): Rename to ...
(amd64_displaced_step_closure): ... this, extend
displaced_step_closure.
<insn_buf>: Change type to std::vector<gdb_byte>.
<max_len>: Remove.
(fixup_riprel): Change type of DSC parameter, adjust to type
change of insn_buf.
(fixup_displaced_copy): Change type of DSC parameter.
(amd64_displaced_step_copy_insn): Instantiate
amd64_displaced_step_closure.
(amd64_displaced_step_fixup): Add cast for closure type, adjust
to type change of insn_buf.
* arm-linux-tdep.c (arm_linux_cleanup_svc): Change type of
parameter DSC.
(arm_linux_copy_svc): Likewise.
(cleanup_kernel_helper_return): Likewise.
(arm_catch_kernel_helper_return): Likewise.
(arm_linux_displaced_step_copy_insn): Instantiate
arm_displaced_step_closure.
* arm-tdep.c (arm_pc_is_thumb): Add cast for closure.
(displaced_read_reg): Change type of parameter DSC.
(branch_write_pc): Likewise.
(load_write_pc): Likewise.
(alu_write_pc): Likewise.
(displaced_write_reg): Likewise.
(arm_copy_unmodified): Likewise.
(thumb_copy_unmodified_32bit): Likewise.
(thumb_copy_unmodified_16bit): Likewise.
(cleanup_preload): Likewise.
(install_preload): Likewise.
(arm_copy_preload): Likewise.
(thumb2_copy_preload): Likewise.
(install_preload_reg): Likewise.
(arm_copy_preload_reg): Likewise.
(cleanup_copro_load_store): Likewise.
(install_copro_load_store): Likewise.
(arm_copy_copro_load_store) Likewise.
(thumb2_copy_copro_load_store): Likewise.
(cleanup_branch): Likewise.
(install_b_bl_blx): Likewise.
(arm_copy_b_bl_blx): Likewise.
(thumb2_copy_b_bl_blx): Likewise.
(thumb_copy_b): Likewise.
(install_bx_blx_reg): Likewise.
(arm_copy_bx_blx_reg): Likewise.
(thumb_copy_bx_blx_reg): Likewise.
(cleanup_alu_imm): Likewise.
(arm_copy_alu_imm): Likewise.
(thumb2_copy_alu_imm): Likewise.
(cleanup_alu_reg): Likewise.
(install_alu_reg): Likewise.
(arm_copy_alu_reg): Likewise.
(thumb_copy_alu_reg): Likewise.
(cleanup_alu_shifted_reg): Likewise.
(install_alu_shifted_reg): Likewise.
(arm_copy_alu_shifted_reg): Likewise.
(cleanup_load): Likewise.
(cleanup_store): Likewise.
(arm_copy_extra_ld_st): Likewise.
(install_load_store): Likewise.
(thumb2_copy_load_literal): Likewise.
(thumb2_copy_load_reg_imm): Likewise.
(arm_copy_ldr_str_ldrb_strb): Likewise.
(cleanup_block_load_all): Likewise.
(cleanup_block_store_pc): Likewise.
(cleanup_block_load_pc): Likewise.
(arm_copy_block_xfer): Likewise.
(thumb2_copy_block_xfer): Likewise.
(cleanup_svc): Likewise.
(install_svc): Likewise.
(arm_copy_svc): Likewise.
(thumb_copy_svc): Likewise.
(arm_copy_undef): Likewise.
(thumb_32bit_copy_undef): Likewise.
(arm_copy_unpred): Likewise.
(arm_decode_misc_memhint_neon): Likewise.
(arm_decode_unconditional): Likewise.
(arm_decode_miscellaneous): Likewise.
(arm_decode_dp_misc): Likewise.
(arm_decode_ld_st_word_ubyte): Likewise.
(arm_decode_media): Likewise.
(arm_decode_b_bl_ldmstm): Likewise.
(arm_decode_ext_reg_ld_st): Likewise.
(thumb2_decode_dp_shift_reg): Likewise.
(thumb2_decode_ext_reg_ld_st): Likewise.
(arm_decode_svc_copro): Likewise.
(thumb2_decode_svc_copro): Likewise.
(install_pc_relative): Likewise.
(thumb_copy_pc_relative_16bit): Likewise.
(thumb_decode_pc_relative_16bit): Likewise.
(thumb_copy_pc_relative_32bit): Likewise.
(thumb_copy_16bit_ldr_literal): Likewise.
(thumb_copy_cbnz_cbz): Likewise.
(thumb2_copy_table_branch): Likewise.
(cleanup_pop_pc_16bit_all): Likewise.
(thumb_copy_pop_pc_16bit): Likewise.
(thumb_process_displaced_16bit_insn): Likewise.
(decode_thumb_32bit_ld_mem_hints): Likewise.
(thumb_process_displaced_32bit_insn): Likewise.
(thumb_process_displaced_insn): Likewise.
(arm_process_displaced_insn): Likewise.
(arm_displaced_init_closure): Likewise.
(arm_displaced_step_fixup): Add cast for closure.
* arm-tdep.h: Include infrun.h.
(displaced_step_closure): Rename to ...
(arm_displaced_step_closure): ... this, extend
displaced_step_closure.
<u::svc::copy_svc_os>: Change type of parameter DSC.
<cleanup>: Likewise.
(arm_process_displaced_insn): Likewise.
(arm_displaced_init_closure): Likewise.
(displaced_read_reg): Likewise.
(displaced_write_reg): Likewise.
* i386-linux-tdep.c (i386_linux_displaced_step_copy_insn):
Adjust.
* i386-tdep.h: Include infrun.h.
(i386_displaced_step_closure): New typedef.
* i386-tdep.c (i386_displaced_step_copy_insn): Use
i386_displaced_step_closure.
(i386_displaced_step_fixup): Adjust.
* rs6000-tdep.c (ppc_displaced_step_closure): New typedef.
(ppc_displaced_step_copy_insn): Use ppc_displaced_step_closure
and unique_ptr.
(ppc_displaced_step_fixup): Adjust.
* s390-linux-tdep.c (s390_displaced_step_closure): New typedef.
(s390_displaced_step_copy_insn): Use s390_displaced_step_closure
and unique_ptr.
(s390_displaced_step_fixup): Adjust.

7 years agoRemove leftover declarations in interps.h
Simon Marchi [Sat, 21 Oct 2017 14:15:48 +0000 (10:15 -0400)] 
Remove leftover declarations in interps.h

The corresponding definitions have already been removed.

gdb/ChangeLog:

* interps.h (interp_resume, interp_suspend, interp_set_temp):
Remove declarations.

7 years agoAutomatic date update in version.in
GDB Administrator [Sat, 21 Oct 2017 00:00:31 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoFix ChangeLog entry.
Sriraman Tallam [Fri, 20 Oct 2017 18:21:45 +0000 (11:21 -0700)] 
Fix ChangeLog entry.

7 years agoNew gold linker option -z,text-unlikely-segment.
Sriraman Tallam [Fri, 20 Oct 2017 18:00:28 +0000 (11:00 -0700)] 
New gold linker option -z,text-unlikely-segment.

2017-10-04  Sriraman Tallam  <tmsriram@google.com>

* options.h (-z,text_unlikely_segment): New option.
* layout.cc (Layout::layout): Create new output section
for .text.unlikely sections with the new option.
(Layout::segment_precedes): Check for the new option
when segment flags match.
* testsuite/text_unlikely_segment.cc: New test source.
* testsuite/text_unlikely_segment.sh: New test script.
* testsuite/Makefile.am (text_unlikely_segment): New test.
* testsuite/Makefile.in: Regenerate.

7 years agoAdd a compile-time test for PR ld/22269
H.J. Lu [Fri, 20 Oct 2017 16:47:08 +0000 (09:47 -0700)] 
Add a compile-time test for PR ld/22269

This compile-time test requires a target C compiler to run.  It fails
on many targets where ELF backend linkers fail to check undefined weak
symbol in static PIE via UNDEFWEAK_NO_DYNAMIC_RELOC.

PR ld/22269
* testsuite/ld-elf/pr22269-1.rd: New file.
* testsuite/ld-elf/pr22269-1.c: Likewise.
* testsuite/ld-elf/shared.exp: Run pr22269-1.

7 years agoUse std::vector in gdb_bfd_data
Tom Tromey [Sun, 15 Oct 2017 17:31:46 +0000 (11:31 -0600)] 
Use std::vector in gdb_bfd_data

This changes gdb_bfd_data to use std::vector rather than VEC.

ChangeLog
2017-10-20  Tom Tromey  <tom@tromey.com>

* gdb_bfd.c (struct gdb_bfd_data) <included_bfds>: Now a
std::vector.
(gdb_bfd_record_inclusion): Update.
(bfdp): Remove typedef.

7 years agoUse "new" to allocate gdb_bfd_data
Tom Tromey [Sun, 15 Oct 2017 17:23:22 +0000 (11:23 -0600)] 
Use "new" to allocate gdb_bfd_data

This changes gdb_bfd_data to be allocated with new and destroyed with
delete.

ChangeLog
2017-10-20  Tom Tromey  <tom@tromey.com>

* gdb_bfd.c (gdb_bfd_ref): Use new.
(struct gdb_bfd_data): Add constructor, destructor, and member
initializers.
(gdb_bfd_unref): Use delete.

7 years agoIntroduce new_bfd_ref
Tom Tromey [Sun, 15 Oct 2017 17:13:29 +0000 (11:13 -0600)] 
Introduce new_bfd_ref

This introduces a helper function, new_bfd_ref, that calls gdb_bfd_ref
and returns a gdb_bfd_ref_ptr.  Then it updates several places to use
this.

ChangeLog
2017-10-20  Tom Tromey  <tom@tromey.com>

* exec.c (exec_file_attach): Use new_bfd_ref.
* symfile-mem.c (symbol_file_add_from_memory): Use new_bfd_ref.
* gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
(gdb_bfd_openw, gdb_bfd_openr_iovec, gdb_bfd_fdopenr): Use
new_bfd_ref.
* gdb_bfd.h (new_bfd_ref): New function.

7 years agoFix 'gdb.base/quit.exp hangs forever' if the test fails
Pedro Alves [Fri, 20 Oct 2017 14:33:57 +0000 (15:33 +0100)] 
Fix 'gdb.base/quit.exp hangs forever' if the test fails

The [wait -i $gdb_spawn_id] in the test is dangerous in the sense that
it won't be subject to timeout logic.  So if GDB fails quiting, this
testcase hangs forever, hanging the test run with it.  See:
  https://sourceware.org/ml/gdb-patches/2016-10/msg00728.html

Instead of 'wait'ing directly, use gdb_test_multiple and expect 'eof'.

Tested that the testcase no longer hangs by hacking the test to send
"info threads" instead of "quit".

Tested with
  --target_board={unix, native-gdbserver,native-extended-gdbserver}
and tested with
  --host_board=local-remote-host
as well.

gdb/testsuite/ChangeLog:
2017-10-20  Pedro Alves  <palves@redhat.com>

* gdb.base/quit.exp: Use gdb_test_multiple and expect 'eof' before
'wait -i'.  Use gdb_assert and remote_close.

7 years agoFix gdb.gdb/ selftest tests when testing optimized GDB builds
Pedro Alves [Fri, 20 Oct 2017 13:47:24 +0000 (14:47 +0100)] 
Fix gdb.gdb/ selftest tests when testing optimized GDB builds

After commit bf4692711232 ("Eliminate catch_errors"), GCC started
inlining captured_command_loop in captured_main.  And setting a
breakpoint on captured_command_loop makes the inferior GDB stop in
captured_main, _after_ captured_command_loop's call to
interp_pre_command_loop, which prints the inferior GDB's prompt, has
already executed, confusing the gdb.gdb/ selftest tests:

  (gdb) FAIL: gdb.gdb/complaints.exp: run until breakpoint at captured_command_loop
  WARNING: Couldn't test self

Debugging GDB with GDB manually, we see:

  (top-gdb) b captured_command_loop
  Breakpoint 1 at 0x71ee60: file src/gdb/main.c, line 324.
  (top-gdb) r
  [....]
  (gdb)                  <<<<<< PROMPT HERE
  Thread 1 "gdb" hit Breakpoint 1, captured_main (data=<optimized out>) at src/gdb/main.c:1147
  1147              captured_command_loop ();
  (top-gdb)

Note the stop at 'captured_main', and the "PROMPT HERE" line.  That
prompt does not show up when debugging a non-optimized build of GDB.

Fix this by preventing inlining of captured_command_loop.

Ref: https://sourceware.org/ml/gdb-patches/2017-10/msg00522.html

gdb/ChangeLog:
2017-10-20  Pedro Alves  <palves@redhat.com>

* main.c (captured_command_loop): Add attribute noinline.

7 years agoImprove handling of REPT pseudo op with a negative count.
Nick Clifton [Fri, 20 Oct 2017 10:45:19 +0000 (11:45 +0100)] 
Improve handling of REPT pseudo op with a negative count.

PR 22324
* read.c (s_rept): Use size_t type for count parameter.
(do_repeat): Change type of count parameter to size_t.
Issue an error is the count parameter is negative.
(do_repeat_with_expression): Likewise.
* read.h: Update prototypes for do_repeat and
do_repeat_with_expression.
* doc/as.texinfo (Rept): Document that a zero count is allowed but
negative counts are not.
* config/tc-rx.c (rx_rept): Use size_t type for count parameter.
* config/tc-tic54x.c (tic54x_loop): Cast count parameter to size_t
type.
* testsuite/gas/macros/end.s: Add a test using a negative repeat
count.
* testsuite/gas/macros/end.l: Add expected error message.

7 years agoImplement BE8 support for ARM.
Umesh Kalappa [Fri, 20 Oct 2017 03:53:14 +0000 (20:53 -0700)] 
Implement BE8 support for ARM.

gold/
* arm.cc (Stub::do_fixed_endian_write):Far call stubs support for arm
in the be8 mode.
* testsuite/Makefile.am: New test cases.
* testsuite/Makefile.in: Regenerate.
* testsuite/arm_farcall_arm_arm_be8.sh: New script for arm to arm far
call stubs.
* testsuite/arm_farcall_thumb_thumb_be8.sh: New script for thumb to
thumb far call stubs.

7 years agoGet rid of VEC(interp_factory_p)
Simon Marchi [Fri, 20 Oct 2017 02:07:15 +0000 (22:07 -0400)] 
Get rid of VEC(interp_factory_p)

Replace it with an std::vector.

gdb/ChangeLog:

* interps.c (struct interp_factory): Add constructor.
(interp_factory_p): Remove typedef.
(DEF_VEC_P(interp_factory_p)): Remove.
(interpreter_factories): Change type to std::vector.
(interp_factory_register): Adjust.
(interp_lookup): Adjust.
(interpreter_completer): Adjust.

7 years agoAutomatic date update in version.in
GDB Administrator [Fri, 20 Oct 2017 00:00:28 +0000 (00:00 +0000)] 
Automatic date update in version.in

7 years agoRemove cleanups from break-catch-syscall.c
Tom Tromey [Mon, 16 Oct 2017 23:36:32 +0000 (17:36 -0600)] 
Remove cleanups from break-catch-syscall.c

This removes the remaining cleanups from break-catch-syscall.c by
storing temporary strings in a vector.

ChangeLog
2017-10-19  Tom Tromey  <tom@tromey.com>

* break-catch-syscall.c (catch_syscall_completer): Use
std::string, gdb::unique_xmalloc_ptr.

7 years agoRemove cleanup from call_function_by_hand_dummy
Tom Tromey [Mon, 16 Oct 2017 23:27:21 +0000 (17:27 -0600)] 
Remove cleanup from call_function_by_hand_dummy

This changes call_function_by_hand_dummy to use std::string, removing
a cleanup.

ChangeLog
2017-10-19  Tom Tromey  <tom@tromey.com>

* infcall.c (call_function_by_hand_dummy): Use std::string.

7 years agoRemove cleanups from prepare_execute_command
Tom Tromey [Mon, 16 Oct 2017 23:26:09 +0000 (17:26 -0600)] 
Remove cleanups from prepare_execute_command

This changes prepare_execute_command to return a scoped_value_mark
rather than a cleanup.

ChangeLog
2017-10-19  Tom Tromey  <tom@tromey.com>

* mi/mi-main.c (mi_cmd_execute): Update.
* top.h (prepare_execute_command): Return scoped_value_mark.
* value.h (class scoped_value_mark): Use DISABLE_COPY_AND_ASSIGN.
Add move constructor.
* top.c (prepare_execute_command): Return scoped_value_mark.
(execute_command): Update.

7 years agogdb: Remove hard-coded line number from test
Andrew Burgess [Fri, 13 Oct 2017 14:22:17 +0000 (15:22 +0100)] 
gdb: Remove hard-coded line number from test

Removes the use of a hard-coded line number from a test.

gdb/testsuite/ChangeLog:

* gdb.linespec/ls-errs.exp (do_test): Update comment, use line
number from variable rather than hard-coded.

7 years agoFix build breakage in gdb/xml-support.c
Pedro Alves [Thu, 19 Oct 2017 17:12:03 +0000 (18:12 +0100)] 
Fix build breakage in gdb/xml-support.c

The buildbots are showing that the previous change to
xml_fetch_content_from_file causes __wur warnings/errors:

  ../../binutils-gdb/gdb/xml-support.c: In function gdb::unique_xmalloc_ptr<char> xml_fetch_content_from_file(const char*, void*):
  ../../binutils-gdb/gdb/xml-support.c:1028:43: error: ignoring return value of size_t fread(void*, size_t, size_t, FILE*), declared with attribute warn_unused_result [-Werror=unused-result]
     fread (text.get (), 1, len, file.get ());
     ^

This commit fixes it.

gdb/ChangeLog:
2017-10-19  Pedro Alves  <palves@redhat.com>

* xml-support.c (xml_fetch_content_from_file): Check fread's
return.

7 years agoRISC-V: Relax RISCV_PCREL_* to RISCV_GPREL_*
Palmer Dabbelt [Fri, 19 May 2017 01:13:09 +0000 (18:13 -0700)] 
RISC-V: Relax RISCV_PCREL_* to RISCV_GPREL_*

In the medany code model the compiler generates PCREL_HI20+PCREL_LO12
relocation pairs against local symbols because HI20+LO12 relocations
can't reach high addresses.  We relax HI20+LO12 pairs to GPREL
relocations when possible, which is an important optimization for
Dhrystone.  Without this commit we are unable to relax
PCREL_HI20+PCREL_LO12 pairs to GPREL when possible, causing a 10%
permormance hit on Dhrystone on Rocket.

Note that we'll now relax

  la gp, __global_pointer$

to

  mv gp, gp

which probably isn't what you want in your entry code.  Users who want
gp-relative symbols to continue to resolve should add ".option norelax"
accordingly.  Due to this, the assembler now pairs PCREL relocations
with RELAX relocations when they're expected to be relaxed just like
every other relaxable relocation.

bfd/ChangeLog

2017-10-19  Palmer Dabbelt  <palmer@dabbelt.com>

        * elfnn-riscv.c (riscv_pcgp_hi_reloc): New structure.
        (riscv_pcgp_lo_reloc): Likewise.
        (riscv_pcgp_relocs): Likewise.
        (riscv_init_pcgp_relocs): New function.
        (riscv_free_pcgp_relocs): Likewise.
        (riscv_record_pcgp_hi_reloc): Likewise.
        (riscv_record_pcgp_lo_reloc): Likewise.
        (riscv_delete_pcgp_hi_reloc): Likewise.
        (riscv_use_pcgp_hi_reloc): Likewise.
        (riscv_record_pcgp_lo_reloc): Likewise.
        (riscv_find_pcgp_lo_reloc): Likewise.
        (riscv_delete_pcgp_lo_reloc): Likewise.
        (_bfd_riscv_relax_pc): Likewise.
        (_bfd_riscv_relax_section): Handle R_RISCV_PCREL_* relocations
        via the new functions above.

gas/ChangeLog

2017-10-19  Palmer Dabbelt  <palmer@dabbelt.com>

        * config/tc-riscv.c (md_apply_fix): Mark
        BFD_RELOC_RISCV_PCREL_HI20 as relaxable when relaxations are
        enabled.

7 years agoRISC-V: Add R_RISCV_DELETE, which marks bytes for deletion
Palmer Dabbelt [Fri, 19 May 2017 01:08:25 +0000 (18:08 -0700)] 
RISC-V: Add R_RISCV_DELETE, which marks bytes for deletion

We currently delete bytes by shifting an entire BFD backwards to
overwrite the bytes we no longer need.  The result is that relaxing a
BFD is quadratic time.

This patch adds an additional relocation that specifies a byte range
that will be deleted from the final object file, and adds a relaxation
pass (between the existing passes that delete bytes and the alignment
pass) that actually deletes the bytes.  Note that deletion is still
quadratic time, and nothing uses R_RISCV_DELETE yet.

I've been meaning to go convert all the other relaxations to use
R_RISCV_DELETE and then make it faster, but this patch has been sitting
around for months so it looks like that won't happen for a bit.  The
PCREL->GPREL relaxation that comes next uses this, and since we've been
using these two patches out of tree since I wrote them months ago I
figure it's better to just get them in now.  I (or someone else :)) can
convert all the relocations later...

R_RISCV_DELETE will never be emitted into ELF objects, so therefor isn't
exposed to the rest of binutils.  As such, we're not considering this as
part of the ABI.

bfd/ChangeLog

2017-10-19  Palmer Dabbelt  <palmer@dabbelt.com>

        * elfnn-riscv (R_RISCV_DELETE): New define.
        (_bfd_riscv_relax_delete): New function.
        (perform_relocation): Handle R_RISCV_DELETE.
        (_bfd_riscv_relax_section): Likewise.

ld/ChangeLog

2017-10-19  Palmer Dabbelt  <palmer@dabbelt.com>

        * emultempl/riscvelf.em (riscv_elf_before_allocation): Add a
        third relaxation pass.

7 years agoFix the AVR assembler so that it will correctly issue warnings about skipped instruct...
Nick Clifton [Thu, 19 Oct 2017 15:21:51 +0000 (16:21 +0100)] 
Fix the AVR assembler so that it will correctly issue warnings about skipped instructions even if subsections are used.

PR 21621
* config/tc-avr.h (struct avr_frag_data): Add prev_opcode field.
(TC_FRAG_INIT): Define.
(avr_frag_init): Add prototype.
* config/tc-avr.c (avr_frag_init): New function.
(avr_operands): Replace static local 'prev' variable with
prev_opcode field in current frag.
* testsuite/gas/avr/pr21621.s: New test source file.
* testsuite/gas/avr/pr21621.d: New test driver file.
* testsuite/gas/avr/pr21621.s: New test error output file.

7 years agoFix inferior deadlock with "target remote | CMD"
Pedro Alves [Thu, 19 Oct 2017 15:00:21 +0000 (16:00 +0100)] 
Fix inferior deadlock with "target remote | CMD"

Comparing test results between

  --target_board=native-gdbserver
  --target_board=native-stdio-gdbserver

I noticed that gdb.base/bigcore.exp is failing with native-stdio-gdbserver:

  Running src/gdb/testsuite/gdb.base/bigcore.exp ...
  FAIL: gdb.base/bigcore.exp: continue (timeout)
  ...

The problem is that:

  1. When debugging with "target remote | CMD", the inferior's
     stdout/stderr streams are connected to a pipe.

  2. The bigcore.c program prints a lot to the screen before it
     reaches the breakpoint location that the "continue" shown above
     wants to reach.

  3. GDB is not flushing the inferior's output pipe while the inferior
     is running.

  4. The pipe becomes full.

  5. The inferior thus deadlocks.

The bug is #3 above, which is what this commit fixes.  A new test is
added, that specifically exercises this scenario.  The test fails
before the fix, and passes after, and gdb.base/bigcore.exp also starts
passing.

gdb/ChangeLog:
2017-10-19  Pedro Alves  <palves@redhat.com>

* ser-base.c (ser_base_read_error_fd): Delete the file handler if
async.
(handle_error_fd): New function.
(ser_base_async): Add/delete an event loop file handler for
error_fd.

gdb/testsuite/ChangeLog:
2017-10-19  Pedro Alves  <palves@redhat.com>

* gdb.base/long-inferior-output.c: New file.
* gdb.base/long-inferior-output.exp: New file.

7 years agoxml_fetch_content_from_file: Read in whole file in one go
Pedro Alves [Thu, 19 Oct 2017 14:25:59 +0000 (15:25 +0100)] 
xml_fetch_content_from_file: Read in whole file in one go

There doesn't seem to be a good reason we're reading the file one
chunk at a time.

gdb/ChangeLog:
2017-10-19  Pedro Alves  <palves@redhat.com>

* xml-support.c (xml_fetch_content_from_file): Don't read in
chunks.  Instead use fseek to determine the file's size, and read
it in one go.

7 years agotilegx: Check bfd_link_executable for TLS check
H.J. Lu [Thu, 19 Oct 2017 12:22:23 +0000 (05:22 -0700)] 
tilegx: Check bfd_link_executable for TLS check

Copied from x86, check bfd_link_executable, instead of bfd_link_pic,
for TLS transition check.  Not sure if it works correctly.  All usages
of bfd_link_pic should be audited.

PR ld/22263
* elfxx-tilegx.c (tilegx_elf_tls_transition): Replace
bfd_link_pic with !bfd_link_executable, !bfd_link_pic with
bfd_link_executable for TLS check.
(tilegx_elf_check_relocs): Likewise.
(allocate_dynrelocs): Likewise.
(tilegx_elf_relocate_section): Likewise.

7 years agotilepro: Check bfd_link_executable for TLS check
H.J. Lu [Thu, 19 Oct 2017 12:20:44 +0000 (05:20 -0700)] 
tilepro: Check bfd_link_executable for TLS check

Copied from x86, check bfd_link_executable, instead of bfd_link_pic,
for TLS transition check.  Not sure if it works correctly.  All usages
of bfd_link_pic should be audited.

PR ld/22263
* elf32-tilepro.c (tilepro_elf_tls_transition): Replace
bfd_link_pic with !bfd_link_executable, !bfd_link_pic with
bfd_link_executable for TLS check.
(tilepro_elf_check_relocs): Likewise.
(allocate_dynrelocs): Likewise.
(tilepro_elf_relocate_section): Likewise.

7 years agosparc: Check bfd_link_executable for TLS check
H.J. Lu [Thu, 19 Oct 2017 12:18:07 +0000 (05:18 -0700)] 
sparc: Check bfd_link_executable for TLS check

Copied from x86, check bfd_link_executable, instead of bfd_link_pic,
for TLS transition check.  Not sure if it works correctly.  All usages
of bfd_link_pic should be audited.

PR ld/22263
* elfxx-sparc.c (sparc_elf_tls_transition): Replace
bfd_link_pic with !bfd_link_executable, !bfd_link_pic with
bfd_link_executable for TLS check.
(_bfd_sparc_elf_check_relocs): Likewise.
(allocate_dynrelocs): Likewise.
(_bfd_sparc_elf_relocate_section): Likewise.

7 years agoFix fill-1 testcase
Andreas Krebbel [Thu, 19 Oct 2017 07:02:15 +0000 (09:02 +0200)] 
Fix fill-1 testcase

This fixes various issues with the fill-1 testcase causing fails on a
couple of targets.

gas/ChangeLog:

2017-10-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* testsuite/gas/all/fill-1.s: Use normal labels.  Change .text to
.data. Pick different values.  Use .dc.w instead of .word.
* testsuite/gas/all/fill-1.d: New objdump output check.
* testsuite/gas/all/gas.exp: Use run_dump_test to execute fill-1
testcase.

7 years agoAutomatic date update in version.in
GDB Administrator [Thu, 19 Oct 2017 00:00:32 +0000 (00:00 +0000)] 
Automatic date update in version.in

This page took 0.058745 seconds and 4 git commands to generate.