From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 68207 invoked by alias); 7 May 2017 20:21:48 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 68184 invoked by uid 9674); 7 May 2017 20:21:48 -0000 Date: Sun, 07 May 2017 20:21:00 -0000 Message-ID: <20170507202147.68102.qmail@sourceware.org> From: jkratoch@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] users/jkratoch/indexcxx: Merge remote-tracking branch 'gdb/master' into indexcxx X-Git-Refname: refs/heads/users/jkratoch/indexcxx X-Git-Reftype: branch X-Git-Oldrev: 98bebcd98b51d05daf04b0d5c4d7f6e112597c57 X-Git-Newrev: bdbdd8567e59bc6d54749dbfcc001502fffe18a9 X-SW-Source: 2017-q2/txt/msg00018.txt.bz2 List-Id: The branch, users/jkratoch/indexcxx has been updated via bdbdd8567e59bc6d54749dbfcc001502fffe18a9 (commit) via 618a737b59008a0153f6454ae9a6d42814384828 (commit) via e50f25ecdb24505bccb695e6c63add45f0032b9a (commit) via 21ea5acdd1bcfe89984b16b5bac730050c5cf05e (commit) via 7b937cba77df45962ced7e0e03802561beab549f (commit) via 7ed1acafa0b5d135342f9dcc0eb0387dff95005a (commit) via e13cb306f099a8cd450c9fba0dfa22521aaa3c95 (commit) via 323449189c3474d1ab352b49172f4f59670ea73e (commit) via d512d31c395e3c45f83778e01b9824efe45cac5f (commit) via 5ed8105e02d0c6648b7faea9f4e941237b932717 (commit) via f6223dbb50b5d8780df633633adf0742c662173d (commit) via 3c3ae77e68a9032ef9f174bf6b1cc992b6a4cb35 (commit) via f91d48deb29d9e6f4b530f586db0140943ed0d83 (commit) via 45eba0ab7d26435121facb68847fbd0cd4a313c1 (commit) via b660e9eb7a45cfe99e719c5d16af35913a2fdc96 (commit) via 8293e73636484b403150ae94a93619779bcbae96 (commit) via 8507b6e79772ffeb83a0142d12a63e02dcc44562 (commit) via 90cef2edd256c48d2ff9a03d4a6c1bcb575db07c (commit) via b22908217d8593185af3f76fab6f0f01457b0600 (commit) via f81fdd350e688bd0216486b30884a52ebc4f32b8 (commit) via 35837774a77d641ba3ae75930a7b08ed853759ad (commit) via c94fee56f5f8e5e26a115a1ca155ddada9d43b31 (commit) via e78bb25cb636a331f27e9cc4cba5522939567695 (commit) via 35387fdec5e10b281c218c9dc4f3dc33c3fcc522 (commit) via 82d808edbc7a06f706b82064cec6c3ed88f0c4be (commit) via 3d8505928a06e00b05bb162c1ad0dd612c1c16af (commit) via 43e379d74c994fe431368b5f25f778bf601a2981 (commit) via 763a5fa4f330d6d3859c94a69ba1fcab09330cf9 (commit) via 640226f048b67d79da85742728e40114c9ee5da0 (commit) via 2ecf0cc317d065cfeb960c61688897351521bce0 (commit) via d17f7b365cf3896b3129b9077d55b3154fc43131 (commit) via b560ebd6605503276e09b2ef75c94e1d10f176f2 (commit) via f2f46dfcdafe6bd32152d80b5e832d2fab4e6900 (commit) via a0ff9e1ad221c11f58a9d8d12a84c21579132d85 (commit) via ea480a306d46efe3dd1839618137f0e73a80e9b3 (commit) via 1395c6ce47510babad3dcb9892f6f2517a3f2b59 (commit) via 73ec947d59c511411377ad51ef792a5fcdd3f0cc (commit) via a4ddc54ec1cd187c844ca631fe0315bf1d78e96f (commit) via 39ff1b79f687b65f4144ddb379f22587003443fb (commit) via d050f7d7f474c7e3ba26902a9cbb185910921a11 (commit) via 14f819c8c5f7d080e5eea9256f0ec7453aac750e (commit) via 0ed5da759e34c6e85cb2a9ea0fdc7b680f897a81 (commit) via 913aeadd9d6b8bdea5131b16dc7ede395097656d (commit) via a3be24ad59d683d1b08df28e093739743a7cf256 (commit) via ae20e79ae852fee8f7d42701a54a95de3b79ecea (commit) via 8d0050ea192c41349c1f2b000866c1bdb761abeb (commit) via fe50e98c9a22a89ca2e032b17aa7162452c3ad3b (commit) via 122a483d4f19c8b0a7f3d265dad882bd4f2c868a (commit) via 0aae7e72a2a11ef1fd2a3b4fd18c8d8d49e0c21b (commit) via 3f380b502769e55bbcdf7b9587c62344913c6ee8 (commit) via ee7e95efb98186c09dc2c39b32263aa15b147bb0 (commit) via 6224c858130fe5c5e5d8b2abdec1cea35986d9e7 (commit) via 020bf56c8e55bfbe5a53989eac0c72b8d2416feb (commit) from 98bebcd98b51d05daf04b0d5c4d7f6e112597c57 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit bdbdd8567e59bc6d54749dbfcc001502fffe18a9 Merge: 98bebcd 618a737 Author: Jan Kratochvil Date: Sun May 7 22:09:54 2017 +0200 Merge remote-tracking branch 'gdb/master' into indexcxx commit 618a737b59008a0153f6454ae9a6d42814384828 Author: GDB Administrator Date: Sun May 7 00:00:54 2017 +0000 Automatic date update in version.in commit e50f25ecdb24505bccb695e6c63add45f0032b9a Author: Sergio Durigan Junior Date: Tue May 2 21:32:33 2017 -0400 Rearrange gdb/configure.nat to make it simpler and less redundant The previous commit introduced gdb/configure.nat, but it was just a copy-and-past (with the necessary adjustments) from the files under gdb/config/. We can do better than that. Instead of using one big 'case' statement that matches the ${gdb_host_cpu} and then match each ${gdb_host}, it is possible to remove a lof of redundancy by matching the most common ${gdb_host}'s first, setting the common variables for each, and then proceed to matching specific ${gdb_host}'s and ${gdb_host_cpu}'s. In other words, reverse the order of the 'case's and take advantage of the fact that a lot of parameters are the same for each host. This commit was tested on x86_64 without regressions. gdb/ChangeLog: 2017-05-06 Sergio Durigan Junior * configure.nat: Rearrange 'case' statements to match host before cpu. commit 21ea5acdd1bcfe89984b16b5bac730050c5cf05e Author: Sergio Durigan Junior Date: Tue Apr 25 16:03:39 2017 -0400 Introduce "gdb/configure.nat" (and delete "gdb/config/*/*.mh" files) Due to my ongoing work to make it possible for gdbserver to start the inferior using the shell, I had to share the fork_inferior function under the "nat/" directory. In order to do that, I created a new file and put the function there; however, this meant that I now had to update some of the *.mh files (under "gdb/config") and add the new file as a dependency to be built natively. Bleh... After talking a bit to Pedro about this, the idea came up to write a new "gdb/configure.nat" file, a la "gdb/configure.tgt", which would concentrate all of the native settings for each host/system. I decided to tackle this issue. The patch is simple. All of the previous Makefile variables that were being declared inside the *.mh files are now inside "gdb/Makefile.in", and "gdb/configure" is responsible for AC_SUBST'ing them. The definitions of these variables were put inside "gdb/configure.nat", so now they're shell variables. For excerpts of Makefile code, one must create a file under "gdb/config/${gdb_cpu_host}" and reference it on the "nat_extra_makefile_frag" variable. It should now be easier to update the native dependencies of hosts in this single file. This has been tested on x86_64 without regressions. gdb/ChangeLog: 2017-05-06 Sergio Durigan Junior * Makefile.in: Remove "@host_makefile_frag@". Add variables NAT_FILE, NATDEPFILES, NAT_CDEPS, LOADLIBES, MH_CFLAGS, XM_CLIBS, NAT_GENERATED_FILES, HAVE_NATIVE_GCORE_HOST. Add "@nat_extra_makefile_frag@". (Makefile): Remove dependency on "@frags@". ($(GNULIB_BUILDDIR)/Makefile): Likewise. (data-directory/Makefile): Likewise. * config/aarch64/linux.mh: Deleted; moved contents to "gdb/configure.nat". * config/alpha/alpha-linux.mh: Likewise. * config/alpha/nbsd.mh: Likewise. * config/arm/linux.mh: Likewise. * config/arm/nbsdelf.mh: Likewise. * config/i386/cygwin.mh: Likewise. * config/i386/cygwin64.mh: Likewise. * config/i386/darwin.mh: Likewise. * config/i386/fbsd.mh: Likewise. * config/i386/fbsd64.mh: Likewise. * config/i386/go32.mh: Likewise. * config/i386/i386gnu.mh: Likewise. * config/i386/i386sol2.mh: Likewise. * config/i386/linux.mh: Likewise. * config/i386/linux64.mh: Likewise. * config/i386/mingw.mh: Likewise. * config/i386/mingw64.mh: Likewise. * config/i386/nbsd64.mh: Likewise. * config/i386/nbsdelf.mh: Likewise. * config/i386/nto.mh: Likewise. * config/i386/obsd.mh: Likewise. * config/i386/obsd64.mh: Likewise. * config/i386/sol2-64.mh: Likewise. * config/ia64/linux.mh: Likewise. * config/m32r/linux.mh: Likewise. * config/m68k/linux.mh: Likewise. * config/m68k/nbsdelf.mh: Likewise. * config/m68k/obsd.mh: Likewise. * config/m88k/obsd.mh: Likewise. * config/mips/fbsd.mh: Likewise. * config/mips/linux.mh: Likewise. * config/mips/nbsd.mh: Likewise. * config/mips/obsd64.mh: Likewise. * config/pa/linux.mh: Likewise. * config/pa/nbsd.mh: Likewise. * config/pa/obsd.mh: Likewise. * config/powerpc/aix.mh: Likewise. * config/powerpc/fbsd.mh: Likewise. * config/powerpc/linux.mh: Likewise. * config/powerpc/nbsd.mh: Likewise. * config/powerpc/obsd.mh: Likewise. * config/powerpc/ppc64-linux.mh: Likewise. * config/powerpc/spu-linux.mh: Likewise. * config/s390/linux.mh: Likewise. * config/sh/nbsd.mh: Likewise. * config/sparc/fbsd.mh: Likewise. * config/sparc/linux.mh: Likewise. * config/sparc/linux64.mh: Likewise. * config/sparc/nbsd64.mh: Likewise. * config/sparc/nbsdelf.mh: Likewise. * config/sparc/obsd64.mh: Likewise. * config/sparc/sol2.mh: Likewise. * config/tilegx/linux.mh: Likewise. * config/vax/nbsdelf.mh: Likewise. * config/vax/obsd.mh: Likewise. * config/xtensa/linux.mh: Likewise. * config/i386/i386gnu.mn: New file, with excerpts from "config/i386/i386gnu.mh". * configure: Regenerate. * configure.ac: Rewrite code to use "gdb/configure.nat" instead of *.mh files under "gdb/config". * configure.nat: New file, with contents from the "gdb/config/*/*.mh" files. gdb/doc/ChangeLog: 2017-05-06 Sergio Durigan Junior * Makefile: Remove "@host_makefile_frag@". commit 7b937cba77df45962ced7e0e03802561beab549f Author: GDB Administrator Date: Sat May 6 00:00:53 2017 +0000 Automatic date update in version.in commit 7ed1acafa0b5d135342f9dcc0eb0387dff95005a Author: Tim Wiederhake Date: Fri May 5 08:20:50 2017 +0200 btrace: Fix memory leak in btrace_clear. commit e13cb306f099a8cd450c9fba0dfa22521aaa3c95 Author: Pedro Alves Date: Fri May 5 01:03:28 2017 +0100 gdb: Disable -Werror for -Wmaybe-uninitialized Newer GCCs are triggering false-positive -Wmaybe-uninitialized warnings around code that uses gdb::optional: https://sourceware.org/ml/gdb-patches/2017-05/msg00118.html Using std::optional wouldn't help, it triggers the same warnings: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80635 Initializing the variables to quiet the warning would defeat the purpose of gdb::optional. Making the optional ctor memset its storage would be a pessimization. Wrapping gdb::optional's internals with "#pragma GCC diagnostic push/ignored/pop" doesn't work, we'd have to wrap uses of gdb::optional instead, which I think would get unwieldy and ugly as we start using gdb::optional more and more. The -Wmaybe-uninitialized warning is documented as producing false positives (unlike -Wuninialized), so until we find a better workaround, disable -Werror for this warning. You'll still see the warning when building gdb, but it won't cause a build failure. Tested by building with gcc 4.8.5, 5.3.1, and gcc trunk (20170428). gdb/ChangeLog: 2017-05-05 Pedro Alves * warning.m4 (build_warnings): Add -Wno-error=maybe-uninitialized. * configure: Regenerate. gdb/gdbserver/ChangeLog: 2017-05-05 Pedro Alves * configure: Regenerate. commit 323449189c3474d1ab352b49172f4f59670ea73e Author: GDB Administrator Date: Fri May 5 00:00:37 2017 +0000 Automatic date update in version.in commit d512d31c395e3c45f83778e01b9824efe45cac5f Author: Pedro Alves Date: Thu May 4 16:02:36 2017 +0100 Fix gdb.python/py-record-btrace-threads.exp with Python 3 Fix several instances of: ... python print not f1calls File "", line 1 print not f1calls ^ SyntaxError: Missing parentheses in call to 'print' Error while executing Python code. (gdb) FAIL: gdb.python/py-record-btrace-threads.exp: thread=1: checking thread 1: python print not f1calls ... gdb/testsuite/ChangeLog: 2017-05-04 Pedro Alves * gdb.python/py-record-btrace-threads.exp (check_insn_for_thread): Add parens to print call for Python 3. commit 5ed8105e02d0c6648b7faea9f4e941237b932717 Author: Pedro Alves Date: Thu May 4 12:46:44 2017 +0100 RAII-fy make_cleanup_restore_current_thread & friends After all the make_cleanup_restore_current_thread fixing, I thought I'd convert that and its relatives (which are all cleanups) to RAII classes. scoped_restore_current_pspace_and_thread was put in a separate file to avoid a circular dependency. Tested on x86-64 Fedora 23, native and gdbserver. gdb/ChangeLog: 2017-05-04 Pedro Alves * Makefile.in (SFILES): Add progspace-and-thread.c. (HFILES_NO_SRCDIR): Add progspace-and-thread.h. (COMMON_OBS): Add progspace-and-thread.o. * breakpoint.c: Include "progspace-and-thread.h". (update_inserted_breakpoint_locations) (insert_breakpoint_locations, create_longjmp_master_breakpoint): Use scoped_restore_current_pspace_and_thread. (create_std_terminate_master_breakpoint): Use scoped_restore_current_program_space. (remove_breakpoint): Use scoped_restore_current_pspace_and_thread. (print_breakpoint_location): Use scoped_restore_current_program_space. (bp_loc_is_permanent): Use scoped_restore_current_pspace_and_thread. (resolve_sal_pc): Use scoped_restore_current_pspace_and_thread. (download_tracepoint_locations): Use scoped_restore_current_pspace_and_thread. (breakpoint_re_set): Use scoped_restore_current_pspace_and_thread. * exec.c (exec_close_1): Use scoped_restore_current_program_space. (enum step_over_calls_kind): Moved from inferior.h. (class scoped_restore_current_thread): New class. * gdbthread.h (make_cleanup_restore_current_thread): Delete declaration. (scoped_restore_current_thread): New class. * infcmd.c: Include "common/gdb_optional.h". (continue_1, proceed_after_attach): Use scoped_restore_current_thread. (notice_new_inferior): Use scoped_restore_current_thread. * inferior.c: Include "progspace-and-thread.h". (restore_inferior, save_current_inferior): Delete. (add_inferior_command, clone_inferior_command): Use scoped_restore_current_pspace_and_thread. * inferior.h (scoped_restore_current_inferior): New class. * infrun.c: Include "progspace-and-thread.h" and "common/gdb_optional.h". (follow_fork_inferior): Use scoped_restore_current_pspace_and_thread. (scoped_restore_exited_inferior): New class. (handle_vfork_child_exec_or_exit): Use scoped_restore_exited_inferior, scoped_restore_current_pspace_and_thread, scoped_restore_current_thread and scoped_restore. (fetch_inferior_event): Use scoped_restore_current_thread. * linespec.c (decode_line_full, decode_line_1): Use scoped_restore_current_program_space. * mi/mi-main.c: Include "progspace-and-thread.h". (exec_continue): Use scoped_restore_current_thread. (mi_cmd_exec_run): Use scoped_restore_current_pspace_and_thread. (mi_cmd_trace_frame_collected): Use scoped_restore_current_thread. * proc-service.c (ps_pglobal_lookup): Use scoped_restore_current_program_space. * progspace-and-thread.c: New file. * progspace-and-thread.h: New file. * progspace.c (release_program_space, clone_program_space): Use scoped_restore_current_program_space. (restore_program_space, save_current_program_space) (save_current_space_and_thread): Delete. (switch_to_program_space_and_thread): Moved to progspace-and-thread.c. * progspace.h (save_current_program_space) (save_current_space_and_thread): Delete declarations. (scoped_restore_current_program_space): New class. * remote.c (remote_btrace_maybe_reopen): Use scoped_restore_current_thread. * symtab.c: Include "progspace-and-thread.h". (skip_prologue_sal): Use scoped_restore_current_pspace_and_thread. * thread.c (print_thread_info_1): Use scoped_restore_current_thread. (struct current_thread_cleanup): Delete. (do_restore_current_thread_cleanup) (restore_current_thread_cleanup_dtor): Rename/convert both to ... (scoped_restore_current_thread::~scoped_restore_current_thread): ... this new dtor. (make_cleanup_restore_current_thread): Rename/convert to ... (scoped_restore_current_thread::scoped_restore_current_thread): ... this new ctor. (thread_apply_all_command): Use scoped_restore_current_thread. (thread_apply_command): Use scoped_restore_current_thread. * tracepoint.c (tdump_command): Use scoped_restore_current_thread. * varobj.c (value_of_root_1): Use scoped_restore_current_thread. commit f6223dbb50b5d8780df633633adf0742c662173d Author: Pedro Alves Date: Thu May 4 14:43:34 2017 +0100 make_cleanup_restore_current_thread: Look up thread earlier The unconditional is_stopped call already asserts that the thread exists. gdb/ChangeLog: 2017-05-04 Pedro Alves * thread.c (make_cleanup_restore_current_thread): Move find_thread_ptid call before the is_stopped call. Assert that the thread is found. Replace is_stopped call by checking the thread's state directly. Remove unnecessary NULL-thread check. commit 3c3ae77e68a9032ef9f174bf6b1cc992b6a4cb35 Author: Pedro Alves Date: Thu May 4 15:14:37 2017 +0100 Fix get_core_register_section leak, introduce thread_section_name This plugs a leak introduced in the previous change to get_core_register_section, which removed an xfree call that is actually necessary because the 'section_name' local is static. From [1] it looks like the reason the variable was made static to begin with, was just "laziness" to avoid having to think about freeing it on every function return path: https://sourceware.org/ml/gdb-patches/2005-03/msg00237.html The easiest to fix that nowadays is to use a std::string. I don't see a need to xstrdup the section name in the single-threaded case though, and also there's more than one place that computes a multi-threaded section name in the same way. So put the section name computation in a wrapper class with state. gdb/ChangeLog: 2017-05-04 Pedro Alves * corelow.c (thread_section_name): New class. (get_core_register_section, get_core_siginfo): Use it. commit f91d48deb29d9e6f4b530f586db0140943ed0d83 Author: Kito Cheng Date: Wed Apr 5 20:58:28 2017 +0800 RISC-V: Fix disassemble for c.li, c.andi and c.addiw ChangeLog 2017-05-03 Kito Cheng * riscv-dis.c (print_insn_args): Handle 'Co' operands. commit 45eba0ab7d26435121facb68847fbd0cd4a313c1 Author: Andreas Arnez Date: Thu May 4 11:06:10 2017 +0200 Remove some superfluous code in corelow.c In corelow.c I stumbled upon an extra semicolon and an xfree of a NULL pointer. Remove them. gdb/ChangeLog: * corelow.c (sniff_core_bfd): Remove extra semicolon. (get_core_register_section): Remove xfree of NULL pointer. commit b660e9eb7a45cfe99e719c5d16af35913a2fdc96 Author: Senthil Kumar Selvaraj Date: Mon Apr 24 15:17:14 2017 +0530 Fix PR21404 - assertion fail when calculating symbol size Fix a host of problems related to adjustment of symbol values and sizes when relaxing for avr. 1. Adjust symbol size first before adjusting symbol value. Otherwise, a symbol whose value just got adjusted to the relaxed address also ends up getting resized. See pr21404-1.s. 2. Reduce symbol sizes only if their span is below an alignment boundary. Otherwise, the size gets decremented once when the actual instruction is relaxed and padding bytes are added, and again when the padding bytes are deleted (if padding ends up being unnecessary). pr21404-2.s addresses that, and this bug is really the root cause of PR21404. 3. Adjust all symbol values before an alignment boundary. Previous code did not adjust symbol values if they fell in the would-be padded area, resulting in incorrect symbol values in some cases (see pr21404-3.s). 4. Increase symbol sizes if alignment directives require so. As pr21404-4.s shows .global nonzero_sym L1: jmp L1 nonzero_sym: nop nop .p2align 2 .size nonzero_sym, .-nonzero_sym The two nops satisfy the 4 byte alignment at assembly time and therefore the size of nonzero_sym is 4. Relaxation shortens the 4 byte jmp to a 2 byte rjmp, and to satisfy 4 byte alignment the code places 2 extra padding bytes after the nops, increasing nonzero_sym's size by 2. This wasn't handled before. If the assembly code does not have any align directives, then the boundary is the section size, and symbol values and sizes == boundary should also get adjusted. To handle that case, add a did_pad variable and use that to determine whether it should use < boundary or <= boundary. Also get rid of reloc_toaddr, which is now redundant. toaddr is now not adjusted to handle the above case - the newly added did_pad variable does the job. pr21404-{5,6,7,8} are the same testcases written for local symbols, as the code handles them slightly differently. commit 8293e73636484b403150ae94a93619779bcbae96 Author: GDB Administrator Date: Thu May 4 00:00:55 2017 +0000 Automatic date update in version.in commit 8507b6e79772ffeb83a0142d12a63e02dcc44562 Author: Maciej W. Rozycki Date: Wed May 3 20:43:10 2017 +0100 MIPS16/GAS: Relax 32-bit non-PIC PC-relative synthetic instructions Implement the relaxation of MIPS16 PC-relative synthetic LA, DLA, LW and LD instructions to an equivalent sequence of instructions produced where the address operand requested is out of range, absolute or requires linker relocation, for ABIs that use 32-bit addressing and non-PIC code. The sequence generated uses the register specified for the destination operand as a temporary and begins with LI to load the high 16-bit part of the address, then continues with SLL by 16 bits to move that part into place and finally completes with a suitable operation corresponding to the synthetic instruction used, one of: 2-argument ADDIU, 2-argument DADDIU, absolute LW, and absolute LD respectively, providing the low 16-bit part of the address. All instructions use the extended encoding. As a special exception accept absolute addresses for relaxation even in PIC code. For example: la $2, 0x12345678 produces code as: li $2, 0x1234 sll $2, $2, 16 addiu $2, 0x5678 would. Where linker relocation is required emit an R_MIPS16_HI16 relocation on the initial LI instruction and an R_MIPS16_LO16 relocation on the final operation. For example (where `foo' is not local): lw $3, foo produces code as: li $3, %hi(foo) sll $3, $3, 16 lw $3, %lo(foo)($3) would. Emit assembly warnings as appropriate where this new relaxation triggers in the `nomacro' mode or for an instruction manually placed in a branch delay slot in the `noreorder' mode. Refrain from relaxation where an explicit instruction size suffix has been used and in the `noautoextend' mode. gas/ * config/tc-mips.c (RELAX_MIPS16_ENCODE): Add `pic', `sym32' and `nomacro' flags. (RELAX_MIPS16_PIC, RELAX_MIPS16_SYM32, RELAX_MIPS16_NOMACRO): New macros. (RELAX_MIPS16_USER_SMALL, RELAX_MIPS16_USER_EXT) (RELAX_MIPS16_DSLOT, RELAX_MIPS16_JAL_DSLOT) (RELAX_MIPS16_EXTENDED, RELAX_MIPS16_MARK_EXTENDED) (RELAX_MIPS16_CLEAR_EXTENDED, RELAX_MIPS16_ALWAYS_EXTENDED) (RELAX_MIPS16_MARK_ALWAYS_EXTENDED) (RELAX_MIPS16_CLEAR_ALWAYS_EXTENDED): Shift bits. (RELAX_MIPS16_MACRO, RELAX_MIPS16_MARK_MACRO) (RELAX_MIPS16_CLEAR_MACRO): New macros. (append_insn): Pass `mips_pic', HAVE_32BIT_SYMBOLS and `mips_opts.warn_about_macros' settings to RELAX_MIPS16_ENCODE. (mips16_macro_frag): New function. (md_estimate_size_before_relax): Handle HI16/LO16 relaxation. (mips_relax_frag): Likewise. (md_convert_frag): Likewise. * testsuite/gas/mips/mips16@relax-swap3.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16e@relax-swap3.d: New test subarchitecture. * testsuite/gas/mips/micromips@relax-swap3.d: Remove trailing NOP padding. * testsuite/gas/mips/mips16-pcrel-reloc-2.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16-pcrel-reloc-3.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16-pcrel-reloc-6.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16-pcrel-reloc-7.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16-pcrel-addend-2.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16-pcrel-addend-3.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16-pcrel-absolute.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16-pcrel-absolute-1.d: Remove error output, add dump patterns. * testsuite/gas/mips/mips16@relax-swap3.l: Remove file. * testsuite/gas/mips/mips16-pcrel-reloc-2.l: Remove file. * testsuite/gas/mips/mips16-pcrel-reloc-3.l: Remove file. * testsuite/gas/mips/mips16-pcrel-reloc-6.l: Remove file. * testsuite/gas/mips/mips16-pcrel-reloc-7.l: Remove file. * testsuite/gas/mips/mips16-pcrel-addend-2.l: Remove file. * testsuite/gas/mips/mips16-pcrel-addend-3.l: Remove file. * testsuite/gas/mips/mips16-pcrel-absolute.l: Remove file. * testsuite/gas/mips/mips16-pcrel-absolute-1.l: Remove file. * testsuite/gas/mips/relax-swap3.s: Adjust trailing padding. * testsuite/gas/mips/mips16-pcrel-0.d: New test. * testsuite/gas/mips/mips16-pcrel-1.d: New test. * testsuite/gas/mips/mips16-pcrel-2.d: New test. * testsuite/gas/mips/mips16-pcrel-3.d: New test. * testsuite/gas/mips/mips16-pcrel-4.d: New test. * testsuite/gas/mips/mips16-pcrel-5.d: New test. * testsuite/gas/mips/mips16-pcrel-pic-0.d: New test. * testsuite/gas/mips/mips16-pcrel-pic-1.d: New test. * testsuite/gas/mips/mips16-pcrel-n32-0.d: New test. * testsuite/gas/mips/mips16-pcrel-n32-1.d: New test. * testsuite/gas/mips/mips16-pcrel-n64-sym32-0.d: New test. * testsuite/gas/mips/mips16-pcrel-n64-sym32-1.d: New test. * testsuite/gas/mips/mips16-pcrel-n64-0.d: New test. * testsuite/gas/mips/mips16-pcrel-n64-1.d: New test. * testsuite/gas/mips/mips16-pcrel-delay-0.d: New test. * testsuite/gas/mips/mips16-pcrel-delay-1.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-4.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-5.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-6.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-7.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-8.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-9.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-pic-8.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-pic-9.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-n32-8.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-n32-9.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-n64-sym32-8.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-n64-sym32-9.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-n64-8.d: New test. * testsuite/gas/mips/mips16-pcrel-addend-n64-9.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-2.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-3.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-4.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-5.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-6.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-7.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-pic-4.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-pic-6.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-n32-4.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-n32-6.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-n64-4.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-n64-6.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-n64-sym32-4.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-n64-sym32-6.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-pic-n32-4.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-pic-n32-6.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-pic-n64-4.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-pic-n64-6.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-pic-n64-sym32-4.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-pic-n64-sym32-6.d: New test. * testsuite/gas/mips/mips16-pcrel-0.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-1.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-2.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-3.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-4.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-5.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-delay-0.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-delay-1.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-addend-8.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-addend-9.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-absolute-4.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-absolute-6.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-0.s: New test source. * testsuite/gas/mips/mips16-pcrel-1.s: New test source. * testsuite/gas/mips/mips16-pcrel-2.s: New test source. * testsuite/gas/mips/mips16-pcrel-3.s: New test source. * testsuite/gas/mips/mips16-pcrel-4.s: New test source. * testsuite/gas/mips/mips16-pcrel-5.s: New test source. * testsuite/gas/mips/mips16-pcrel-delay-0.s: New test source. * testsuite/gas/mips/mips16-pcrel-delay-1.s: New test source. * testsuite/gas/mips/mips16-pcrel-addend-4.s: New test source. * testsuite/gas/mips/mips16-pcrel-addend-5.s: New test source. * testsuite/gas/mips/mips16-pcrel-addend-6.s: New test source. * testsuite/gas/mips/mips16-pcrel-addend-7.s: New test source. * testsuite/gas/mips/mips16-pcrel-addend-8.s: New test source. * testsuite/gas/mips/mips16-pcrel-addend-9.s: New test source. * testsuite/gas/mips/mips16-pcrel-absolute-2.s: New test. * testsuite/gas/mips/mips16-pcrel-absolute-3.s: New test. * testsuite/gas/mips/mips16-pcrel-absolute-4.s: New test. * testsuite/gas/mips/mips16-pcrel-absolute-5.s: New test. * testsuite/gas/mips/mips16-pcrel-absolute-6.s: New test. * testsuite/gas/mips/mips16-pcrel-absolute-7.s: New test. * testsuite/gas/mips/mips.exp: Run the new tests. ld/ * testsuite/ld-mips-elf/mips16-pcrel-0.d: New test. * testsuite/ld-mips-elf/mips16-pcrel-1.d: New test. * testsuite/ld-mips-elf/mips16-pcrel-addend-2.d: New test. * testsuite/ld-mips-elf/mips16-pcrel-addend-6.d: New test. * testsuite/ld-mips-elf/mips16-pcrel-n32-0.d: New test. * testsuite/ld-mips-elf/mips16-pcrel-n32-1.d: New test. * testsuite/ld-mips-elf/mips16-pcrel-n64-sym32-0.d: New test. * testsuite/ld-mips-elf/mips16-pcrel-n64-sym32-1.d: New test. * testsuite/ld-mips-elf/mips-elf.exp: Run the new tests. commit 90cef2edd256c48d2ff9a03d4a6c1bcb575db07c Author: Keith Seitz Date: Wed May 3 12:41:09 2017 -0700 Make sure malloc is linked into gdb.cp/oranking.cc. On some platforms, e.g., arm-eabi-none, we need to make certain that malloc is linked into the program because the test suite uses function calls requiring malloc: (gdb) p foo101("abc") evaluation of this expression requires the program to have a function "malloc". gdb/testsuite/ChangeLog * gdb.cp/oranking.cc (dummy): New function to grab malloc. (main): Call it. commit b22908217d8593185af3f76fab6f0f01457b0600 Author: H.J. Lu Date: Wed May 3 07:40:51 2017 -0700 Adjust testsuite/ld-elf/pr21384.d Adjust testsuite/ld-elf/pr21384.d to accommodate additional dynamic symbols on some targets. * testsuite/ld-elf/pr21384.d: Adjusted to accommodate additional dynamic symbols on some targets. commit f81fdd350e688bd0216486b30884a52ebc4f32b8 Author: Alan Hayward Date: Wed May 3 14:51:40 2017 +0100 Remove MAX_REGISTER_SIZE from frv-linux-tdep.c gdb/ * frv-linux-tdep.c (frv_linux_supply_gregset): Use raw_supply_zeroed. * regcache.c (regcache::raw_supply_zeroed): New function. * regcache.h (regcache::raw_supply_zeroed): New declaration. commit 35837774a77d641ba3ae75930a7b08ed853759ad Author: Simon Marchi Date: Wed May 3 09:21:27 2017 -0400 gdbarch.sh: Remove commented out TARGET_CHAR_BIT definition As Pedro commented on the patch "Change field separator in gdbarch.sh", this commented out definition is probably not useful and should be removed. It has been commented out for basically forever, and it probably serves the same intent as addressable_memory_unit_size. gdb/ChangeLog: * gdbarch.sh: Remove commented out definition of TARGET_CHAR_BIT. * gdbarch.h: Re-generate. commit c94fee56f5f8e5e26a115a1ca155ddada9d43b31 Author: Sergio Durigan Junior Date: Wed May 3 09:13:15 2017 -0400 Regenerate gdb/{,gdbserver/}configure (for commit be628ab814f1c90e185d7482d27aa8a991ab5837) On commit be628ab814f1c90e185d7482d27aa8a991ab5837, both common/common.m4 was modified in order to check for the presence of 'termios.h', 'termio.h' and 'sgtty.h'. However, I forgot to regenerate both gdb/configure and gdb/gdbserver/configure. This commit does that. gdb/ChangeLog: 2017-05-03 Sergio Durigan Junior * configure: Regenerate. gdb/gdbserver/ChangeLog: 2017-05-03 Sergio Durigan Junior * configure: Regenerate. commit e78bb25cb636a331f27e9cc4cba5522939567695 Author: Nick Clifton Date: Wed May 3 09:52:01 2017 +0100 Prevent a seg-fault in the assembler when provided with a bogus input source file. PR gas/20941 * symbols.c (snapshot_symbol): Handle the case where resolve_expression returns a local symbol. commit 35387fdec5e10b281c218c9dc4f3dc33c3fcc522 Author: GDB Administrator Date: Wed May 3 00:00:41 2017 +0000 Automatic date update in version.in commit 82d808edbc7a06f706b82064cec6c3ed88f0c4be Author: Maciej W. Rozycki Date: Wed May 3 00:05:15 2017 +0100 MIPS16/GAS: Fix absolute references with PC-relative synthetic instructions Complement commit 88a7ef168927 ("MIPS16/GAS: Restore unsupported relocation diagnostics") and also propagate constant expressions, either already reduced from absolute symbol references or created from literals in the first place, used as a PC-relative operand with the MIPS16 LA, LW, DLA and LD synthetic instructions to relaxation, matching the way forward absolute symbol references have been handled as from the commit referred and letting relaxation produce any necessary relocations, if possible, for the absolute value requested to be reproduced at the run time. Call `symbol_append' for any expression symbol created for the purpose of MIPS16 relaxation as with constant expressions now propagated from earlier on such symbols may make it through and have R_MIPS16_PC16_S1 relocations emitted against, and therefore need to appear in the symbol table produced. gas/ * config/tc-mips.c (append_insn): Call `symbol_append' for any expression symbol created for MIPS16 relaxation. (match_mips16_insn): Don't encode a constant value as an immediate with a PC-relative operand. * testsuite/gas/mips/mips16-pcrel-absolute-1.d: New test. * testsuite/gas/mips/mips16-branch-absolute-1.d: New test. * testsuite/gas/mips/mips16-branch-absolute-2.d: New test. * testsuite/gas/mips/mips16-branch-absolute-addend-1.d: New test. * testsuite/gas/mips/mips16-branch-absolute-n32-1.d: New test. * testsuite/gas/mips/mips16-branch-absolute-n32-2.d: New test. * testsuite/gas/mips/mips16-branch-absolute-addend-n32-1.d: New test. * testsuite/gas/mips/mips16-branch-absolute-n64-1.d: New test. * testsuite/gas/mips/mips16-branch-absolute-n64-2.d: New test. * testsuite/gas/mips/mips16-branch-absolute-addend-n64-1.d: New test. * testsuite/gas/mips/mips16-pcrel-absolute-1.l: New stderr output. * testsuite/gas/mips/mips16-pcrel-absolute-1.s: New test source. * testsuite/gas/mips/mips16-branch-absolute-1.s: New test source. * testsuite/gas/mips/mips16-branch-absolute-2.s: New test source. * testsuite/gas/mips/mips16-branch-absolute-addend-1.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests. ld/ * testsuite/ld-mips-elf/mips16-branch-absolute-1.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-2.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-addend-1.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-n32-1.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-n32-2.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-addend-n32-1.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-n64-1.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-n64-2.d: New test. * testsuite/ld-mips-elf/mips16-branch-absolute-addend-n64-1.d: New test. * testsuite/ld-mips-elf/mips-elf.exp: Run the new tests. commit 3d8505928a06e00b05bb162c1ad0dd612c1c16af Author: H.J. Lu Date: Tue May 2 16:00:49 2017 -0700 x86: Add -Wl,--no-as-needed to some TLS tests * testsuite/ld-i386/tls.exp: Add -Wl,--no-as-needed to "TLS without PLT (1)" and "TLS without PLT (3)". * testsuite/ld-x86-64/tls.exp: Add -Wl,--no-as-needed to to "TLS without PLT (3)". commit 43e379d74c994fe431368b5f25f778bf601a2981 Author: Michael Clark Date: Thu Apr 27 16:08:46 2017 +1200 RISC-V: Change CALL macro to use ra as the temporary address register e.g. 1: auipc ra, %pcrel_hi(symbol) jalr ra, %pcrel_lo(1b)(ra) The use of ra instead of t1 for address construction provides an opportunity for a microarchitecture to elide the write of the destination address, and instead read the target address as an immediate spread across the fused auipc+jalr pair. The link register ra in the jalr overwrites the target address temporary. 2017-05-01 Michael Clark * riscv-opc.c (riscv_opcodes) : Use RA not T1 as a temporary register. commit 763a5fa4f330d6d3859c94a69ba1fcab09330cf9 Author: Palmer Dabbelt Date: Mon May 1 10:26:32 2017 -0700 RISC-V: Allow 32-bit BFD to handle 64-bit objects We've been telling people that the riscv32-* and riscv64-* toolchains are exactly the same, but it turns out we were lying: the riscv32-* BFD doesn't handle 64-bit objects. This fixes that difference, so the ports are actually the same. bfd/ChangeLog 2017-05-01 Palmer Dabbelt * config.bfd (riscv32-*): Enable rv64. commit 640226f048b67d79da85742728e40114c9ee5da0 Author: H.J. Lu Date: Tue May 2 13:54:22 2017 -0700 Add a test for PR ld/21384 PR ld/21384 * testsuite/ld-elf/pr21384.d: New file. * testsuite/ld-elf/pr21384.dl: Likewise. * testsuite/ld-elf/pr21384.ld: Likewise. * testsuite/ld-elf/pr21384.s: Likewise. commit 2ecf0cc317d065cfeb960c61688897351521bce0 Author: H.J. Lu Date: Tue May 2 12:16:26 2017 -0700 Cast relcount to unsigned long when comparing with sec->reloc_count The type of relcount is long and the type of sec->reloc_count is unsigned int. On 32-bit hosts, GCC issues an error: objcopy.c:2144:20: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if (relcount > sec->reloc_count) Cast relcount to unsigned long to silence GCC. * objcopy.c (merge_gnu_build_notes): Cast relcount to unsigned long when comparing with sec->reloc_count. commit d17f7b365cf3896b3129b9077d55b3154fc43131 Author: Simon Marchi Date: Tue May 2 14:25:43 2017 -0400 solib-target: Remove local variables Now that we use std::vector, these local variables are not very useful. They're not much shorter than the expressions they stand for. gdb/ChangeLog: * solib-target.c (solib_target_relocate_section_addresses): Remove num_section_bases, num_bases, segment_bases variables. commit b560ebd6605503276e09b2ef75c94e1d10f176f2 Author: Simon Marchi Date: Tue May 2 13:30:09 2017 -0400 Remove definition of VEC (CORE_ADDR) gdb/ChangeLog: * common/gdb_vecs.h (DEF_VEC_I (CORE_ADDR)): Remove. commit f2f46dfcdafe6bd32152d80b5e832d2fab4e6900 Author: Simon Marchi Date: Tue May 2 13:30:08 2017 -0400 Use std::vector in lm_info_target Replace the two VEC fields with std::vector. gdb/ChangeLog: * solib-target.c: Include (struct lm_info_target) <~lm_info_target>: Remove. : Change type to std::vector. (library_list_start_segment, library_list_start_section, library_list_end_library, solib_target_relocate_section_addresses): Adjust. commit a0ff9e1ad221c11f58a9d8d12a84c21579132d85 Author: Simon Marchi Date: Tue May 2 13:30:07 2017 -0400 Change return type of gdbarch_software_single_step to vector This is a relatively straightforward patch that changes gdbarch_software_single_step so it returns an std::vector instead of a VEC (CORE_ADDR). gdb/ChangeLog: * gdbarch.sh (software_single_step): Change return type to std::vector. * gdbarch.c, gdbarch.h: Re-generate. * arch/arm-get-next-pcs.c (thumb_deal_with_atomic_sequence_raw): Adjust. (arm_deal_with_atomic_sequence_raw): Adjust. (thumb_get_next_pcs_raw): Adjust. (arm_get_next_pcs_raw): Adjust. (arm_get_next_pcs): Adjust. * arch/arm-get-next-pcs.h (arm_get_next_pcs): Adjust. * aarch64-tdep.c (aarch64_software_single_step): Adjust. * alpha-tdep.c (alpha_deal_with_atomic_sequence): Adjust. (alpha_software_single_step): Adjust. * alpha-tdep.h (alpha_software_single_step): Adjust. * arm-linux-tdep.c (arm_linux_software_single_step): Adjust. * arm-tdep.c (arm_software_single_step): Adjust. (arm_breakpoint_kind_from_current_state): Adjust. * arm-tdep.h (arm_software_single_step): Adjust. * breakpoint.c (insert_single_step_breakpoint): Adjust. * cris-tdep.c (cris_software_single_step): Adjust. * mips-tdep.c (mips_deal_with_atomic_sequence): Adjust. (micromips_deal_with_atomic_sequence): Adjust. (deal_with_atomic_sequence): Adjust. (mips_software_single_step): Adjust. * mips-tdep.h (mips_software_single_step): Adjust. * moxie-tdep.c (moxie_software_single_step): Adjust. * nios2-tdep.c (nios2_software_single_step): Adjust. * ppc-tdep.h (ppc_deal_with_atomic_sequence): Adjust. * rs6000-aix-tdep.c (rs6000_software_single_step): Adjust. * rs6000-tdep.c (ppc_deal_with_atomic_sequence): Adjust. * s390-linux-tdep.c (s390_software_single_step): Adjust. * sparc-tdep.c (sparc_software_single_step): Adjust. * spu-tdep.c (spu_software_single_step): Adjust. * tic6x-tdep.c (tic6x_software_single_step): Adjust. gdb/gdbserver/ChangeLog: * linux-arm-low.c (arm_gdbserver_get_next_pcs): Adjust to software_single_step change of return type to std::vector. * linux-low.c (install_software_single_step_breakpoints): Likewise. * linux-low.h (install_software_single_step_breakpoints): Likewise. commit ea480a306d46efe3dd1839618137f0e73a80e9b3 Author: Simon Marchi Date: Tue May 2 13:30:07 2017 -0400 Change field separator in gdbarch.sh The fields in the description of the gdbarch interface are separated using colons. That becomes a problem if we want to use things like std::vector in it. This patch changes the field separator to use semicolons instead. I think there's very little chance we'll ever want to use a semicolon in one of the fields, but if you think another character would be more appropriate, let me know. gdb/ChangeLog: * gdbarch.sh: Use semi-colon as field separator instead of colon. * gdbarch.h: Re-generate. commit 1395c6ce47510babad3dcb9892f6f2517a3f2b59 Author: Nick Clifton Date: Tue May 2 16:54:53 2017 +0100 Don't merge notes when the relocs associated with them cannot be reliably deleted. * objcopy.c (merge_gnu_build_notes): Disable merge if there are more internal relocs than external relocs. commit 73ec947d59c511411377ad51ef792a5fcdd3f0cc Author: Alan Modra Date: Tue May 2 21:56:43 2017 +0930 PR 21384, --dynamic-list regression with f02cb058 The commit to "Always descend into output section statements in lang_do_assignments" meant that linker script symbols were not bfd_link_hash_new when ld called bfd_elf_record_link_assignment. This patch corrects that problem by testing h->non_elf instead. PR 21384 * elflink.c (bfd_elf_link_mark_dynamic_symbol): Test h->non_elf rather than h->root.type == bfd_link_hash_new. (bfd_elf_record_link_assignment): Similarly, call bfd_elf_link_mark_dynamic_symbol when h->non_elf. commit a4ddc54ec1cd187c844ca631fe0315bf1d78e96f Author: Maciej W. Rozycki Date: Tue May 2 11:53:30 2017 +0100 MIPS16/opcodes: Keep the LSB of PC-relative offsets in disassembly Correct the disassembly of the PC-relative immediate argument of the MIPS16 synthetic LA, LW, DLA and LD instructions and do not mask the LSB, which in this case is a part of the data address rather than the ISA bit and has to be fully presented. opcodes/ * mips-dis.c (print_insn_arg): Only clear the ISA bit for jumps and branches and not synthetic data instructions. binutils/ * testsuite/binutils-all/mips/mips16-undecoded.d: Adjust the disassembly of PC-relative LA and LW synthetic instructions. commit 39ff1b79f687b65f4144ddb379f22587003443fb Author: Nick Clifton Date: Tue May 2 11:54:53 2017 +0100 Prevent memory exhaustion from a corrupt PE binary with an overlarge number of relocs. PR 21440 * objdump.c (dump_relocs_in_section): Check for an excessive number of relocs before attempting to dump them. commit d050f7d7f474c7e3ba26902a9cbb185910921a11 Author: Tim Wiederhake Date: Tue May 2 11:35:54 2017 +0200 Python: Introduce gdb.Instruction class This adds a generic instruction class to Python and has gdb.RecordInstruction inherit from it. commit 14f819c8c5f7d080e5eea9256f0ec7453aac750e Author: Tim Wiederhake Date: Tue May 2 11:35:54 2017 +0200 Python: Move and rename gdb.BtraceFunction Remove gdb.BtraceFunctionCall and replace by gdb.FunctionSegment. Additionally, rename prev_segment and next_segment to prev and next. commit 0ed5da759e34c6e85cb2a9ea0fdc7b680f897a81 Author: Tim Wiederhake Date: Tue May 2 11:35:54 2017 +0200 Python: Move and rename gdb.BtraceInstruction Remove gdb.BtraceInstruction and replace by gdb.RecordInstruction. commit 913aeadd9d6b8bdea5131b16dc7ede395097656d Author: Tim Wiederhake Date: Tue May 2 11:35:54 2017 +0200 Python: Introduce gdb.RecordGap class As discussed here: https://sourceware.org/ml/gdb-patches/2017-04/msg00157.html A gap is not an instruction and it should not pretend to be one. gdb.Record.instruction_history is now a list of gdb.RecordInstruction and gdb.RecordGap objects. This allows the user to deal with Gaps in the record in a more sane way. commit a3be24ad59d683d1b08df28e093739743a7cf256 Author: Tim Wiederhake Date: Tue May 2 11:35:54 2017 +0200 Python: Remove ptid from gdb.Record interface As discussed here: https://sourceware.org/ml/gdb-patches/2017-04/msg00166.html commit ae20e79ae852fee8f7d42701a54a95de3b79ecea Author: Tim Wiederhake Date: Tue May 2 11:35:54 2017 +0200 Python: Use correct ptid in btrace recording The user would always get the instruction_history and function_call_history objects of the current thread, not the thread for which the gdb.Record object was created. The attached testcase fails without this patch and passes with the patch. commit 8d0050ea192c41349c1f2b000866c1bdb761abeb Author: Tim Wiederhake Date: Tue May 2 11:35:54 2017 +0200 Python: Fix indentation in py-record-btrace.c commit fe50e98c9a22a89ca2e032b17aa7162452c3ad3b Author: Bernd Edlinger Date: Tue May 2 10:28:09 2017 +0100 Fix value in comment of disassembled ARM type A opcodes. * arm-dis.c (print_insn_thumb32): Fix value_in_comment. commit 122a483d4f19c8b0a7f3d265dad882bd4f2c868a Author: GDB Administrator Date: Tue May 2 00:00:39 2017 +0000 Automatic date update in version.in commit 0aae7e72a2a11ef1fd2a3b4fd18c8d8d49e0c21b Author: H.J. Lu Date: Mon May 1 11:02:55 2017 -0700 x86: Run GNU2 TLS tests with working GNU2 TLS support Check if GNU2 TLS really works before running GNU2 TLS tests. * testsuite/ld-i386/tls.exp: Run GNU2 TLS tests only if there is working GNU2 TLS support. * testsuite/ld-x86-64/tls.exp: Likewise. * testsuite/lib/ld-lib.exp (check_gnu2_tls_available): New proc. commit 3f380b502769e55bbcdf7b9587c62344913c6ee8 Author: Joel Brobecker Date: Mon May 1 09:59:15 2017 -0700 gdb/MAINTAINERS: Move Daniel J and Mark to the Past Maintainers section. gdb/ChangeLog: * MAINTAINERS: Move Daniel Jacobowitz and Mark Kettenis to the past maintainers section. commit ee7e95efb98186c09dc2c39b32263aa15b147bb0 Author: Alan Modra Date: Mon May 1 14:11:27 2017 +0930 merge_gnu_build_notes reloc deletion If moving relocs, the next reloc to look at is at the same location. * objcopy.c (merge_gnu_build_notes): Correct code deleting relocs. commit 6224c858130fe5c5e5d8b2abdec1cea35986d9e7 Author: GDB Administrator Date: Mon May 1 00:00:35 2017 +0000 Automatic date update in version.in commit 020bf56c8e55bfbe5a53989eac0c72b8d2416feb Author: GDB Administrator Date: Sun Apr 30 00:00:31 2017 +0000 Automatic date update in version.in ----------------------------------------------------------------------- Summary of changes: bfd/ChangeLog | 21 + bfd/config.bfd | 3 +- bfd/elf32-avr.c | 91 ++- bfd/elflink.c | 12 +- bfd/version.h | 2 +- binutils/ChangeLog | 26 + binutils/objcopy.c | 20 +- binutils/objdump.c | 8 + .../testsuite/binutils-all/mips/mips16-undecoded.d | 20 +- gas/ChangeLog | 185 ++++++ gas/config/tc-mips.c | 319 +++++++++--- gas/symbols.c | 20 +- gas/testsuite/gas/mips/micromips@relax-swap3.d | 1 - gas/testsuite/gas/mips/mips.exp | 66 +++ gas/testsuite/gas/mips/mips16-branch-absolute-1.d | 20 + gas/testsuite/gas/mips/mips16-branch-absolute-1.s | 22 + gas/testsuite/gas/mips/mips16-branch-absolute-2.d | 4 + gas/testsuite/gas/mips/mips16-branch-absolute-2.s | 20 + .../gas/mips/mips16-branch-absolute-addend-1.d | 4 + .../gas/mips/mips16-branch-absolute-addend-1.s | 22 + .../gas/mips/mips16-branch-absolute-addend-n32-1.d | 5 + .../gas/mips/mips16-branch-absolute-addend-n64-1.d | 5 + .../gas/mips/mips16-branch-absolute-n32-1.d | 5 + .../gas/mips/mips16-branch-absolute-n32-2.d | 5 + .../gas/mips/mips16-branch-absolute-n64-1.d | 5 + .../gas/mips/mips16-branch-absolute-n64-2.d | 5 + gas/testsuite/gas/mips/mips16-pcrel-0.d | 47 ++ gas/testsuite/gas/mips/mips16-pcrel-0.l | 5 + gas/testsuite/gas/mips/mips16-pcrel-0.s | 39 ++ gas/testsuite/gas/mips/mips16-pcrel-1.d | 47 ++ gas/testsuite/gas/mips/mips16-pcrel-1.l | 5 + gas/testsuite/gas/mips/mips16-pcrel-1.s | 39 ++ gas/testsuite/gas/mips/mips16-pcrel-2.d | 5 + gas/testsuite/gas/mips/mips16-pcrel-2.l | 5 + gas/testsuite/gas/mips/mips16-pcrel-2.s | 43 ++ gas/testsuite/gas/mips/mips16-pcrel-3.d | 3 + gas/testsuite/gas/mips/mips16-pcrel-3.l | 7 + gas/testsuite/gas/mips/mips16-pcrel-3.s | 29 + gas/testsuite/gas/mips/mips16-pcrel-4.d | 3 + gas/testsuite/gas/mips/mips16-pcrel-4.l | 15 + gas/testsuite/gas/mips/mips16-pcrel-4.s | 52 ++ gas/testsuite/gas/mips/mips16-pcrel-5.d | 3 + gas/testsuite/gas/mips/mips16-pcrel-5.l | 15 + gas/testsuite/gas/mips/mips16-pcrel-5.s | 54 ++ gas/testsuite/gas/mips/mips16-pcrel-absolute-1.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-absolute-1.s | 18 + gas/testsuite/gas/mips/mips16-pcrel-absolute-2.d | 16 + gas/testsuite/gas/mips/mips16-pcrel-absolute-2.s | 18 + gas/testsuite/gas/mips/mips16-pcrel-absolute-3.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-absolute-3.s | 18 + gas/testsuite/gas/mips/mips16-pcrel-absolute-4.d | 34 ++ gas/testsuite/gas/mips/mips16-pcrel-absolute-4.l | 9 + gas/testsuite/gas/mips/mips16-pcrel-absolute-4.s | 24 + gas/testsuite/gas/mips/mips16-pcrel-absolute-5.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-absolute-5.s | 24 + gas/testsuite/gas/mips/mips16-pcrel-absolute-6.d | 34 ++ gas/testsuite/gas/mips/mips16-pcrel-absolute-6.l | 9 + gas/testsuite/gas/mips/mips16-pcrel-absolute-6.s | 24 + gas/testsuite/gas/mips/mips16-pcrel-absolute-7.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-absolute-7.s | 24 + .../gas/mips/mips16-pcrel-absolute-n32-4.d | 5 + .../gas/mips/mips16-pcrel-absolute-n32-6.d | 5 + .../gas/mips/mips16-pcrel-absolute-n64-4.d | 4 + .../gas/mips/mips16-pcrel-absolute-n64-6.d | 4 + .../gas/mips/mips16-pcrel-absolute-n64-sym32-4.d | 5 + .../gas/mips/mips16-pcrel-absolute-n64-sym32-6.d | 5 + .../gas/mips/mips16-pcrel-absolute-pic-4.d | 5 + .../gas/mips/mips16-pcrel-absolute-pic-6.d | 5 + .../gas/mips/mips16-pcrel-absolute-pic-n32-4.d | 5 + .../gas/mips/mips16-pcrel-absolute-pic-n32-6.d | 5 + .../gas/mips/mips16-pcrel-absolute-pic-n64-4.d | 4 + .../gas/mips/mips16-pcrel-absolute-pic-n64-6.d | 4 + .../mips/mips16-pcrel-absolute-pic-n64-sym32-4.d | 5 + .../mips/mips16-pcrel-absolute-pic-n64-sym32-6.d | 5 + gas/testsuite/gas/mips/mips16-pcrel-absolute.d | 15 +- gas/testsuite/gas/mips/mips16-pcrel-absolute.l | 3 - gas/testsuite/gas/mips/mips16-pcrel-addend-2.d | 20 +- gas/testsuite/gas/mips/mips16-pcrel-addend-2.l | 3 - gas/testsuite/gas/mips/mips16-pcrel-addend-3.d | 19 +- gas/testsuite/gas/mips/mips16-pcrel-addend-3.l | 3 - gas/testsuite/gas/mips/mips16-pcrel-addend-4.d | 13 + gas/testsuite/gas/mips/mips16-pcrel-addend-4.s | 25 + gas/testsuite/gas/mips/mips16-pcrel-addend-5.d | 13 + gas/testsuite/gas/mips/mips16-pcrel-addend-5.s | 25 + gas/testsuite/gas/mips/mips16-pcrel-addend-6.d | 21 + gas/testsuite/gas/mips/mips16-pcrel-addend-6.s | 26 + gas/testsuite/gas/mips/mips16-pcrel-addend-7.d | 20 + gas/testsuite/gas/mips/mips16-pcrel-addend-7.s | 16 + gas/testsuite/gas/mips/mips16-pcrel-addend-8.d | 50 ++ gas/testsuite/gas/mips/mips16-pcrel-addend-8.l | 9 + gas/testsuite/gas/mips/mips16-pcrel-addend-8.s | 22 + gas/testsuite/gas/mips/mips16-pcrel-addend-9.d | 50 ++ gas/testsuite/gas/mips/mips16-pcrel-addend-9.l | 9 + gas/testsuite/gas/mips/mips16-pcrel-addend-9.s | 22 + gas/testsuite/gas/mips/mips16-pcrel-addend-n32-8.d | 51 ++ gas/testsuite/gas/mips/mips16-pcrel-addend-n32-9.d | 51 ++ gas/testsuite/gas/mips/mips16-pcrel-addend-n64-8.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-addend-n64-9.d | 4 + .../gas/mips/mips16-pcrel-addend-n64-sym32-8.d | 83 +++ .../gas/mips/mips16-pcrel-addend-n64-sym32-9.d | 83 +++ gas/testsuite/gas/mips/mips16-pcrel-addend-pic-8.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-addend-pic-9.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-delay-0.d | 35 ++ gas/testsuite/gas/mips/mips16-pcrel-delay-0.l | 5 + gas/testsuite/gas/mips/mips16-pcrel-delay-0.s | 36 ++ gas/testsuite/gas/mips/mips16-pcrel-delay-1.d | 40 ++ gas/testsuite/gas/mips/mips16-pcrel-delay-1.l | 5 + gas/testsuite/gas/mips/mips16-pcrel-delay-1.s | 35 ++ gas/testsuite/gas/mips/mips16-pcrel-n32-0.d | 48 ++ gas/testsuite/gas/mips/mips16-pcrel-n32-1.d | 48 ++ gas/testsuite/gas/mips/mips16-pcrel-n64-0.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-n64-1.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-n64-sym32-0.d | 64 +++ gas/testsuite/gas/mips/mips16-pcrel-n64-sym32-1.d | 64 +++ gas/testsuite/gas/mips/mips16-pcrel-pic-0.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-pic-1.d | 4 + gas/testsuite/gas/mips/mips16-pcrel-reloc-2.d | 20 +- gas/testsuite/gas/mips/mips16-pcrel-reloc-2.l | 3 - gas/testsuite/gas/mips/mips16-pcrel-reloc-3.d | 19 +- gas/testsuite/gas/mips/mips16-pcrel-reloc-3.l | 3 - gas/testsuite/gas/mips/mips16-pcrel-reloc-6.d | 20 +- gas/testsuite/gas/mips/mips16-pcrel-reloc-6.l | 3 - gas/testsuite/gas/mips/mips16-pcrel-reloc-7.d | 19 +- gas/testsuite/gas/mips/mips16-pcrel-reloc-7.l | 3 - gas/testsuite/gas/mips/mips16@relax-swap3.d | 23 +- gas/testsuite/gas/mips/mips16@relax-swap3.l | 3 - gas/testsuite/gas/mips/mips16e@relax-swap3.d | 21 + gas/testsuite/gas/mips/relax-swap3.s | 6 +- gdb/ChangeLog | 389 +++++++++++++ gdb/MAINTAINERS | 17 +- gdb/Makefile.in | 29 +- gdb/aarch64-tdep.c | 17 +- gdb/alpha-tdep.c | 23 +- gdb/alpha-tdep.h | 3 +- gdb/arch/arm-get-next-pcs.c | 89 ++-- gdb/arch/arm-get-next-pcs.h | 5 +- gdb/arm-linux-tdep.c | 21 +- gdb/arm-tdep.c | 30 +- gdb/arm-tdep.h | 4 +- gdb/breakpoint.c | 107 ++--- gdb/btrace.c | 9 +- gdb/common/gdb_vecs.h | 2 - gdb/config/aarch64/linux.mh | 29 - gdb/config/alpha/alpha-linux.mh | 15 - gdb/config/alpha/nbsd.mh | 4 - gdb/config/arm/linux.mh | 10 - gdb/config/arm/nbsdelf.mh | 2 - gdb/config/i386/cygwin.mh | 3 - gdb/config/i386/cygwin64.mh | 20 - gdb/config/i386/darwin.mh | 4 - gdb/config/i386/fbsd.mh | 8 - gdb/config/i386/fbsd64.mh | 7 - gdb/config/i386/go32.mh | 11 - gdb/config/i386/{i386gnu.mh => i386gnu.mn} | 12 - gdb/config/i386/i386sol2.mh | 4 - gdb/config/i386/linux.mh | 14 - gdb/config/i386/linux64.mh | 15 - gdb/config/i386/mingw.mh | 3 - gdb/config/i386/mingw64.mh | 1 - gdb/config/i386/nbsd64.mh | 3 - gdb/config/i386/nbsdelf.mh | 5 - gdb/config/i386/nto.mh | 4 - gdb/config/i386/obsd.mh | 5 - gdb/config/i386/obsd64.mh | 5 - gdb/config/i386/sol2-64.mh | 4 - gdb/config/ia64/linux.mh | 13 - gdb/config/m32r/linux.mh | 10 - gdb/config/m68k/linux.mh | 14 - gdb/config/m68k/nbsdelf.mh | 4 - gdb/config/m68k/obsd.mh | 4 - gdb/config/m88k/obsd.mh | 2 - gdb/config/mips/fbsd.mh | 3 - gdb/config/mips/linux.mh | 11 - gdb/config/mips/nbsd.mh | 2 - gdb/config/mips/obsd64.mh | 2 - gdb/config/pa/linux.mh | 10 - gdb/config/pa/nbsd.mh | 2 - gdb/config/pa/obsd.mh | 2 - gdb/config/powerpc/aix.mh | 8 - gdb/config/powerpc/fbsd.mh | 24 - gdb/config/powerpc/linux.mh | 12 - gdb/config/powerpc/nbsd.mh | 4 - gdb/config/powerpc/obsd.mh | 4 - gdb/config/powerpc/ppc64-linux.mh | 15 - gdb/config/powerpc/spu-linux.mh | 8 - gdb/config/s390/linux.mh | 9 - gdb/config/sh/nbsd.mh | 2 - gdb/config/sparc/fbsd.mh | 7 - gdb/config/sparc/linux.mh | 13 - gdb/config/sparc/linux64.mh | 13 - gdb/config/sparc/nbsd64.mh | 5 - gdb/config/sparc/nbsdelf.mh | 5 - gdb/config/sparc/obsd64.mh | 5 - gdb/config/sparc/sol2.mh | 6 - gdb/config/tilegx/linux.mh | 13 - gdb/config/vax/nbsdelf.mh | 5 - gdb/config/vax/obsd.mh | 5 - gdb/config/xtensa/linux.mh | 11 - gdb/configure | 43 +- gdb/configure.ac | 37 +- gdb/configure.nat | 484 ++++++++++++++++ gdb/corelow.c | 80 ++- gdb/cris-tdep.c | 8 +- gdb/doc/ChangeLog | 26 + gdb/doc/Makefile.in | 3 - gdb/doc/python.texi | 108 ++-- gdb/exec.c | 15 +- gdb/frv-linux-tdep.c | 7 +- gdb/gdbarch.c | 2 +- gdb/gdbarch.h | 11 +- gdb/gdbarch.sh | 389 +++++++------- gdb/gdbserver/ChangeLog | 22 + gdb/gdbserver/configure | 4 +- gdb/gdbserver/linux-arm-low.c | 7 +- gdb/gdbserver/linux-low.c | 9 +- gdb/gdbserver/linux-low.h | 2 +- gdb/gdbthread.h | 22 +- gdb/infcmd.c | 31 +- gdb/inferior.c | 29 +- gdb/inferior.h | 23 +- gdb/infrun.c | 65 ++- gdb/linespec.c | 6 +- gdb/mi/mi-main.c | 12 +- gdb/mips-tdep.c | 57 +- gdb/mips-tdep.h | 3 +- gdb/moxie-tdep.c | 26 +- gdb/nios2-tdep.c | 7 +- gdb/ppc-tdep.h | 3 +- gdb/proc-service.c | 18 +- gdb/progspace-and-thread.c | 43 ++ gdb/progspace-and-thread.h | 40 ++ gdb/progspace.c | 80 +--- gdb/progspace.h | 32 +- gdb/python/py-instruction.c | 67 +++ gdb/python/py-instruction.h | 30 + gdb/python/py-record-btrace.c | 596 ++++++++------------ gdb/python/py-record-btrace.h | 42 ++ gdb/python/py-record.c | 424 +++++++++++++- gdb/python/py-record.h | 74 +++ gdb/python/python-internal.h | 2 + gdb/python/python.c | 1 + gdb/regcache.c | 20 + gdb/regcache.h | 2 + gdb/remote.c | 5 +- gdb/rs6000-aix-tdep.c | 10 +- gdb/rs6000-tdep.c | 15 +- gdb/s390-linux-tdep.c | 15 +- gdb/solib-target.c | 61 +-- gdb/sparc-tdep.c | 8 +- gdb/spu-tdep.c | 9 +- gdb/symtab.c | 12 +- gdb/testsuite/ChangeLog | 29 + gdb/testsuite/gdb.cp/oranking.cc | 17 + .../gdb.python/py-record-btrace-threads.c | 58 ++ .../gdb.python/py-record-btrace-threads.exp | 81 +++ gdb/testsuite/gdb.python/py-record-btrace.exp | 6 +- gdb/thread.c | 249 ++++----- gdb/tic6x-tdep.c | 7 +- gdb/tracepoint.c | 6 +- gdb/varobj.c | 5 +- gdb/warning.m4 | 2 +- ld/ChangeLog | 79 +++ ld/testsuite/ld-avr/pr21404-1.d | 12 + ld/testsuite/ld-avr/pr21404-1.s | 11 + ld/testsuite/ld-avr/pr21404-2.d | 16 + ld/testsuite/ld-avr/pr21404-2.s | 25 + ld/testsuite/ld-avr/pr21404-3.d | 10 + ld/testsuite/ld-avr/pr21404-3.s | 10 + ld/testsuite/ld-avr/pr21404-4.d | 10 + ld/testsuite/ld-avr/pr21404-4.s | 10 + ld/testsuite/ld-avr/pr21404-5.d | 11 + ld/testsuite/ld-avr/pr21404-5.s | 9 + ld/testsuite/ld-avr/pr21404-6.d | 16 + ld/testsuite/ld-avr/pr21404-6.s | 19 + ld/testsuite/ld-avr/pr21404-7.d | 10 + ld/testsuite/ld-avr/pr21404-7.s | 9 + ld/testsuite/ld-avr/pr21404-8.d | 10 + ld/testsuite/ld-avr/pr21404-8.s | 9 + ld/testsuite/ld-elf/pr21384.d | 12 + ld/testsuite/ld-elf/pr21384.dl | 4 + ld/testsuite/ld-elf/pr21384.ld | 22 + ld/testsuite/ld-elf/pr21384.s | 2 + ld/testsuite/ld-i386/tls.exp | 9 +- ld/testsuite/ld-mips-elf/mips-elf.exp | 27 + .../ld-mips-elf/mips16-branch-absolute-1.d | 6 + .../ld-mips-elf/mips16-branch-absolute-2.d | 6 + .../ld-mips-elf/mips16-branch-absolute-addend-1.d | 6 + .../mips16-branch-absolute-addend-n32-1.d | 6 + .../mips16-branch-absolute-addend-n64-1.d | 6 + .../ld-mips-elf/mips16-branch-absolute-n32-1.d | 6 + .../ld-mips-elf/mips16-branch-absolute-n32-2.d | 6 + .../ld-mips-elf/mips16-branch-absolute-n64-1.d | 6 + .../ld-mips-elf/mips16-branch-absolute-n64-2.d | 6 + ld/testsuite/ld-mips-elf/mips16-pcrel-0.d | 41 ++ ld/testsuite/ld-mips-elf/mips16-pcrel-1.d | 41 ++ ld/testsuite/ld-mips-elf/mips16-pcrel-addend-2.d | 19 + ld/testsuite/ld-mips-elf/mips16-pcrel-addend-6.d | 19 + ld/testsuite/ld-mips-elf/mips16-pcrel-n32-0.d | 6 + ld/testsuite/ld-mips-elf/mips16-pcrel-n32-1.d | 6 + .../ld-mips-elf/mips16-pcrel-n64-sym32-0.d | 6 + .../ld-mips-elf/mips16-pcrel-n64-sym32-1.d | 6 + ld/testsuite/ld-x86-64/tls.exp | 7 +- ld/testsuite/lib/ld-lib.exp | 64 +++ opcodes/ChangeLog | 18 + opcodes/arm-dis.c | 4 +- opcodes/mips-dis.c | 7 +- opcodes/riscv-dis.c | 1 + opcodes/riscv-opc.c | 2 +- 308 files changed, 6270 insertions(+), 2049 deletions(-) create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-1.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-1.s create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-2.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-2.s create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-addend-1.s create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-addend-n32-1.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-addend-n64-1.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-n32-1.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-n32-2.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-n64-1.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-absolute-n64-2.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-0.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-0.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-0.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-1.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-1.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-1.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-2.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-2.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-2.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-3.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-3.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-3.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-4.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-4.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-5.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-5.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-5.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-1.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-1.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-2.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-2.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-3.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-3.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-4.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-4.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-5.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-5.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-6.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-6.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-6.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-7.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-7.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-n32-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-n32-6.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-n64-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-n64-6.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-n64-sym32-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-n64-sym32-6.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-pic-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-pic-6.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-pic-n32-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-pic-n32-6.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-pic-n64-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-pic-n64-6.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-pic-n64-sym32-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute-pic-n64-sym32-6.d delete mode 100644 gas/testsuite/gas/mips/mips16-pcrel-absolute.l delete mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-2.l delete mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-3.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-4.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-4.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-5.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-5.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-6.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-6.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-7.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-7.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-8.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-8.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-8.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-9.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-9.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-9.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-n32-8.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-n32-9.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-n64-8.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-n64-9.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-n64-sym32-8.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-n64-sym32-9.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-pic-8.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-addend-pic-9.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-delay-0.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-delay-0.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-delay-0.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-delay-1.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-delay-1.l create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-delay-1.s create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-n32-0.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-n32-1.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-n64-0.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-n64-1.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-n64-sym32-0.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-n64-sym32-1.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-pic-0.d create mode 100644 gas/testsuite/gas/mips/mips16-pcrel-pic-1.d delete mode 100644 gas/testsuite/gas/mips/mips16-pcrel-reloc-2.l delete mode 100644 gas/testsuite/gas/mips/mips16-pcrel-reloc-3.l delete mode 100644 gas/testsuite/gas/mips/mips16-pcrel-reloc-6.l delete mode 100644 gas/testsuite/gas/mips/mips16-pcrel-reloc-7.l delete mode 100644 gas/testsuite/gas/mips/mips16@relax-swap3.l create mode 100644 gas/testsuite/gas/mips/mips16e@relax-swap3.d delete mode 100644 gdb/config/aarch64/linux.mh delete mode 100644 gdb/config/alpha/alpha-linux.mh delete mode 100644 gdb/config/alpha/nbsd.mh delete mode 100644 gdb/config/arm/linux.mh delete mode 100644 gdb/config/arm/nbsdelf.mh delete mode 100644 gdb/config/i386/cygwin.mh delete mode 100644 gdb/config/i386/cygwin64.mh delete mode 100644 gdb/config/i386/darwin.mh delete mode 100644 gdb/config/i386/fbsd.mh delete mode 100644 gdb/config/i386/fbsd64.mh delete mode 100644 gdb/config/i386/go32.mh rename gdb/config/i386/{i386gnu.mh => i386gnu.mn} (79%) delete mode 100644 gdb/config/i386/i386sol2.mh delete mode 100644 gdb/config/i386/linux.mh delete mode 100644 gdb/config/i386/linux64.mh delete mode 100644 gdb/config/i386/mingw.mh delete mode 100644 gdb/config/i386/mingw64.mh delete mode 100644 gdb/config/i386/nbsd64.mh delete mode 100644 gdb/config/i386/nbsdelf.mh delete mode 100644 gdb/config/i386/nto.mh delete mode 100644 gdb/config/i386/obsd.mh delete mode 100644 gdb/config/i386/obsd64.mh delete mode 100644 gdb/config/i386/sol2-64.mh delete mode 100644 gdb/config/ia64/linux.mh delete mode 100644 gdb/config/m32r/linux.mh delete mode 100644 gdb/config/m68k/linux.mh delete mode 100644 gdb/config/m68k/nbsdelf.mh delete mode 100644 gdb/config/m68k/obsd.mh delete mode 100644 gdb/config/m88k/obsd.mh delete mode 100644 gdb/config/mips/fbsd.mh delete mode 100644 gdb/config/mips/linux.mh delete mode 100644 gdb/config/mips/nbsd.mh delete mode 100644 gdb/config/mips/obsd64.mh delete mode 100644 gdb/config/pa/linux.mh delete mode 100644 gdb/config/pa/nbsd.mh delete mode 100644 gdb/config/pa/obsd.mh delete mode 100644 gdb/config/powerpc/aix.mh delete mode 100644 gdb/config/powerpc/fbsd.mh delete mode 100644 gdb/config/powerpc/linux.mh delete mode 100644 gdb/config/powerpc/nbsd.mh delete mode 100644 gdb/config/powerpc/obsd.mh delete mode 100644 gdb/config/powerpc/ppc64-linux.mh delete mode 100644 gdb/config/powerpc/spu-linux.mh delete mode 100644 gdb/config/s390/linux.mh delete mode 100644 gdb/config/sh/nbsd.mh delete mode 100644 gdb/config/sparc/fbsd.mh delete mode 100644 gdb/config/sparc/linux.mh delete mode 100644 gdb/config/sparc/linux64.mh delete mode 100644 gdb/config/sparc/nbsd64.mh delete mode 100644 gdb/config/sparc/nbsdelf.mh delete mode 100644 gdb/config/sparc/obsd64.mh delete mode 100644 gdb/config/sparc/sol2.mh delete mode 100644 gdb/config/tilegx/linux.mh delete mode 100644 gdb/config/vax/nbsdelf.mh delete mode 100644 gdb/config/vax/obsd.mh delete mode 100644 gdb/config/xtensa/linux.mh create mode 100644 gdb/configure.nat create mode 100644 gdb/progspace-and-thread.c create mode 100644 gdb/progspace-and-thread.h create mode 100644 gdb/python/py-instruction.c create mode 100644 gdb/python/py-instruction.h create mode 100644 gdb/python/py-record.h create mode 100644 gdb/testsuite/gdb.python/py-record-btrace-threads.c create mode 100644 gdb/testsuite/gdb.python/py-record-btrace-threads.exp create mode 100644 ld/testsuite/ld-avr/pr21404-1.d create mode 100644 ld/testsuite/ld-avr/pr21404-1.s create mode 100644 ld/testsuite/ld-avr/pr21404-2.d create mode 100644 ld/testsuite/ld-avr/pr21404-2.s create mode 100644 ld/testsuite/ld-avr/pr21404-3.d create mode 100644 ld/testsuite/ld-avr/pr21404-3.s create mode 100644 ld/testsuite/ld-avr/pr21404-4.d create mode 100644 ld/testsuite/ld-avr/pr21404-4.s create mode 100644 ld/testsuite/ld-avr/pr21404-5.d create mode 100644 ld/testsuite/ld-avr/pr21404-5.s create mode 100644 ld/testsuite/ld-avr/pr21404-6.d create mode 100644 ld/testsuite/ld-avr/pr21404-6.s create mode 100644 ld/testsuite/ld-avr/pr21404-7.d create mode 100644 ld/testsuite/ld-avr/pr21404-7.s create mode 100644 ld/testsuite/ld-avr/pr21404-8.d create mode 100644 ld/testsuite/ld-avr/pr21404-8.s create mode 100644 ld/testsuite/ld-elf/pr21384.d create mode 100644 ld/testsuite/ld-elf/pr21384.dl create mode 100644 ld/testsuite/ld-elf/pr21384.ld create mode 100644 ld/testsuite/ld-elf/pr21384.s create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-1.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-2.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-1.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-n32-1.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-addend-n64-1.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-n32-1.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-n32-2.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-n64-1.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-branch-absolute-n64-2.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-pcrel-0.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-pcrel-1.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-pcrel-addend-2.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-pcrel-addend-6.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-pcrel-n32-0.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-pcrel-n32-1.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-pcrel-n64-sym32-0.d create mode 100644 ld/testsuite/ld-mips-elf/mips16-pcrel-n64-sym32-1.d First 500 lines of diff: diff --git a/bfd/ChangeLog b/bfd/ChangeLog index dff6a59..27ac8c3 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,24 @@ +2017-05-01 Senthil Kumar Selvaraj + + PR ld/21404 + * elf32-avr.c (avr_should_move_sym): New function. + (avr_should_reduce_sym_size): Likewise. + (avr_should_increase_sym_size): Likewise. + (elf32_avr_relax_delete_bytes): Adjust symbol values + and sizes by calling new functions. + +2017-05-01 Palmer Dabbelt + + * config.bfd (riscv32-*): Enable rv64. + +2017-05-02 Alan Modra + + PR 21384 + * elflink.c (bfd_elf_link_mark_dynamic_symbol): Test h->non_elf + rather than h->root.type == bfd_link_hash_new. + (bfd_elf_record_link_assignment): Similarly, call + bfd_elf_link_mark_dynamic_symbol when h->non_elf. + 2017-04-29 Alan Modra PR 21432 diff --git a/bfd/config.bfd b/bfd/config.bfd index 151de95..eb6a958 100644 --- a/bfd/config.bfd +++ b/bfd/config.bfd @@ -1441,10 +1441,9 @@ case "${targ}" in #ifdef BFD64 riscv32-*-*) targ_defvec=riscv_elf32_vec - targ_selvecs="riscv_elf32_vec" + targ_selvecs="riscv_elf32_vec riscv_elf64_vec" want64=true ;; - riscv64-*-*) targ_defvec=riscv_elf64_vec targ_selvecs="riscv_elf32_vec riscv_elf64_vec" diff --git a/bfd/elf32-avr.c b/bfd/elf32-avr.c index 0f6c188..f140aa7 100644 --- a/bfd/elf32-avr.c +++ b/bfd/elf32-avr.c @@ -1854,6 +1854,40 @@ elf32_avr_adjust_reloc_if_spans_insn (bfd *abfd, } } +static bfd_boolean +avr_should_move_sym (symvalue symval, + bfd_vma start, + bfd_vma end, + bfd_boolean did_pad) +{ + bfd_boolean sym_within_boundary = + did_pad ? symval < end : symval <= end; + return (symval > start && sym_within_boundary); +} + +static bfd_boolean +avr_should_reduce_sym_size (symvalue symval, + symvalue symend, + bfd_vma start, + bfd_vma end, + bfd_boolean did_pad) +{ + bfd_boolean sym_end_within_boundary = + did_pad ? symend < end : symend <= end; + return (symval <= start && symend > start && sym_end_within_boundary); +} + +static bfd_boolean +avr_should_increase_sym_size (symvalue symval, + symvalue symend, + bfd_vma start, + bfd_vma end, + bfd_boolean did_pad) +{ + return avr_should_move_sym (symval, start, end, did_pad) + && symend >= end && did_pad; +} + /* Delete some bytes from a section while changing the size of an instruction. The parameter "addr" denotes the section-relative offset pointing just behind the shrinked instruction. "addr+count" point at the first @@ -1875,13 +1909,14 @@ elf32_avr_relax_delete_bytes (bfd *abfd, Elf_Internal_Rela *irel, *irelend; Elf_Internal_Sym *isym; Elf_Internal_Sym *isymbuf = NULL; - bfd_vma toaddr, reloc_toaddr; + bfd_vma toaddr; struct elf_link_hash_entry **sym_hashes; struct elf_link_hash_entry **end_hashes; unsigned int symcount; struct avr_relax_info *relax_info; struct avr_property_record *prop_record = NULL; bfd_boolean did_shrink = FALSE; + bfd_boolean did_pad = FALSE; symtab_hdr = &elf_tdata (abfd)->symtab_hdr; sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); @@ -1912,17 +1947,6 @@ elf32_avr_relax_delete_bytes (bfd *abfd, } } - /* We need to look at all relocs with offsets less than toaddr. prop - records handling adjusts toaddr downwards to avoid moving syms at the - address of the property record, but all relocs with offsets between addr - and the current value of toaddr need to have their offsets adjusted. - Assume addr = 0, toaddr = 4 and count = 2. After prop records handling, - toaddr becomes 2, but relocs with offsets 2 and 3 still need to be - adjusted (to 0 and 1 respectively), as the first 2 bytes are now gone. - So record the current value of toaddr here, and use it when adjusting - reloc offsets. */ - reloc_toaddr = toaddr; - irel = elf_section_data (sec)->relocs; irelend = irel + sec->reloc_count; @@ -1962,10 +1986,7 @@ elf32_avr_relax_delete_bytes (bfd *abfd, to remember we didn't delete anything i.e. don't set did_shrink, so that we don't corrupt reloc offsets or symbol values.*/ memset (contents + toaddr - count, fill, count); - - /* Adjust the TOADDR to avoid moving symbols located at the address - of the property record, which has not moved. */ - toaddr -= count; + did_pad = TRUE; } if (!did_shrink) @@ -1981,7 +2002,7 @@ elf32_avr_relax_delete_bytes (bfd *abfd, /* Get the new reloc address. */ if ((irel->r_offset > addr - && irel->r_offset < reloc_toaddr)) + && irel->r_offset < toaddr)) { if (debug_relax) printf ("Relocation at address 0x%x needs to be moved.\n" @@ -2059,7 +2080,7 @@ elf32_avr_relax_delete_bytes (bfd *abfd, { /* If there is an alignment boundary, we only need to adjust addends that end up below the boundary. */ - bfd_vma shrink_boundary = (reloc_toaddr + bfd_vma shrink_boundary = (toaddr + sec->output_section->vma + sec->output_offset); @@ -2102,12 +2123,10 @@ elf32_avr_relax_delete_bytes (bfd *abfd, { if (isym->st_shndx == sec_shndx) { - if (isym->st_value > addr - && isym->st_value <= toaddr) - isym->st_value -= count; - - if (isym->st_value <= addr - && isym->st_value + isym->st_size > addr) + symvalue symval = isym->st_value; + symvalue symend = symval + isym->st_size; + if (avr_should_reduce_sym_size (symval, symend, + addr, toaddr, did_pad)) { /* If this assert fires then we have a symbol that ends part way through an instruction. Does that make @@ -2115,6 +2134,12 @@ elf32_avr_relax_delete_bytes (bfd *abfd, BFD_ASSERT (isym->st_value + isym->st_size >= addr + count); isym->st_size -= count; } + else if (avr_should_increase_sym_size (symval, symend, + addr, toaddr, did_pad)) + isym->st_size += count; + + if (avr_should_move_sym (symval, addr, toaddr, did_pad)) + isym->st_value -= count; } } } @@ -2131,20 +2156,24 @@ elf32_avr_relax_delete_bytes (bfd *abfd, || sym_hash->root.type == bfd_link_hash_defweak) && sym_hash->root.u.def.section == sec) { - if (sym_hash->root.u.def.value > addr - && sym_hash->root.u.def.value <= toaddr) - sym_hash->root.u.def.value -= count; + symvalue symval = sym_hash->root.u.def.value; + symvalue symend = symval + sym_hash->size; - if (sym_hash->root.u.def.value <= addr - && (sym_hash->root.u.def.value + sym_hash->size > addr)) + if (avr_should_reduce_sym_size (symval, symend, + addr, toaddr, did_pad)) { /* If this assert fires then we have a symbol that ends part way through an instruction. Does that make sense? */ - BFD_ASSERT (sym_hash->root.u.def.value + sym_hash->size - >= addr + count); + BFD_ASSERT (symend >= addr + count); sym_hash->size -= count; } + else if (avr_should_increase_sym_size (symval, symend, + addr, toaddr, did_pad)) + sym_hash->size += count; + + if (avr_should_move_sym (symval, addr, toaddr, did_pad)) + sym_hash->root.u.def.value -= count; } } diff --git a/bfd/elflink.c b/bfd/elflink.c index 4af4b1c..9acc069 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -580,7 +580,7 @@ bfd_elf_link_mark_dynamic_symbol (struct bfd_link_info *info, && (ELF_ST_TYPE (sym->st_info) == STT_OBJECT || ELF_ST_TYPE (sym->st_info) == STT_COMMON)))) || (d != NULL - && h->root.type == bfd_link_hash_new + && h->non_elf && (*d->match) (&d->head, NULL, h->root.root.string))) h->dynamic = 1; } @@ -623,6 +623,14 @@ bfd_elf_record_link_assignment (bfd *output_bfd, } } + /* Symbols defined in a linker script but not referenced anywhere + else will have non_elf set. */ + if (h->non_elf) + { + bfd_elf_link_mark_dynamic_symbol (info, h, NULL); + h->non_elf = 0; + } + switch (h->root.type) { case bfd_link_hash_defined: @@ -639,8 +647,6 @@ bfd_elf_record_link_assignment (bfd *output_bfd, bfd_link_repair_undef_list (&htab->root); break; case bfd_link_hash_new: - bfd_elf_link_mark_dynamic_symbol (info, h, NULL); - h->non_elf = 0; break; case bfd_link_hash_indirect: /* We had a versioned symbol in a dynamic library. We make the diff --git a/bfd/version.h b/bfd/version.h index a5c3e29..53986ea 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -1,4 +1,4 @@ -#define BFD_VERSION_DATE 20170429 +#define BFD_VERSION_DATE 20170507 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 9eea3a0..b3a539a 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,29 @@ +2017-05-02 H.J. Lu + + * objcopy.c (merge_gnu_build_notes): Cast relcount to unsigned + long when comparing with sec->reloc_count. + +2017-05-02 Nick Clifton + + * objcopy.c (merge_gnu_build_notes): Disable merge if there are + more internal relocs than external relocs. + +2017-05-02 Maciej W. Rozycki + + * testsuite/binutils-all/mips/mips16-undecoded.d: Adjust the + disassembly of PC-relative LA and LW synthetic instructions. + +2017-05-02 Nick Clifton + + PR 21440 + * objdump.c (dump_relocs_in_section): Check for an excessive + number of relocs before attempting to dump them. + +2017-05-01 Alan Modra + + * objcopy.c (merge_gnu_build_notes): Correct code deleting + relocs. + 2017-04-28 Nick Clifton PR binutils/21439 diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 9bad4b7..ccb5e12 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -2137,6 +2137,13 @@ merge_gnu_build_notes (bfd * abfd, asection * sec, bfd_size_type size, bfd_byte relcount = 0; } + /* A few targets (eg MIPS, SPARC) create multiple internal relocs to + represent a single external reloc. Unfortunately the current BFD + API does not handle deleting relocs in such situations very well + and so it is unsafe to proceed. */ + if ((unsigned long) relcount > sec->reloc_count) + goto done; + /* Eliminate the duplicates. */ new = new_contents = xmalloc (size); for (pnote = pnotes, old = contents; @@ -2185,15 +2192,18 @@ merge_gnu_build_notes (bfd * abfd, asection * sec, bfd_size_type size, bfd_byte if (relcount > 0) { - arelent ** rel; + arelent **rel = relpp; - for (rel = relpp; rel < relpp + relcount; rel ++) - if ((* rel)->howto == NULL) + while (rel < relpp + relcount) + if ((*rel)->howto != NULL) + rel++; + else { /* Delete eliminated relocs. FIXME: There are better ways to do this. */ - memmove (rel, rel + 1, ((relcount - (rel - relpp)) - 1) * sizeof (* rel)); - relcount --; + memmove (rel, rel + 1, + ((relcount - (rel - relpp)) - 1) * sizeof (*rel)); + relcount--; } bfd_set_reloc (abfd, sec, relpp, relcount); } diff --git a/binutils/objdump.c b/binutils/objdump.c index bc61000..5972da1 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -3379,6 +3379,14 @@ dump_relocs_in_section (bfd *abfd, return; } + if ((bfd_get_file_flags (abfd) & (BFD_IN_MEMORY | BFD_LINKER_CREATED)) == 0 + && relsize > get_file_size (bfd_get_filename (abfd))) + { + printf (" (too many: 0x%x)\n", section->reloc_count); + bfd_set_error (bfd_error_file_truncated); + bfd_fatal (bfd_get_filename (abfd)); + } + relpp = (arelent **) xmalloc (relsize); relcount = bfd_canonicalize_reloc (abfd, section, relpp, syms); diff --git a/binutils/testsuite/binutils-all/mips/mips16-undecoded.d b/binutils/testsuite/binutils-all/mips/mips16-undecoded.d index 42a5cdf..b455419 100644 --- a/binutils/testsuite/binutils-all/mips/mips16-undecoded.d +++ b/binutils/testsuite/binutils-all/mips/mips16-undecoded.d @@ -11,11 +11,11 @@ Disassembly of section \.text: [0-9a-f]+ <[^>]*> f008 0231 addiu v0,sp,16401 [0-9a-f]+ <[^>]*> f008 0251 addiu v0,sp,16401 [0-9a-f]+ <[^>]*> f008 0291 addiu v0,sp,16401 -[0-9a-f]+ <[^>]*> f008 0a11 la v0,00004024 -[0-9a-f]+ <[^>]*> f008 0a11 la v0,00004028 -[0-9a-f]+ <[^>]*> f008 0a31 la v0,0000402c -[0-9a-f]+ <[^>]*> f008 0a51 la v0,00004030 -[0-9a-f]+ <[^>]*> f008 0a91 la v0,00004034 +[0-9a-f]+ <[^>]*> f008 0a11 la v0,00004025 +[0-9a-f]+ <[^>]*> f008 0a11 la v0,00004029 +[0-9a-f]+ <[^>]*> f008 0a31 la v0,0000402d +[0-9a-f]+ <[^>]*> f008 0a51 la v0,00004031 +[0-9a-f]+ <[^>]*> f008 0a91 la v0,00004035 [0-9a-f]+ <[^>]*> f008 1011 b 0000804e [0-9a-f]+ <[^>]*> f008 1011 b 00008052 [0-9a-f]+ <[^>]*> f008 1031 b 00008056 @@ -64,11 +64,11 @@ Disassembly of section \.text: [0-9a-f]+ <[^>]*> f008 9231 lw v0,16401\(sp\) [0-9a-f]+ <[^>]*> f008 9251 lw v0,16401\(sp\) [0-9a-f]+ <[^>]*> f008 9291 lw v0,16401\(sp\) -[0-9a-f]+ <[^>]*> f008 b211 lw v0,000040f8 -[0-9a-f]+ <[^>]*> f008 b211 lw v0,000040fc -[0-9a-f]+ <[^>]*> f008 b231 lw v0,00004100 -[0-9a-f]+ <[^>]*> f008 b251 lw v0,00004104 -[0-9a-f]+ <[^>]*> f008 b291 lw v0,00004108 +[0-9a-f]+ <[^>]*> f008 b211 lw v0,000040f9 +[0-9a-f]+ <[^>]*> f008 b211 lw v0,000040fd +[0-9a-f]+ <[^>]*> f008 b231 lw v0,00004101 +[0-9a-f]+ <[^>]*> f008 b251 lw v0,00004105 +[0-9a-f]+ <[^>]*> f008 b291 lw v0,00004109 [0-9a-f]+ <[^>]*> f008 d211 sw v0,16401\(sp\) [0-9a-f]+ <[^>]*> f008 d211 sw v0,16401\(sp\) [0-9a-f]+ <[^>]*> f008 d231 sw v0,16401\(sp\) diff --git a/gas/ChangeLog b/gas/ChangeLog index d5849c0..37a0b9b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,188 @@ +2017-05-03 Maciej W. Rozycki + + * config/tc-mips.c (RELAX_MIPS16_ENCODE): Add `pic', `sym32' and + `nomacro' flags. + (RELAX_MIPS16_PIC, RELAX_MIPS16_SYM32, RELAX_MIPS16_NOMACRO): + New macros. + (RELAX_MIPS16_USER_SMALL, RELAX_MIPS16_USER_EXT) + (RELAX_MIPS16_DSLOT, RELAX_MIPS16_JAL_DSLOT) + (RELAX_MIPS16_EXTENDED, RELAX_MIPS16_MARK_EXTENDED) + (RELAX_MIPS16_CLEAR_EXTENDED, RELAX_MIPS16_ALWAYS_EXTENDED) + (RELAX_MIPS16_MARK_ALWAYS_EXTENDED) + (RELAX_MIPS16_CLEAR_ALWAYS_EXTENDED): Shift bits. + (RELAX_MIPS16_MACRO, RELAX_MIPS16_MARK_MACRO) + (RELAX_MIPS16_CLEAR_MACRO): New macros. + (append_insn): Pass `mips_pic', HAVE_32BIT_SYMBOLS and + `mips_opts.warn_about_macros' settings to RELAX_MIPS16_ENCODE. + (mips16_macro_frag): New function. + (md_estimate_size_before_relax): Handle HI16/LO16 relaxation. + (mips_relax_frag): Likewise. + (md_convert_frag): Likewise. + + * testsuite/gas/mips/mips16@relax-swap3.d: Remove error output, + add dump patterns. + * testsuite/gas/mips/mips16e@relax-swap3.d: New test + subarchitecture. + * testsuite/gas/mips/micromips@relax-swap3.d: Remove trailing + NOP padding. + * testsuite/gas/mips/mips16-pcrel-reloc-2.d: Remove error + output, add dump patterns. + * testsuite/gas/mips/mips16-pcrel-reloc-3.d: Remove error + output, add dump patterns. + * testsuite/gas/mips/mips16-pcrel-reloc-6.d: Remove error + output, add dump patterns. + * testsuite/gas/mips/mips16-pcrel-reloc-7.d: Remove error + output, add dump patterns. + * testsuite/gas/mips/mips16-pcrel-addend-2.d: Remove error + output, add dump patterns. + * testsuite/gas/mips/mips16-pcrel-addend-3.d: Remove error + output, add dump patterns. + * testsuite/gas/mips/mips16-pcrel-absolute.d: Remove error + output, add dump patterns. + * testsuite/gas/mips/mips16-pcrel-absolute-1.d: Remove error + output, add dump patterns. + * testsuite/gas/mips/mips16@relax-swap3.l: Remove file. + * testsuite/gas/mips/mips16-pcrel-reloc-2.l: Remove file. + * testsuite/gas/mips/mips16-pcrel-reloc-3.l: Remove file. + * testsuite/gas/mips/mips16-pcrel-reloc-6.l: Remove file. + * testsuite/gas/mips/mips16-pcrel-reloc-7.l: Remove file. + * testsuite/gas/mips/mips16-pcrel-addend-2.l: Remove file. + * testsuite/gas/mips/mips16-pcrel-addend-3.l: Remove file. + * testsuite/gas/mips/mips16-pcrel-absolute.l: Remove file. + * testsuite/gas/mips/mips16-pcrel-absolute-1.l: Remove file. + * testsuite/gas/mips/relax-swap3.s: Adjust trailing padding. + + * testsuite/gas/mips/mips16-pcrel-0.d: New test. + * testsuite/gas/mips/mips16-pcrel-1.d: New test. + * testsuite/gas/mips/mips16-pcrel-2.d: New test. + * testsuite/gas/mips/mips16-pcrel-3.d: New test. + * testsuite/gas/mips/mips16-pcrel-4.d: New test. + * testsuite/gas/mips/mips16-pcrel-5.d: New test. + * testsuite/gas/mips/mips16-pcrel-pic-0.d: New test. + * testsuite/gas/mips/mips16-pcrel-pic-1.d: New test. + * testsuite/gas/mips/mips16-pcrel-n32-0.d: New test. + * testsuite/gas/mips/mips16-pcrel-n32-1.d: New test. + * testsuite/gas/mips/mips16-pcrel-n64-sym32-0.d: New test. + * testsuite/gas/mips/mips16-pcrel-n64-sym32-1.d: New test. + * testsuite/gas/mips/mips16-pcrel-n64-0.d: New test. + * testsuite/gas/mips/mips16-pcrel-n64-1.d: New test. + * testsuite/gas/mips/mips16-pcrel-delay-0.d: New test. + * testsuite/gas/mips/mips16-pcrel-delay-1.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-4.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-5.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-6.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-7.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-8.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-9.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-pic-8.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-pic-9.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-n32-8.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-n32-9.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-n64-sym32-8.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-n64-sym32-9.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-n64-8.d: New test. + * testsuite/gas/mips/mips16-pcrel-addend-n64-9.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-2.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-3.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-4.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-5.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-6.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-7.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-pic-4.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-pic-6.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-n32-4.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-n32-6.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-n64-4.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-n64-6.d: New test. + * testsuite/gas/mips/mips16-pcrel-absolute-n64-sym32-4.d: New + test. + * testsuite/gas/mips/mips16-pcrel-absolute-n64-sym32-6.d: New hooks/post-receive -- Repository for Project Archer.