The branch, users/jkratoch/indexcxx has been updated via 98bebcd98b51d05daf04b0d5c4d7f6e112597c57 (commit) via a941291cab71b9ac356e1c03968c177c03e602ab (commit) via 45ce1b47e4490993b5c1a04f4a8acb62d9ec5039 (commit) via a93866c8bfd4ad4b32c81e73e6a73aa9d831d350 (commit) via 0749542484129e77a30f1089d6d671197be5035f (commit) via deb1fa3edaf10c65d1f39951779927da955e3a57 (commit) via b421c83cb866120ab347d60fda20fb0e2011be8c (commit) via ef79d9a3c6ed1e3ccd466bae76956019a7c5d376 (commit) via f8fdb78eafb3f70661f6e4a43beb004dde9e0921 (commit) via 9ccbfd7bc1b7228d67f2d4ca878224d493918264 (commit) via 76e75227c37bc058449a09fe5017eeb40cda0781 (commit) via 51046d9e60727cd6a4cfeae29a05ce2e1e394dc9 (commit) via 4023ae762ed9b52e4925242b705d0b3a50f6ed13 (commit) via af43057bafa7260dbcc453d2acc47eb63b974c50 (commit) via b091120773f8a740065b6449617cfbf1e0e789f4 (commit) via 6c401f72e979ddd7e2f890dcc88f93f683233d74 (commit) via d0e449a1865c741c5e0c9d43a7d61a0621163aa7 (commit) via 434a40239548115cf04a80410e4f570f35c361c1 (commit) via 1670f9c1546818c4ffe02e8f460df1c1c4b1601d (commit) via d6f48aed23d1004a4ed8ab3b2742b0bf7c838c1c (commit) via 428544e8ae6252a615a3100889f3df7d2c5483c4 (commit) via 750eaa47f10f48d19aacbec74ab6867da0164677 (commit) via 4621115fe529869e938dca605bb90190ea52316a (commit) via b06b2c92c06cf100f259f218337d007ee0b1c884 (commit) via 4e3afec278d1fb55b983751d02119f65566bd094 (commit) via d949ff5607b9f595e0eed2ff15fbe5eb84eb3a34 (commit) via 339053c29abac25e5f86a1ccccd4e8e3b2d362df (commit) via 7974a6050b6e2c44722a533e2d5d9131e7db00ff (commit) via 343b374c61f793f745b820c3cf61f69186566b18 (commit) via e15c3eb45bdc8bd5717fd5ceddcc30c3de07b58f (commit) via 5b66fac4bad619766fb1a5f5179c08b67d48a8c5 (commit) via 72bc1d246686ff38ef01f5a35769ebdbe39f023c (commit) via de9a3c4285fad1914929ee304ddaa26e76af8031 (commit) via da3d25afa26476bf24247b8696fd00ab31f39db9 (commit) via fba37edd96c8dc65a63bd5b4fef5366de45b165a (commit) via 1f78f649e868979d36490d7c2ea0b3d41abc5ec6 (commit) via 55bcecda5703eb4647165cb3ddb86aed63fd44d2 (commit) via 14f72d45a22f25f6d00a62fc03bcf9827df226f5 (commit) via 1425c41dcd68350d9be9670910c547cc7ab91e0e (commit) via 5c99fcf8031bcf96f2c948e9fc5d3b03c97f631a (commit) via f2d830a50def7a00a911620a3e9c7d920e5ef0f0 (commit) via 76c20d54ca5042e11af9ddf5723cc24cf47736ec (commit) via d7153c4ac333c9127c18efcf184607d368bb142d (commit) via 641338d8e9b62bde9672f13f0dca2324b61e46e2 (commit) via 21d68fcd0c2f9113369d860ee1e5841bfacc35ff (commit) via a61d92b7bd4da998dd5d73e9205b4871f7c4825d (commit) via 7a81a73b2e5d00b76e15d97db7b8f0c9809ba1b7 (commit) via ce8ad8721313d288a05a95b62d95ca43db584ebb (commit) via 97d343d40012b1030f1fd219f91efcab180fb3ef (commit) via 04b31182bf3f8a1a76e995bdfaaaab4c009b9cb2 (commit) via d21f3ddb0d5f95aff5c769ae283ce5522262f48d (commit) via 740a463062bd5d1641bdfb639295dafe89341b9b (commit) via 3e6b644558f941d3fe482e15efbc53d8f39ef8b7 (commit) via b41c5a85a734b9ca813d4a314b66ef4b4b4d1b11 (commit) via 23ec1e32b1ab714649a7c25e49b5d721fe3bd3db (commit) via c46cec3a8cfe02fbe0f6c67ba53abc5369c5c659 (commit) via bbdd9a6894d7875407da59d490faf5588163d21c (commit) via e63d123268f23a4cbc45ee55fb6dbc7d84729da3 (commit) via c185f580b2b3baf7cee762c8ab31ab6925b9534a (commit) via 19c4559475791cd70e319eaf5c1e23d23d9ae81e (commit) via 03def0812a9ee962d9dcfe9b0ba37783e58acfb8 (commit) via 4658f12e9c5ec0d2efb04f1688f6cd6bd9f1a47d (commit) via c4ab9505b53cdc899506ed421fddb7e1f8faf7a3 (commit) via 919383ac718c2a3187ee2a9ad659daa22da26258 (commit) via 126124cc0f3f0417913bfd84d83e4e525b6facf9 (commit) via be6a24d8eabdbeef32a9d79e81307af4491fcf56 (commit) via d581dda88162831ebbd0757312fa93681d945327 (commit) via 0348fd79d4c32243d91e8a55f20f408a9b4ec20d (commit) via 6e3d1f0728d980a384c5aa63ce7f2ff3919c5024 (commit) via adc1273cb27286452ed8b32c5ca3ea263b4854f0 (commit) via debed3db4887483552103da36d180967ef0dca5f (commit) via d28b6364b1fba1c0270c001f0d82a69e351e1922 (commit) via b0b92aeb3828219075fce23543fb39fee8608e99 (commit) via 16c4d54a71d8052988ed9c8005a03a7f934245f4 (commit) via b5c3668253b909fd1f5b011893a35bb8dfd3be9b (commit) via 5625a2864147f4d92b22edfeeab7600818988be2 (commit) via 23bcc18f470ee4364bd362a8b78c6c1415a9dadb (commit) via a49abe0bb18e04d3a4b692995fcfae70cd470775 (commit) via 9e9821ddd80c0d0b3dda54d34cc8867f256d4583 (commit) via 0dc9a308a1ec9675bf6b33bae9e8b1faa0bad9ed (commit) via e1ba30532c6de26a14404ab4919bb591e8da3eab (commit) via e662f84f5d6d014746550ce3d3f623583c043ff0 (commit) via 1587442d37ee4266e54d59bfdc783574f0587aff (commit) via 534455547021f3262fa60d32cabb626af01692a3 (commit) via 8b353c47b70568ab9f0cfd619b7a19e931c2b0c8 (commit) via 957f6b39cab6cac0e4c54e650c7f75109544ac1d (commit) via 9ad8982091eeb76b380e459fe721aaeacf7b8f24 (commit) via 42354845ae5e00ec1c3519e1f2166b79a9533401 (commit) via 7034215fd6d99f275998f7f0f8a346ab35fcbee6 (commit) via b02cd3e978e9273074f7cbe2ca1d5b372225a56d (commit) via 7eacd66b086cabb1daab20890d5481894d4f56b2 (commit) via bce964aa6c777d236fbd641f2bc7bb931cfe4bf3 (commit) via 97e83a100aa8250be783304bfe0429761c6e6b6b (commit) via f082820db966c79e47a143da774700055a1fad41 (commit) via b43eea27e99f5fd270b3bec455054ea53ac700bb (commit) via bf1554384b186b448904dbc13ee5374239c88520 (commit) via 10f489e57677e670bf980e93896762594e9ad908 (commit) via 0092b74da6d86185c4d0c0fa0f540b97647bf44a (commit) via a14a62ddff9eadbb8a7ad101ab06b02e44b6c00a (commit) via 46b9c12945629fffb61001a8f13a37c96675c0b7 (commit) via 2e78302469502f4f8a98144b60c09d4d9b6438fd (commit) from c5141d02425a95ed688b640eebfc99ede92e61de (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 98bebcd98b51d05daf04b0d5c4d7f6e112597c57 Merge: c5141d0 a941291 Author: Jan Kratochvil Date: Sat Apr 29 23:58:43 2017 +0200 Merge remote-tracking branch 'gdb/master' into indexcxx commit a941291cab71b9ac356e1c03968c177c03e602ab Author: Alan Modra Date: Sat Apr 29 14:48:16 2017 +0930 PR21432, buffer overflow in perform_relocation The existing reloc offset range tests didn't catch small negative offsets less than the size of the reloc field. PR 21432 * reloc.c (reloc_offset_in_range): New function. (bfd_perform_relocation, bfd_install_relocation): Use it. (_bfd_final_link_relocate): Likewise. commit 45ce1b47e4490993b5c1a04f4a8acb62d9ec5039 Author: Sergio Durigan Junior Date: Fri Mar 31 13:24:36 2017 -0400 Make environ.exp run on all platforms (and create info-program.exp) This has been on my TODO list for a while. There's a really old bug about this (PR testsuite/8595), and there was no reason for environ.exp to be specific for hppa* targets. So this patch removes this constraint, modernizes the testcase, and cleans up some things. Most of the tests remained, and some were rewritten (especially the one that checks if "show environment" works, which is something kind of hard to do). As a bonus, I'm adding a separated info-program.exp file containing all the tests related to "info program" that were present on environ.exp. Tested locally, everything still passes. gdb/testsuite/ChangeLog: 2017-04-28 Sergio Durigan Junior PR testsuite/8595 * gdb.base/environ.exp: Make test available in all architectures. Move bits related to "info program" testing to gdb.base/info-program.exp. Rewrite tests to use the two new procedures mentione below. (test_set_show_env_var) New procedure. (test_set_show_env_var_equal): Likewise. * gdb.base/info-program.exp: New file. commit a93866c8bfd4ad4b32c81e73e6a73aa9d831d350 Author: GDB Administrator Date: Sat Apr 29 00:00:38 2017 +0000 Automatic date update in version.in commit 0749542484129e77a30f1089d6d671197be5035f Author: Yao Qi Date: Fri Apr 28 22:48:42 2017 +0100 Remove cleanup in get_return_value With regcache ctor, we can use it to create local object in get_return_value (), so that the cleanup can be removed. gdb: 2017-04-28 Yao Qi * infcmd.c (get_return_value): Use regcache ctor, and remove cleanup. commit deb1fa3edaf10c65d1f39951779927da955e3a57 Author: Yao Qi Date: Fri Apr 28 22:48:42 2017 +0100 Use tag dispatch regcache ctor in regcache_dup This patch adds a tag dispatch ctor to create read-only regcache from a write-through regcache, also this patch deletes copy ctor and assignment operator. gdb: 2017-04-28 Yao Qi Pedro Alves * regcache.c (regcache::regcache): New tag dispatch ctor. (do_cooked_read): Moved above. (regcache_dup): Use the tag dispatch ctor.. * regcache.h (regcache): Declare ctor, delete copy ctor and assignment operator, remove friend regcache_dup. commit b421c83cb866120ab347d60fda20fb0e2011be8c Author: Yao Qi Date: Fri Apr 28 22:48:42 2017 +0100 Simplify regcache_dup regcache_dup, in fact, is to create a readonly regcache from a non-readonly regcache. This patch adds an assert that src is not readonly. gdb: 2017-04-28 Yao Qi * regcache.c (regcache_dup): Assert !src->m_readonly_p and call method save instead of regcache_cpy. * regcache.h (struct regcache): Make regcache_dup a friend. commit ef79d9a3c6ed1e3ccd466bae76956019a7c5d376 Author: Yao Qi Date: Fri Apr 28 22:48:42 2017 +0100 Class-fy regcache This patch moves regcache declaration to regcache.h, and converts regcache apis to member functions, for example, regcache_invalidate is changed to regcache::invalidate. This patch also add "m_" prefix to these private fields. gdb: 2017-04-28 Yao Qi * regcache.c (struct regcache): Move to regcache.h (regcache::arch): New method. (regcache_get_ptid): Update. (get_regcache_arch): Call arch method. (get_regcache_aspace): Call method aspace. (register_buffer): Change it to method. (regcache_save): Change it to regcache::save. (regcache_restore): Likewise. (regcache_cpy_no_passthrough): Remove the declaration. (regcache_cpy): Call methods restore and cpy_no_passthrough. (regcache_cpy_no_passthrough): Change it to method cpy_no_passthrough. (regcache_register_status): Change it to method get_register_status. (regcache_invalidate): Change it to method invalidate. (regcache_thread_ptid_changed): Use methods ptid and set_ptid. (regcache_raw_update): Change it to method raw_update. (regcache_raw_read): Likewise. (regcache_raw_read_signed): Likewise. (regcache_raw_read_unsigned): Likewise. (regcache_raw_write_signed): Likewise. (regcache_raw_write_unsigned): Likewise. (regcache_cooked_read): Likewise. (regcache_cooked_read_value): Likewise. (regcache_cooked_read_signed): Likewise. (regcache_cooked_read_unsigned): Likewise. (regcache_cooked_write_signed): Likewise. (regcache_cooked_write_unsigned): Likewise. (regcache_raw_set_cached_value): Likewise. (regcache_raw_write): Likewise. (regcache_cooked_write): Likewise. (regcache_xfer_part): Likewise. (regcache_raw_read_part): Likewise. (regcache_raw_write_part): Likewise. (regcache_cooked_read_part): Likewise. (regcache_cooked_write_part): Likewise. (regcache_raw_supply): Likewise. (regcache_raw_collect): Likewise. (regcache_transfer_regset): Likewise. (regcache_supply_regset): Likewise. (regcache_collect_regset): Likewise. (regcache_debug_print_register): Likewise. (enum regcache_dump_what): Move it to regcache.h. (regcache_dump): Change it to method dump. * regcache.h (enum regcache_dump_what): New. (class regcache): New. * target.c (target_fetch_registers): Call method debug_print_register. (target_store_registers): Likewise. commit f8fdb78eafb3f70661f6e4a43beb004dde9e0921 Author: Simon Marchi Date: Fri Apr 28 17:16:18 2017 -0400 Class-ify lm_info_windows This patch makes lm_info_windows a "real" class. It initializes the field and replaces XCNEW/xfree with new/delete. gdb/ChangeLog: * windows-nat.c (struct lm_info_windows): Initialize field. (windows_make_so): Allocate lm_info_windows with new. (windows_free_so): Free lm_info_windows with delete. commit 9ccbfd7bc1b7228d67f2d4ca878224d493918264 Author: Simon Marchi Date: Fri Apr 28 17:16:18 2017 -0400 Class-ify lm_info_darwin This patch makes lm_info_darwin a "real" class. It initializes the field and replaces XCNEW/xfree with new/delete. gdb/ChangeLog: * solib-darwin.c (struct lm_info_darwin): Initialize field. (darwin_current_sos): Allocate lm_info_darwin with new, remove cleanup. (darwin_free_so): Free lm_info_darwin with delete. commit 76e75227c37bc058449a09fe5017eeb40cda0781 Author: Simon Marchi Date: Fri Apr 28 17:16:17 2017 -0400 Class-ify lm_info_svr4 This patch makes lm_info_svr4 a "real" class. It initializes fields, uses bool and replaces XCNEW/xfree with new/delete. The memcpy in svr4_copy_library_list is replaced by a usage of the default copy constructor. gdb/ChangeLog: * solib-svr4.h (struct lm_info_svr4): Initialize fields. : Change type to bool. * solib-svr4.c (lm_info_read): Allocate lm_info_svr4 with new. (svr4_free_so): Free lm_info_svr4 with delete. (svr4_copy_library_list): Replace memcpy with call to copy constructor. (library_list_start_library, svr4_default_sos): Allocate lm_info_svr4 with new. commit 51046d9e60727cd6a4cfeae29a05ce2e1e394dc9 Author: Simon Marchi Date: Fri Apr 28 17:16:16 2017 -0400 Class-ify lm_info_target This patch makes lm_info_target a "real" class. It adds a destructor, uses std::string, initializes the fields and replaces XCNEW/xfree with new/delete. gdb/ChangeLog: * solib-target.c (struct lm_info_target): Add destructor, initialize fields. : Change type to std::string. (library_list_start_library): Allocate lm_info_target with new. (solib_target_free_library_list): Free lm_info_target with delete. (solib_target_current_sos): Adapt to std::string. (solib_target_free_so): Free lm_info_target with delete. commit 4023ae762ed9b52e4925242b705d0b3a50f6ed13 Author: Simon Marchi Date: Fri Apr 28 17:16:16 2017 -0400 Class-ify lm_info_frv This patches makes lm_info_frv a "real" class. It adds a destructor, initializes the fields and replaces XCNEW/xfree with new/delete. gdb/ChangeLog: * solib-frv.c (struct lm_info_frv): Add destructor, initialize fields. (frv_current_sos): Allocate lm_info_frv with new. (frv_relocate_main_executable): Free lm_info_frv with delete, allocate with new. (frv_clear_solib, frv_free_so): Free lm_info_frv with delete. commit af43057bafa7260dbcc453d2acc47eb63b974c50 Author: Simon Marchi Date: Fri Apr 28 17:16:15 2017 -0400 Fix indentation of lm_info_frv This patch fixes the indentation of lm_info_frv, so that the real changes of the following patch are not lost in the reformatting. gdb/ChangeLog: * solib-frv.c (struct lm_info_frv): Fix indentation. commit b091120773f8a740065b6449617cfbf1e0e789f4 Author: Simon Marchi Date: Fri Apr 28 17:16:14 2017 -0400 Class-ify lm_info_dsbt This patches makes lm_info_dsbt a "real" class. It introduces a destructor, initializes the field and replaces XCNEW/xfree with new/delete. gdb/ChangeLog: * solib-dsbt.c (struct lm_info_dsbt): Add destructor, initialize map field. (dsbt_current_sos): Allocate lm_info_dsbt with new. (dsbt_relocate_main_executable): Free lm_info_dsbt with delete and allocate with new. (dsbt_clear_solib, dsbt_free_so): Free lm_info_dsbt with delete. commit 6c401f72e979ddd7e2f890dcc88f93f683233d74 Author: Simon Marchi Date: Fri Apr 28 17:16:14 2017 -0400 Class-ify lm_info_aix This patch makes lm_info_aix a "real" class. It uses std::string, initializes fields in-class and replaces XCNEW/xfree with new/delete. The solib_aix_new_lm_info can be replaced by using the default copy constructor. gdb/ChangeLog: * solib-aix.c (struct lm_info_aix): Initialize fields in-class. : Change type to std::string. (solib_aix_new_lm_info, solib_aix_xfree_lm_info): Remove. (library_list_start_library): Allocate lm_info_aix with new. (solib_aix_free_library_list, solib_aix_free_so): Free with delete. (solib_aix_current_sos): Adapt to std::string, copy lm_info_aix with copy constructor. commit d0e449a1865c741c5e0c9d43a7d61a0621163aa7 Author: Simon Marchi Date: Fri Apr 28 17:16:13 2017 -0400 Make various lm_info implementations inherit from a base class The lm_info structure is used to store target specific information about mapped libraries. It is currently defined as an opaque type in solist.h and a pointer to it is included in solist, the target-agnostic object representing a loaded shared library. Multiple targets define their own implementation of lm_info. In anticipation of using C++ stuff (e.g. vector) in the lm_info objects, we first need to avoid different definitions of classes with the same name (which violates the one definition rule). This patch does it by having a base class (lm_info_base) from which all the specific lm_info derive. Each implementation is renamed to something that makes sense (e.g. lm_info_aix for AIX). The next logical step would probably be to derive directly from so_list, it's not really obvious, so I'll keep that for another day. One special case is the Neutrino (nto) support. It uses SVR4-style libraries, but overrides some methods. To do that, it needed to have its own copy of SVR4's lm_info structure in nto-tdep.c, because it was just not possible to put it in solib-svr4.h and include that file. Over time, that copy got out of sync, which is still the case today. I can only assume that the lm_addr function in nto-tdep.c is broken right now. The first field of the old lm_info was a pointer (gdb_byte *), whereas in the new lm_info it's an address in the inferior (CORE_ADDR). Trying to use that field today probably results in a crash. With this refactor, it's now possible to put lm_info_svr4 in solib-svr4.h and just include it. I have adapted the code in nto-tdep.c to that it builds, but it's probably not correct. Since I don't have the knowledge nor setup to try this on Neutrino, somebody else would have to fix it. But I am confident that I am not making things worse than they already are. gdb/ChangeLog: * solist.h (struct lm_info): Remove. (struct lm_info_base): New class. (struct so_list) : Change type to lm_info_base *. * nto-tdep.c (struct lm_info): Remove. (lm_addr): Adjust. * solib-aix.c (struct lm_info): Rename to ... (struct lm_info_aix): ... this. Extend lm_info_base. (lm_info_p): Rename to ... (lm_info_aix_p): ... this, and adjust. (solib_aix_new_lm_info, solib_aix_xfree_lm_info, solib_aix_parse_libraries, library_list_start_library, solib_aix_free_library_list, solib_aix_parse_libraries, solib_aix_get_library_list, solib_aix_relocate_section_addresses, solib_aix_free_so, solib_aix_get_section_offsets, solib_aix_solib_create_inferior_hook, solib_aix_current_sos): Adjust. (struct solib_aix_inferior_data) : Adjust. * solib-darwin.c (struct lm_info): Rename to ... (struct lm_info_darwin): ... this. Extend lm_info_base. (darwin_current_sos, darwin_relocate_section_addresses): Adjust. * solib-dsbt.c (struct lm_info): Rename to ... (struct lm_info_dsbt): ... this. Extend lm_info_base. (struct dsbt_info) Date: Fri Apr 28 17:16:12 2017 -0400 Standardize darwin's lm_info Darwin's lm_info structure is used a little bit differently than the other solib implementations. The other implementations first allocate an so_list object, then instanciate their specific lm_info structure, and assign it to so_list::lm_info. The Darwin implementation allocates both at the same time (darwin_so_list). This patch changes it to be like the others, so that we'll be able to do some generalizations later. gdb/ChangeLog: * solib-darwin.c (struct darwin_so_list): Remove. (darwin_current_sos): Allocate an so_list object instead of a darwin_so_list, separately allocate an lm_info object. (darwin_free_so): Free lm_info. commit 1670f9c1546818c4ffe02e8f460df1c1c4b1601d Author: H.J. Lu Date: Fri Apr 28 12:42:05 2017 -0700 x86: Add run-time tests for -mtls-dialect=gnu2 * testsuite/config/default.exp (GNU2_CFLAGS): New. Set to -mtls-dialect=gnu2 if target compiler supports it. * testsuite/ld-i386/tls.exp: Run -mtls-dialect=gnu2 tests. * testsuite/ld-x86-64/tls.exp: Likewise. * testsuite/ld-i386/tlsdesc1a.c: New file. * testsuite/ld-i386/tlsdesc1b.c: Likewise. * testsuite/ld-x86-64/tlsdesc1a.c: Likewise. * testsuite/ld-x86-64/tlsdesc1b.c: Likewise. commit d6f48aed23d1004a4ed8ab3b2742b0bf7c838c1c Author: H.J. Lu Date: Fri Apr 28 12:29:29 2017 -0700 ELF: Add run-time tests for -z now * testsuite/ld-elf/shared.exp: Add run-time tests for -z now. * testsuite/ld-i386/tls.exp: Likewise. * testsuite/ld-ifunc/ifunc.exp: Likewise. * testsuite/ld-x86-64/tls.exp: Likewise. commit 428544e8ae6252a615a3100889f3df7d2c5483c4 Author: John Baldwin Date: Fri Apr 28 09:34:52 2017 -0700 Consistently use fprintf_filtered when displaying MIPS registers. One line was using printf_filtered instead of fprintf_filtered to the requested file. gdb/ChangeLog: * mips-tdep.c (print_gp_register_row): Replace printf_filtered with fprintf_filtered. commit 750eaa47f10f48d19aacbec74ab6867da0164677 Author: H.J. Lu Date: Fri Apr 28 07:26:45 2017 -0700 x86: Check plt_got before using .plt.got Since the GOT procedure linkage table is supported only if plt_got isn't NULL, we need to check plt_got before using it. * elf32-i386.c (elf_i386_allocate_dynrelocs): Check plt_got before using .plt.got. * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise. commit 4621115fe529869e938dca605bb90190ea52316a Author: Yao Qi Date: Fri Apr 28 14:43:13 2017 +0100 Add constructor and destructor to regcache This patch adds ctor and dtor to regcache. gdb: 2017-04-28 Yao Qi * regcache.c (regcache::regcache): New function. (regcache::~regcache): New function. (regcache_xmalloc_1): Remove. (regcache_xmalloc): Call new regcache. (regcache_xfree): Call delete regcache. (get_thread_arch_aspace_regcache): Call new regcache. commit b06b2c92c06cf100f259f218337d007ee0b1c884 Author: Nick Clifton Date: Fri Apr 28 12:09:14 2017 +0100 Fix off by one error when checking for empty note names. PR binutils/21439 * readelf.c (print_gnu_build_attribute_name): Allow for an empty name field. commit 4e3afec278d1fb55b983751d02119f65566bd094 Author: Nick Clifton Date: Fri Apr 28 11:21:53 2017 +0100 Fix heap-buffer address violation when reading version data from a corrupt binary. PR binutils/21437 * readelf.c (process_version_sections): Check for underflow when computing the start address of the auxillary version data. commit d949ff5607b9f595e0eed2ff15fbe5eb84eb3a34 Author: Nick Clifton Date: Fri Apr 28 10:28:04 2017 +0100 Fix heap-buffer overflow bugs caused when dumping debug information from a corrupt binary. PR binutils/21438 * dwarf.c (process_extended_line_op): Do not assume that the string extracted from the section is NUL terminated. (fetch_indirect_string): If the string retrieved from the section is not NUL terminated, return an error message. (fetch_indirect_line_string): Likewise. (fetch_indexed_string): Likewise. commit 339053c29abac25e5f86a1ccccd4e8e3b2d362df Author: Yao Qi Date: Fri Apr 28 09:50:51 2017 +0100 Use ptid method lwp in mips_linux_new_thread gdb: 2017-04-28 Yao Qi * mips-linux-nat.c (mips_linux_new_thread): Use ptid method lwp instead of ptid_get_lwp. commit 7974a6050b6e2c44722a533e2d5d9131e7db00ff Author: Yao Qi Date: Fri Apr 28 09:33:16 2017 +0100 [MIPS] Use lwpid from lwp_info instead of inferior_ptid RAJESH reported that GDB gets "Couldn't write debug register: No such process." on mips64 when GDB attaches to a multi threaded application. Looks GDB nows PTRACE_GET_WATCH_REGS for inferior_ptid but PTRACE_SET_WATCH_REGS for lwp->ptid, they may be different. gdb: 2017-04-28 Yao Qi * mips-linux-nat.c (mips_linux_new_thread): Get lwpid from lwp_info instead of getting from inferior_ptid. commit 343b374c61f793f745b820c3cf61f69186566b18 Author: GDB Administrator Date: Fri Apr 28 00:00:34 2017 +0000 Automatic date update in version.in commit e15c3eb45bdc8bd5717fd5ceddcc30c3de07b58f Author: Keith Seitz Date: Thu Apr 27 15:55:26 2017 -0700 Fix overload resolution involving rvalue references and cv qualifiers. The following patch fixes several outstanding overload resolution problems with rvalue references and cv qualifiers in the test suite. The tests for these problems typically passed with one compiler version and failed with another. This behavior occurs because of the ordering of the overloaded functions in the debug info. So the first best match "won out" over the a subsequent better match. One of the bugs addressed by this patch is the failure of rank_one_type to account for type equality of two overloads based on CV qualifiers. This was leading directly to problems evaluating rvalue reference overload quality, but it is also highlighted in gdb.cp/oranking.exp, where two test KFAIL as a result of this shortcoming. I found the overload resolution code committed with the rvalue reference patch (f9aeb8d49) needlessly over-complicated, and I have greatly simplified it. This fixes some KFAILing tests in gdb.exp/rvalue-ref-overload.exp. gdb/ChangeLog * gdbtypes.c (LVALUE_REFERENCE_TO_RVALUE_BINDING_BADNESS) DIFFERENT_REFERENCE_TYPE_BADNESS): Remove. (CV_CONVERSION_BADNESS): Define. (rank_one_type): Remove overly restrictive rvalue reference rank checks. Add cv-qualifier checks and subranks for type equality. * gdbtypes.h (REFERENCE_CONVERSION_RVALUE, REFERENCE_CONVERSION_CONST_LVALUE, CV_CONVERSION_BADNESS, CV_CONVERSION_CONST, CV_CONVERSION_VOLATILE): Declare. gdb/testsuite/ChangeLog * gdb.cp/oranking.cc (test15): New function. (main): Call test15 and declare additional variables for testing. * gdb.cp/oranking.exp: Remove kfail status for "p foo4(&a)" and "p foo101('abc')" tests. * gdb.cp/rvalue-ref-overloads.exp: Remove kfail status for "lvalue reference overload" test. * gdb.cp/rvalue-ref-params.exp: Remove kfail status for "print value of f1 on Child&& in f2" test. commit 5b66fac4bad619766fb1a5f5179c08b67d48a8c5 Author: H.J. Lu Date: Thu Apr 27 15:24:08 2017 -0700 x86-64: Use "=" instead of "+=" to update 0 Use if (htab->elf.splt->size == 0) htab->elf.splt->size = GET_PLT_ENTRY_SIZE (output_bfd); instead of if (htab->elf.splt->size == 0) htab->elf.splt->size += GET_PLT_ENTRY_SIZE (output_bfd); * elf64-x86-64.c (elf_x86_64_size_dynamic_sections): Use "=" instead of "+=" to update 0. commit 72bc1d246686ff38ef01f5a35769ebdbe39f023c Author: Simon Marchi Date: Thu Apr 27 17:03:20 2017 -0400 Add missing incref when creating Inferior Python object The test py-inferior.exp fails when using a debug build of Python 3.6. I don't see it failing with my system's default Python, but it might be related to the different memory allocation scheme used when doing a build with pydebug. The issue is that we are missing a Py_INCREF in inferior_to_inferior_object. The PyObject_New function initializes the object with a refcount of 1. If we assume that this refcount corresponds to the reference we are returning, then we are missing an incref for the reference in the inferior data. The counterpart for the incref that corresponds to the reference in the inferior data is in py_free_inferior, in the form the gdbpy_ref instance. Here's how I can get it to crash (with some debug output): $ ./gdb -nx -ex "set debug python 1" (gdb) add-inferior Added inferior 2 (gdb) python infs = gdb.inferiors() Creating Python Inferior object inf = 1 Creating Python Inferior object inf = 2 (gdb) remove-inferiors 2 py_free_inferior inf = 2 infpy_dealloc inf = (gdb) python infs = None Fatal Python error: Objects/tupleobject.c:243 object at 0x7f9cf1a568d8 has negative ref count -1 Current thread 0x00007f9cf1b68780 (most recent call first): File "", line 1 in [1] 408 abort (core dumped) ./gdb -nx -ex "set debug python 1" After having created the inferiors object, their refcount is 1 (which comes from PyObject_New), but it should be two. The gdb inferior object has a reference and the "infs" list has a reference. When invoking remove-inferiors, py_free_inferior gets called. It does the decref that corresponds to the reference that the gdb inferior object kept. At this moment, the refcount drops to 0 and the object gets deallocated, even though the "infs" list still has a reference. When we set "infs" to None, Python tries to decref the already zero refcount and the assert triggers. With this patch, it looks better: (gdb) add-inferior Added inferior 2 (gdb) python infs = gdb.inferiors() Creating Python Inferior object inf = 1 Creating Python Inferior object inf = 2 (gdb) remove-inferiors 2 py_free_inferior inf = 2 (gdb) python infs = None infpy_dealloc inf = gdb/ChangeLog: * python/py-inferior.c (inferior_to_inferior_object): Increment reference count when creating the object. commit de9a3c4285fad1914929ee304ddaa26e76af8031 Author: H.J. Lu Date: Thu Apr 27 13:55:31 2017 -0700 x86: Create dynamic sections in create_dynamic_sections This patch creates dynamic sections in i386/x86-64 create_dynamic_sections instead of creating them on demend. Linker will strip them if they are empty. It changes order in x86-64 .eh_frame section. The extra DW_CFA_nop paddings is due to https://sourceware.org/bugzilla/show_bug.cgi?id=21441 bfd/ * elf32-i386.c (elf_i386_create_dynamic_sections): Create the .plt.got section here. (elf_i386_check_relocs): Don't create the .plt.got section. * elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Create the .plt.got and .plt.bnd sections here. (elf_x86_64_check_relocs): Don't create the .plt.got nor .plt.bnd sections. ld/ * testsuite/ld-x86-64/pr21038a.d: Update DW_CFA_nop paddings in .eh_frame section. * testsuite/ld-x86-64/pr21038c.d: Update .eh_frame order. commit da3d25afa26476bf24247b8696fd00ab31f39db9 Author: H.J. Lu Date: Thu Apr 27 09:32:35 2017 -0700 Remove has_bnd_reloc from elf_x86_64_link_hash_entry has_bnd_reloc was added to elf_x86_64_link_hash_entry track BND relocations by commit 0ff2b86e7c14177ec7f9e1257f8e697814794017 Author: H.J. Lu Date: Wed Nov 20 09:01:04 2013 -0800 Create the second PLT for BND relocations Since BND relocations have been deprecated by commit d258b828287a863376af60a1ef7ceafbccc83d93 Author: Igor Zamyatin Date: Tue Nov 18 10:52:36 2014 +0300 Add -z bndplt to generate BND prefix in PLT entries This patch removes has_bnd_reloc from elf_x86_64_link_hash_entry and checks bndplt instead of has_bnd_reloc. * elf64-x86-64.c (elf_x86_64_link_hash_entry): Remove has_bnd_reloc. (elf_x86_64_link_hash_newfunc): Don't clear has_bnd_reloc. (elf_x86_64_copy_indirect_symbol): Don't copy has_bnd_reloc. (elf_x86_64_check_relocs): Don't set has_bnd_reloc. (elf_x86_64_finish_dynamic_symbol): Check bndplt instead of has_bnd_reloc. Remove has_bnd_reloc commit fba37edd96c8dc65a63bd5b4fef5366de45b165a Author: H.J. Lu Date: Thu Apr 27 09:07:23 2017 -0700 Change _bfd_elf_link_setup_gnu_properties to bfd * Change setup_gnu_properties to return the first relocatable ELF input with GNU properties so that a backend can make decision based on GNU properties. * elf-bfd.h (elf_backend_data): Change setup_gnu_properties to return bfd *. (_bfd_elf_link_setup_gnu_properties): Return bfd *. * elf-properties.c (_bfd_elf_link_setup_gnu_properties): Return the first relocatable ELF input with GNU properties. commit 1f78f649e868979d36490d7c2ea0b3d41abc5ec6 Author: H.J. Lu Date: Thu Apr 27 08:55:36 2017 -0700 i386: Simplify VxWorks for non-PIC Change if (PIC) { #1 } else { #2 if (VxWorks) { #3 } } #4 if (VxWorks && !PIC) { #5 } to #4 if (PIC) { #1 } else { #2 if (VxWorks) { #3 #5 } } * elf32-i386.c (elf_i386_finish_dynamic_sections): Simplify VxWorks for non-PIC. commit 55bcecda5703eb4647165cb3ddb86aed63fd44d2 Author: Ulrich Weigand Date: Thu Apr 27 15:57:08 2017 +0200 Read corrrect auxiliary entry in AIX Fix handling of XCOFF function auxiliary entries, in particular when the xlc -qfuncsect or gcc -ffunction-sections compiler option is used in AIX. Also handle C_WEAKEXT storage class. gdb/ 2016-10-21 Sangamesh Mallayya Ulrich Weigand * xcoffread.c (read_xcoff_symtab): Read correct function auxiliary entry if xlc -qfuncsect or gcc -ffunction-sections compiler option is used in AIX. (read_xcoff_symtab): Handle C_WEAKEXT storage class. (process_xcoff_symbol): Likewise. (scan_xcoff_symtab): Likewise. Signed-off-by: Ulrich Weigand commit 14f72d45a22f25f6d00a62fc03bcf9827df226f5 Author: Maciej W. Rozycki Date: Thu Apr 27 02:25:33 2017 +0100 MIPS16/GAS: Factor out duplicate symbol value conversion code Factor out and consolidate duplicate section-relative to PC-relative symbol value conversion in `mips16_extended_frag' and `md_convert_frag' used for MIPS16 relaxation, observing that the final calculation in the latter function implies `stretch == 0'. Sanitize the formatting of code moved. gas/ * config/tc-mips.c (mips16_pcrel_val): New function, factored out from... (mips16_extended_frag): ... here. (md_convert_frag): Use `mips16_pcrel_val' rather than repeated code in MIPS16 relaxation, with `stretch' hardcoded to 0. commit 1425c41dcd68350d9be9670910c547cc7ab91e0e Author: Maciej W. Rozycki Date: Thu Apr 27 02:13:21 2017 +0100 MIPS16/GAS: Rename the LONG_BRANCH relaxation flag Following commit 177b4a6ad004 ("infinite loop in mips16 assembler relaxation"), the LONG_BRANCH flag used in MIPS16 relaxation has lost its use for branches. Complement commit 88a7ef168927 ("MIPS16/GAS: Restore unsupported relocation diagnostics") then, which has removed the remains of code deactivated by the former commit, and rename the flag to ALWAYS_EXTENDED, more accurately reflecting its current use to select the extended form of PC-relative ADDIU, DADDIU, LD and LW instructions. gas/ * config/tc-mips.c (RELAX_MIPS16_LONG_BRANCH): Rename to... (RELAX_MIPS16_ALWAYS_EXTENDED): ... this. (RELAX_MIPS16_MARK_LONG_BRANCH): Rename to... (RELAX_MIPS16_MARK_ALWAYS_EXTENDED): ... this. (RELAX_MIPS16_CLEAR_LONG_BRANCH): Rename to... (RELAX_MIPS16_CLEAR_ALWAYS_EXTENDED): ... this. (mips16_extended_frag): Adjust accordingly. commit 5c99fcf8031bcf96f2c948e9fc5d3b03c97f631a Author: Alan Hayward Date: Thu Apr 27 11:38:14 2017 +0100 Remove some MAX_REGISTER_SIZE uses in ia64-tdep.c gdb/ * ia64-tdep.c (examine_prologue): Use get_frame_register_unsigned. (ia64_sigtramp_frame_prev_register): Use read_memory_unsigned_integer. (ia64_access_reg): Use get_frame_register_unsigned. (ia64_access_rse_reg): Likewise. (ia64_libunwind_frame_prev_register): Likewise. commit f2d830a50def7a00a911620a3e9c7d920e5ef0f0 Author: Alan Modra Date: Thu Apr 27 12:20:10 2017 +0930 Tidy S_FORCE_RELOC Separate out symbol flag reasons from section reasons to force a reloc. Yes, this adds another section test to the local symbol case too. * symbols.c (S_FORCE_RELOC): Separate section and symbol tests. commit 76c20d54ca5042e11af9ddf5723cc24cf47736ec Author: Alan Modra Date: Thu Apr 27 12:03:39 2017 +0930 Constify elf_backend_eh_frame_address_size * elf-bfd.h (struct elf_backend_data): Make asection param of elf_backend_eh_frame_address_size const. (_bfd_elf_eh_frame_address_size): Likewise. * elf32-m32c.c (_bfd_m32c_elf_eh_frame_address_size): Likewise. * elf32-msp430.c (elf32_msp430_eh_frame_address_size): Likewise. * elfxx-mips.c (_bfd_mips_elf_eh_frame_address_size): Likewise. * elfxx-mips.h (_bfd_mips_elf_eh_frame_address_size): Likewise. * elf-eh-frame.c (_bfd_elf_eh_frame_address_size): Likewise. (next_cie_fde_offset): Constify params. (offset_adjust, adjust_eh_frame_local_symbols): Likewise. commit d7153c4ac333c9127c18efcf184607d368bb142d Author: Alan Modra Date: Thu Apr 27 11:08:14 2017 +0930 Edit .eh_frame symbols Experimental support for moving symbols defined in .eh_frame as their CIEs/FDEs are edited or merged. * elf-bfd.h (struct eh_cie_fde): Add aug_str_len and aug_data_len. (_bfd_elf_adjust_eh_frame_global_symbol): Declare. * elf-eh-frame.c (_bfd_elf_parse_eh_frame): Set aug_str_len and aug_data_len. (offset_adjust): New function. (_bfd_elf_adjust_eh_frame_global_symbol): Likewise. (adjust_eh_frame_local_symbols): Likewise. (_bfd_elf_discard_section_eh_frame): Call adjust_eh_frame_local_symbols after changing anything. Return true if anything changed. * elflink.c (bfd_elf_discard_info): If .eh_frame changed, call _bfd_elf_adjust_eh_frame_global_symbol for globals. commit 641338d8e9b62bde9672f13f0dca2324b61e46e2 Author: Alan Modra Date: Thu Apr 27 11:06:33 2017 +0930 Clear dynstr_index when forcing symbols local This is really just cosmetic, but it does protect a little from accidentally reading a stale value. * elflink.c (_bfd_elf_link_hash_hide_symbol): Clear dynstr_index when force_local. commit 21d68fcd0c2f9113369d860ee1e5841bfacc35ff Author: Alan Modra Date: Thu Apr 27 09:19:26 2017 +0930 PowerPC undefweak handling This patch fixes a number of cases where -z nodynamic-undefined-weak was not effective in preventing dynamic relocations or linkage stubs. * elf32-ppc.c (UNDEFWEAK_NO_DYNAMIC_RELOC): Define. (ppc_elf_select_plt_layout, ppc_elf_tls_setup): Use it. (ppc_elf_adjust_dynamic_symbol, allocate_dynrelocs): Likewise. (ppc_elf_relocate_section): Likewise. Delete silly optimisation for undef and undefweak dyn_relocs. * elf64-ppc.c (UNDEFWEAK_NO_DYNAMIC_RELOC): Define. (ppc64_elf_adjust_dynamic_symbol, ppc64_elf_tls_setup): Use it. (allocate_got, allocate_dynrelocs): Likewise. (ppc64_elf_relocate_section): Likewise. commit a61d92b7bd4da998dd5d73e9205b4871f7c4825d Author: Alan Modra Date: Thu Apr 27 09:08:09 2017 +0930 [GOLD] testsuite/plugin_section_order.c fix * testsuite/plugin_section_order.c (onload): Add missing break. commit 7a81a73b2e5d00b76e15d97db7b8f0c9809ba1b7 Author: GDB Administrator Date: Thu Apr 27 00:00:56 2017 +0000 Automatic date update in version.in commit ce8ad8721313d288a05a95b62d95ca43db584ebb Author: Maciej W. Rozycki Date: Thu Apr 27 00:47:15 2017 +0100 MIPS/GAS: Fix `.option picX' handling with relaxation Correct the handling of `.option pic0' and `.option pic2' GAS pseudo-ops in relaxation and use the setting of `mips_pic' (which these directives control) as at the time a relaxed frag has been created rather than the final `mips_pic' setting at the end of the source file processed. To do so record whether `mips_pic' is NO_PIC or not in the frag itself and use this information throughout relaxation instead of `mips_pic' to decide which of NO_PIC or SVR4_PIC to produce machine code for, fixing code generation and removing a possible fatal failure reproducible with: $ as -32 --relax-branch -o option-pic-relax-3.o option-pic-relax-3.s option-pic-relax-3.s: Assembler messages: option-pic-relax-3.s:7: Warning: relaxed out-of-range branch into a jump option-pic-relax-3.s: Internal error in cvt_frag_to_fill at .../gas/write.c:490. Please report this bug. $ using the test source included, due to a buffer overrun in filling the variable part of a frag. Likewise use the `fx_tcbit2' flag of a BFD_RELOC_16_PCREL_S2 fixup to handle the simple case of substituting an out of range unconditional branch with an equivalent absolute jump in NO_PIC code. Retain the current way of VXWORKS_PIC use, which commit 41a1578ed17c ("MIPS/GAS: Sanitize `.option picX' pseudo-op") has forbidden the use of `.option picX' with. gas/ * config/tc-mips.c (RELAX_ENCODE): Add `PIC' flag. (RELAX_PIC): New macro. (RELAX_USE_SECOND, RELAX_SECOND_LONGER, RELAX_NOMACRO) (RELAX_DELAY_SLOT, RELAX_DELAY_SLOT_16BIT) (RELAX_DELAY_SLOT_SIZE_FIRST, RELAX_DELAY_SLOT_SIZE_SECOND): Shift bits. (RELAX_BRANCH_ENCODE): Add `pic' flag. (RELAX_BRANCH_UNCOND, RELAX_BRANCH_LIKELY, RELAX_BRANCH_LINK) (RELAX_BRANCH_TOOFAR): Shift bits. (RELAX_BRANCH_PIC): New macro. (RELAX_MICROMIPS_ENCODE): Add `pic' flag. (RELAX_MICROMIPS_PIC): New macro. (RELAX_MICROMIPS_UNCOND, RELAX_MICROMIPS_COMPACT) (RELAX_MICROMIPS_LINK, RELAX_MICROMIPS_NODS) (RELAX_MICROMIPS_RELAX32): Shift bits. (relax_close_frag): Pass `mips_pic' setting to RELAX_ENCODE. (append_insn): Pass `mips_pic' setting to RELAX_BRANCH_ENCODE and RELAX_MICROMIPS_ENCODE, and record it in `fx_tcbit2' of the first fixup created. (md_apply_fix) : Use `fx_tcbit2' of the fixup processed rather than `mips_pic' in choosing to relax an out of range branch to a jump. (relaxed_branch_length): Use the `pic' flag of the relaxed frag rather than `mips_pic'. (relaxed_micromips_32bit_branch_length): Likewise. (md_estimate_size_before_relax): Likewise. (md_convert_frag): Likewise. * testsuite/gas/mips/option-pic-relax-0.d: New test. * testsuite/gas/mips/option-pic-relax-1.d: New test. * testsuite/gas/mips/option-pic-relax-2.d: New test. * testsuite/gas/mips/option-pic-relax-3.d: New test. * testsuite/gas/mips/option-pic-relax-3a.d: New test. * testsuite/gas/mips/option-pic-relax-4.d: New test. * testsuite/gas/mips/option-pic-relax-5.d: New test. * testsuite/gas/mips/option-pic-relax-2.l: New stderr output. * testsuite/gas/mips/option-pic-relax-3.l: New stderr output. * testsuite/gas/mips/option-pic-relax-4.l: New stderr output. * testsuite/gas/mips/option-pic-relax-5.l: New stderr output. * testsuite/gas/mips/option-pic-relax-0.s: New test source. * testsuite/gas/mips/option-pic-relax-1.s: New test source. * testsuite/gas/mips/option-pic-relax-2.s: New test source. * testsuite/gas/mips/option-pic-relax-3.s: New test source. * testsuite/gas/mips/option-pic-relax-4.s: New test source. * testsuite/gas/mips/option-pic-relax-5.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests. commit 97d343d40012b1030f1fd219f91efcab180fb3ef Author: H.J. Lu Date: Wed Apr 26 15:34:00 2017 -0700 x86: Add DT_PLTRELSZ/DT_PLTREL/DT_JMPREL for PLT relocation x86, PLT relocation may contain R_386_TLS_DESC or R_X86_64_TLSDESC even though there is no real PLT. We need to add DT_PLTRELSZ, DT_PLTREL and DT_JMPREL if there is a .rel.plt/.rela.plt section. bfd/ * elf32-i386.c (elf_i386_size_dynamic_sections): Alwasys add DT_PLTRELSZ, DT_PLTREL and DT_JMPREL for .rel.plt section. * elf64-x86-64.c (elf_x86_64_size_dynamic_sections): Alwasys add DT_PLTRELSZ, DT_PLTREL and DT_JMPREL for .rela.plt section. ld/ * testsuite/ld-i386/tlsdesc2.d: New test. * testsuite/ld-x86-64/tlsdesc2.d: Likewise. commit 04b31182bf3f8a1a76e995bdfaaaab4c009b9cb2 Author: Nick Clifton Date: Wed Apr 26 16:30:22 2017 +0100 Fix a seg-fault when processing a corrupt binary containing reloc(s) with negative addresses. PR binutils/21434 * reloc.c (bfd_perform_relocation): Check for a negative address in the reloc. commit d21f3ddb0d5f95aff5c769ae283ce5522262f48d Author: Nick Clifton Date: Wed Apr 26 15:45:41 2017 +0100 Fix PR number in ChangeLog comment. commit 740a463062bd5d1641bdfb639295dafe89341b9b Author: Nick Clifton Date: Wed Apr 26 15:42:03 2017 +0100 Fix invocation of stat() on a NULL pointer. PR binutils/21407 * bucomm.c (get_file_size): Return -1 if file_name is NULL. * ar.c (main): Fail with usage() invocation if no file names are provided. commit 3e6b644558f941d3fe482e15efbc53d8f39ef8b7 Author: Nick Clifton Date: Wed Apr 26 14:23:26 2017 +0100 Improve decoding of corrupt/unrecognised gnu build attribute notes. * readelf.c (process_section_headers): Warn about overlarge sections. (print_gnu_build_attribute_name): Print the number of unrecognised note types. Fix formatting in the presence of errors. (testsuite/binutils-all/note-2-32.s): Fix encoding of numeric notes. (testsuite/binutils-all/note-2-64.s): Likewise. commit b41c5a85a734b9ca813d4a314b66ef4b4b4d1b11 Author: Jiong Wang Date: Wed Apr 26 14:05:03 2017 +0100 [gdbarch] New method "execute_dwarf_cfa_vendor_op" and migrate SPARC to it Recently a feature called "return address signing" has been added to GCC to prevent stack smash stack on AArch64. For details please refer: https://gcc.gnu.org/ml/gcc-patches/2017-01/msg00376.html GDB needs to be aware of this feature so it can restore the original return address which is critical for unwinding. On compiler side, whenever return address, i.e. LR register, is mangled or restored by hardware instruction, compiler is expected to generate a DW_CFA_AARCH64_negate_ra_state to toggle return address signing status. DW_CFA_AARCH64_negate_ra_state is using the same CFI number and therefore need to be multiplexed with DW_CFA_GNU_window_save which was designed for SPARC. A new gdbarch method "execute_dwarf_cfa_vendor_op" is introduced by this patch. It's parameters has been restricted to those only needed by SPARC and AArch64 for multiplexing DW_CFA_GNU_window_save which is a CFI operation takes none operand. Should any further DWARF CFI operation want to be multiplexed in the future, the parameter list can be extended. Below is the current function prototype. typedef int (gdbarch_execute_dwarf_cfa_vendor_op_ftype) (struct gdbarch *gdbarch, gdb_byte op, struct dwarf2_frame_state *fs); DW_CFA_GNU_window_save support for SPARC is migrated to this new gdbarch method by this patch. gdb/ * gdbarch.sh: New gdbarch method execute_dwarf_cfa_vendor_op. * gdbarch.c: Regenerated. * gdbarch.h: Regenerated. * dwarf2-frame.c (dwarf2_frame_state_alloc_regs): Made the visibility external. (execute_cfa_program): Call execute_dwarf_cfa_vendor_op for CFI between DW_CFA_lo_user and DW_CFA_high_user inclusive. (enum cfa_how_kind): Move to ... (struct dwarf2_frame_state_reg_info): Likewise. (struct dwarf2_frame_state): Likewise. * dwarf2-frame.h: ... here. (dwarf2_frame_state_alloc_regs): New declaration. * sparc-tdep.c (sparc_execute_dwarf_cfa_vendor_op): New function. (sparc32_gdbarch_init): Register execute_dwarf_cfa_vendor_op hook. commit 23ec1e32b1ab714649a7c25e49b5d721fe3bd3db Author: Maciej W. Rozycki Date: Mon Apr 24 20:15:31 2017 +0100 PR ld/21334: Always call `_bfd_elf_link_renumber_dynsyms' if required Complement commit e17b0c351f0b ("MIPS/BFD: Respect the ELF gABI dynamic symbol table sort requirement") and correct an inconsistency in dynamic symbol accounting data causing an assertion failure in the MIPS backend: ld: BFD (GNU Binutils) 2.28.51.20170330 assertion fail ../../binutils-gdb/bfd/elfxx-mips.c:3860 in the course of making a GOT entry in a static binary to satisfy a GOT relocation present in input, due to the local dynamic symbol count not having been established. To do so let backends request `_bfd_elf_link_renumber_dynsyms' to be always called, rather than where a dynamic binary is linked only, and then make this request in the MIPS backend. bfd/ PR ld/21334 * elf-bfd.h (elf_backend_data): Add `always_renumber_dynsyms' member. * elfxx-target.h [!elf_backend_always_renumber_dynsyms] (elf_backend_always_renumber_dynsyms): Define. (elfNN_bed): Initialize `always_renumber_dynsyms' member. * elfxx-mips.h (elf_backend_always_renumber_dynsyms): Define. * elflink.c (bfd_elf_size_dynamic_sections): Also call `_bfd_elf_link_renumber_dynsyms' if the backend has requested it. (bfd_elf_size_dynsym_hash_dynstr): Likewise. ld/ PR ld/21334 * testsuite/ld-mips-elf/pr21334.dd: New test. * testsuite/ld-mips-elf/pr21334.gd: New test. * testsuite/ld-mips-elf/pr21334.ld: New test linker script. * testsuite/ld-mips-elf/pr21334.s: New test source. * testsuite/ld-mips-elf/mips-elf.exp: Run the new tests. commit c46cec3a8cfe02fbe0f6c67ba53abc5369c5c659 Author: Maciej W. Rozycki Date: Mon Apr 24 20:13:28 2017 +0100 ELF/BFD: Limit `_bfd_elf_link_renumber_dynsyms' call in section GC Consistently call `_bfd_elf_link_renumber_dynsyms' only if linking a dynamic binary, complementing code in `bfd_elf_size_dynsym_hash_dynstr' and commit ccabcbe51e85 ("New attempt at fixing MIPS --gc-sections et al."), . bfd/ * elflink.c (bfd_elf_size_dynamic_sections): Only call `_bfd_elf_link_renumber_dynsyms' after section GC if dynamic sections have been created. commit bbdd9a6894d7875407da59d490faf5588163d21c Author: Maciej W. Rozycki Date: Mon Apr 24 20:41:33 2017 +0100 MIPS/readelf: With `-A' also dump GOT in static binaries A static, non-relocated global offset table will be embedded in static binaries produced from objects containing any kind of GOT relocations, generally PIC code. All symbols will have been resolved in static link in such binaries making all GOT entries local and their values final as there is no run-time load processing further performed. Dump such GOT with `readelf -A' like already done with regular GOT, to make it easier to examine static code that uses accesses via the GOT pointer. There will be no dynamic segment or section in a static binary to get the GOT pointer (DT_PLTGOT) from, so use section headers to find a `.got' section instead. binutils/ * readelf.c (process_mips_specific): Add static GOT support. commit e63d123268f23a4cbc45ee55fb6dbc7d84729da3 Author: Nick Clifton Date: Wed Apr 26 13:07:49 2017 +0100 Fix seg-fault attempting to compress a debug section in a corrupt binary. PR binutils/21431 * compress.c (bfd_init_section_compress_status): Check the return value from bfd_malloc. commit c185f580b2b3baf7cee762c8ab31ab6925b9534a Author: Alan Hayward Date: Wed Apr 26 10:32:35 2017 +0100 xtensa_pseudo_register_read/write - Use regcache_raw_read_unsigned gdb/ * xtensa-tdep.c (xtensa_pseudo_register_read): Use regcache_raw_read_unsigned. (xtensa_pseudo_register_write): Likewise. commit 19c4559475791cd70e319eaf5c1e23d23d9ae81e Author: Alan Hayward Date: Wed Apr 26 09:57:15 2017 +0100 nds32: Abort instead of returning REG_UNKNOWN gdb/ * nds32-tdep.c (nds32_pseudo_register_read): Abort on errors. (nds32_pseudo_register_write): Likewise. commit 03def0812a9ee962d9dcfe9b0ba37783e58acfb8 Author: GDB Administrator Date: Wed Apr 26 00:00:36 2017 +0000 Automatic date update in version.in commit 4658f12e9c5ec0d2efb04f1688f6cd6bd9f1a47d Author: Yao Qi Date: Tue Apr 25 21:32:05 2017 +0100 Change readonly_p to bool This patch changes readonly_p type to bool. gdb: 2017-04-25 Yao Qi * regcache.c (struct regcache) : Change its type to bool. (regcache_xmalloc_1): Update parameter type and callers update. commit c4ab9505b53cdc899506ed421fddb7e1f8faf7a3 Author: Maciej W. Rozycki Date: Wed Apr 12 00:03:41 2017 +0100 MIPS/readelf: Simplify GOT[1] data availability check Unavailable data is handled gracefully in MIPS GOT processing done by `print_mips_got_entry', so all that is needed in special GOT[1] handling is to verify whether data can be retrieved for the purpose of the GNU marker check done with `byte_get'. Remove the extra error reporting code then, introduced with commit 75ec1fdbb797 ("Fix runtime seg-fault in readelf when parsing a corrupt MIPS binary.") in the course of addressing PR binutils/21344, and defer the error case to regular local GOT entry processing. binutils/ * readelf.c (process_mips_specific): Remove error reporting from GOT[1] processing. commit 919383ac718c2a3187ee2a9ad659daa22da26258 Author: Maciej W. Rozycki Date: Wed Apr 12 00:02:13 2017 +0100 MIPS/readelf: Remove extraneous null GOT data check Null data is handled gracefully throughout in MIPS GOT processing, with addresses printed normally and unavailable data shown as `' by `print_mips_got_entry', and special processing code for GOT[1] doing an explicit check. Remove an unwanted null GOT data check then, introduced with commit 592458412fb2 in the course of addressing PR binutils/12855. binutils/ * readelf.c (process_mips_specific): Remove null GOT data check. commit 126124cc0f3f0417913bfd84d83e4e525b6facf9 Author: Claudiu Zissulescu Date: Tue Apr 25 17:07:00 2017 +0200 [ARC] Enhance enter/leave mnemonics. enter/leave mnemonics are enhanced to not only accept register ranges but also single register (i.e., r13) or even no GPR register at all. gas/ 2017-04-25 Claudiu Zissulescu * testsuite/gas/arc/leave_enter.d: Update test. * testsuite/gas/arc/leave_enter.s: Likewise. opcodes/ 2017-04-25 Claudiu Zissulescu * arc-dis.c (print_insn_arc): Smartly print enter/leave mnemonics. * arc-opc.c (insert_r13el): New function. (R13_EL): Define. * arc-tbl.h: Add new enter/leave variants. commit be6a24d8eabdbeef32a9d79e81307af4491fcf56 Author: Claudiu Zissulescu Date: Tue Apr 25 17:07:00 2017 +0200 [ARC] Prefer NOP instead of MOV 0,0 NOP and MOV 0,0 are having the same encoding. As MOV mnemonic is located before NOP in the instruction table, the disassembler prints MOV 0,0 for NOP. Reorder the instructions such that NOP is first. gas/ 2017-04-25 Claudiu Zissulescu * testsuite/gas/arc/b.d: Update test. * testsuite/gas/arc/noargs_hs.d: Likewise. opcode/ 2017-04-25 Claudiu Zissulescu * arc-tbl.h: Reorder NOP entry to be before MOV instructions. commit d581dda88162831ebbd0757312fa93681d945327 Author: Yao Qi Date: Tue Apr 25 15:15:54 2017 +0100 Change gdbarch_wchar_bit for AArch64 and ARM The size of wchar_t on AArch64 and ARM is 4-byte, so we can use the default value (4*TARGET_CHAR_BIT). This patch fixes some fails in gdb.cp/wide_char_types.exp on aarch64-linux. gdb: 2017-04-25 Yao Qi * aarch64-tdep.c (aarch64_gdbarch_init): Don't call set_gdbarch_wchar_bit. * arm-tdep.c (arm_gdbarch_init): Likewise. commit 0348fd79d4c32243d91e8a55f20f408a9b4ec20d Author: Maciej W. Rozycki Date: Tue Apr 25 11:49:37 2017 +0100 MIPS16/opcodes: Add `-M no-aliases' disassembler option help text Complement commit 986e18a5a9fd ("Add a second 'pinfo' member to mips_opcode to extend number of available bits"), , and add a help text for the `-M no-aliases' disassembler option. opcodes/ * mips-dis.c (print_mips_disassembler_options): Add `no-aliases'. commit 6e3d1f0728d980a384c5aa63ce7f2ff3919c5024 Author: Maciej W. Rozycki Date: Tue Apr 25 11:44:29 2017 +0100 MIPS16/opcodes: Annotate instruction aliases Complement commit 986e18a5a9fd ("Add a second 'pinfo' member to mips_opcode to extend number of available bits"), , and annotate MIPS16 NOP, LA, DLA and the synthetic forms of LD and LW instructions as aliases. These correspond to MOVE, and the PC-relative ADDIU, DADDIU, LD and LW hardware instructions respectively. binutils/ * testsuite/binutils-all/mips/mips16-alias.d: New test. * testsuite/binutils-all/mips/mips16-noalias.d: New test. * testsuite/binutils-all/mips/mips16-alias.s: New test source. * testsuite/binutils-all/mips/mips.exp: Run the new tests. opcodes/ * mips16-opc.c (AL): New macro. (mips16_opcodes): Mark "nop", "la", "dla", and synthetic forms of "ld" and "lw" as aliases. commit adc1273cb27286452ed8b32c5ca3ea263b4854f0 Author: Maciej W. Rozycki Date: Tue Apr 25 10:20:14 2017 +0100 MIPS/GAS: Correct BFD_RELOC_MIPS16_16_PCREL_S1 fixup size Correct the size of a BFD_RELOC_MIPS16_16_PCREL_S1 fixup made in `md_convert_frag', fixing a bug introduced with commit c9775dde3277 ("MIPS16: Add R_MIPS16_PC16_S1 branch relocation support)". Add test cases to verify that the overflow of this fixup's in-place addend is still correctly detected. gas/ * config/tc-mips.c (md_convert_frag): Correct BFD_RELOC_MIPS16_16_PCREL_S1 fixup size. * testsuite/gas/mips/mips16-branch-addend-4.d: New test. * testsuite/gas/mips/mips16-branch-addend-5.d: New test. * testsuite/gas/mips/mips16-branch-addend-5.l: New stderr output. * testsuite/gas/mips/mips16-branch-addend-4.s: New test source. * testsuite/gas/mips/mips16-branch-addend-5.s: New test source. * testsuite/gas/mips/mips.exp: Run the new tests. commit debed3db4887483552103da36d180967ef0dca5f Author: Pedro Alves Date: Tue Apr 25 10:58:57 2017 +0100 Fix build on gcc < 5 (std::is_trivially_copyable missing) Ref: https://sourceware.org/ml/gdb-patches/2017-04/msg00660.html Simply skip the poisoning on older compilers. gdb/ChangeLog: 2017-04-25 Pedro Alves * common/poison.h [!HAVE_IS_TRIVIALLY_COPYABLE] (IsRelocatable) (BothAreRelocatable, memcopy, memmove): Don't define. * common/traits.h (__has_feature, HAVE_IS_TRIVIALLY_COPYABLE): New macros. commit d28b6364b1fba1c0270c001f0d82a69e351e1922 Author: Jose E. Marchesi Date: Tue Apr 25 02:40:43 2017 -0700 gas: sparc: fix relaxation of CALL instruction into branches in a.out targets This patch avoids CALL instructions to be optimized into branches if the symbols referred to in the CALL instruction are not fully resolved at the time the assembler writes its output. Tested in sparc64-linux-gnu and sparc-sun-sunos4.1.3 targets. No regressions. gas/ChangeLog: 2017-04-25 Jose E. Marchesi PR gas/21407 * config/tc-sparc.c (md_apply_fix): Do not transform `call' instructions into branch instructions in fixups generating additional relocations. * testsuite/gas/sparc/call-relax.s: New file. * testsuite/gas/sparc/call-relax.d: Likewise. * testsuite/gas/sparc/call-relax-aout.d: Likewise. * testsuite/gas/sparc/sparc.exp: Test call-relax and call-relax-aout. commit b0b92aeb3828219075fce23543fb39fee8608e99 Author: Pedro Alves Date: Tue Apr 25 01:27:41 2017 +0100 Poison non-POD memset & non-trivially-copyable memcpy/memmove This patch catches invalid initialization of non-POD types with memset, at compile time. This is what I used to catch the problems fixed by the previous patches in the series: $ make -k 2>&1 | grep "deleted function" src/gdb/breakpoint.c:951:53: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = bp_location; = void; size_t = long unsigned int]’ src/gdb/breakpoint.c:7325:32: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = bp_location; = void; size_t = long unsigned int]’ src/gdb/btrace.c:1153:42: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = btrace_insn; = void; size_t = long unsigned int]’ ... gdb/ChangeLog: 2017-04-25 Pedro Alves * common/common-defs.h: Include "common/poison.h". * common/function-view.h: (Not, Or, Requires): Move to traits.h and adjust. * common/poison.h: New file. * common/traits.h: Include . (Not, Or, Requires): New, moved from common/function-view.h. commit 16c4d54a71d8052988ed9c8005a03a7f934245f4 Author: Pedro Alves Date: Tue Apr 25 01:27:42 2017 +0100 Don't memset non-POD types: struct breakpoint Eh, struct breakpoint was made non-POD just today, with commit d28cd78ad820e3 ("Change breakpoint event locations to event_location_up"). :-) src/gdb/breakpoint.c: In function ‘void init_raw_breakpoint_without_location(breakpoint*, gdbarch*, bptype, const breakpoint_ops*)’: src/gdb/breakpoint.c:7447:28: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = breakpoint; = void; size_t = long unsigned int]’ memset (b, 0, sizeof (*b)); ^ In file included from src/gdb/common/common-defs.h:85:0, from src/gdb/defs.h:28, from src/gdb/breakpoint.c:20: src/gdb/common/poison.h:56:7: note: declared here void *memset (T *s, int c, size_t n) = delete; ^ gdb/ChangeLog: 2017-04-25 Pedro Alves * breakpoint.h (struct breakpoint): In-class initialize all fields. Make boolean fields "bool". * breakpoint.c (init_raw_breakpoint_without_location): Remove memset call and initializations no longer necessary. commit b5c3668253b909fd1f5b011893a35bb8dfd3be9b Author: Pedro Alves Date: Tue Apr 25 01:27:42 2017 +0100 Don't memset non-POD types: struct btrace_insn struct btrace_insn is not a POD [1] so we shouldn't be using memset to initialize it [2]. Use list-initialization instead, wrapped in a "pt insn to btrace insn" function, which looks like just begging to be added next to the existing pt_reclassify_insn/pt_btrace_insn_flags functions. [1] - because its field "flags" is not POD, because enum_flags has a non-trivial default ctor. gdb/ChangeLog: 2017-04-25 Pedro Alves * btrace.c (pt_btrace_insn_flags): Change parameter type to reference. (pt_btrace_insn): New function. (ftrace_add_pt): Remove memset call and use pt_btrace_insn. commit 5625a2864147f4d92b22edfeeab7600818988be2 Author: Pedro Alves Date: Tue Apr 25 01:27:42 2017 +0100 Don't memset non-POD types: struct bp_location struct bp_location is not a POD, so we shouldn't be using memset to initialize it. Caught like this: src/gdb/breakpoint.c: In function ‘bp_location** get_first_locp_gte_addr(CORE_ADDR)’: src/gdb/breakpoint.c:950:53: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = bp_location; = void; size_t = long unsigned int]’ memset (&dummy_loc, 0, sizeof (struct bp_location)); ^ In file included from src/gdb/defs.h:28:0, from src/gdb/breakpoint.c:20: src/gdb/common/common-defs.h:126:7: note: declared here void *memset (T *s, int c, size_t n) = delete; ^ gdb/ChangeLog: 2017-04-25 Pedro Alves * ada-lang.c (ada_catchpoint_location): Now a "class". Remove "base" field and inherit from "bp_location" instead. Add non-default ctor. (allocate_location_exception): Use new non-default ctor. * breakpoint.c (get_first_locp_gte_addr): Remove memset call. (init_bp_location): Convert to ... (bp_location::bp_location): ... this new ctor, and remove memset call. (base_breakpoint_allocate_location): Use the new non-default ctor. * breakpoint.h (bp_location): Now a class. Declare default and non-default ctors. In-class initialize all members. (init_bp_location): Remove declaration. commit 23bcc18f470ee4364bd362a8b78c6c1415a9dadb Author: Pedro Alves Date: Tue Apr 25 01:27:42 2017 +0100 Don't memcpy non-trivially-copyable types: Make enum_flags triv. copyable The delete-memcpy-with-non-trivial-types patch exposed many instances of this problem: src/gdb/btrace.h: In function ‘btrace_insn_s* VEC_btrace_insn_s_quick_insert(VEC_btrace_insn_s*, unsigned int, const btrace_insn_s*, const char*, unsigned int)’: src/gdb/common/vec.h:948:62: error: use of deleted function ‘void* memmove(T*, const U*, size_t) [with T = btrace_insn; U = btrace_insn; = void; size_t = long unsigned int]’ memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (T)); \ ^ src/gdb/common/vec.h:436:1: note: in expansion of macro ‘DEF_VEC_FUNC_O’ DEF_VEC_FUNC_O(T) \ ^ src/gdb/btrace.h:84:1: note: in expansion of macro ‘DEF_VEC_O’ DEF_VEC_O (btrace_insn_s); ^ [...] src/gdb/common/vec.h:1060:31: error: use of deleted function ‘void* memcpy(T*, const U*, size_t) [with T = btrace_insn; U = btrace_insn; = void; size_t = long unsigned int]’ sizeof (T) * vec2_->num); \ ^ src/gdb/common/vec.h:437:1: note: in expansion of macro ‘DEF_VEC_ALLOC_FUNC_O’ DEF_VEC_ALLOC_FUNC_O(T) \ ^ src/gdb/btrace.h:84:1: note: in expansion of macro ‘DEF_VEC_O’ DEF_VEC_O (btrace_insn_s); ^ So, VECs (given it's C roots) rely on memcpy/memcpy of VEC elements to be well defined, in order to grow/reallocate its internal elements array. This means that we can only put trivially copyable types in VECs. E.g., if a type requires using a custom copy/move ctor to relocate, then we can't put it in a VEC (so we use std::vector instead). But, as shown above, we're violating that requirement. btrace_insn is currently not trivially copyable, because it contains an enum_flags field, and that is itself not trivially copyable. This patch corrects that, by simply removing the user-provided copy constructor and assignment operator. The compiler-generated versions work just fine. Note that std::vector relies on std::is_trivially_copyable too to know whether it can reallocate its elements with memcpy/memmove instead of having to call copy/move ctors and dtors, so if we have types in std::vectors that weren't trivially copyable because of enum_flags, this will make such vectors more efficient. gdb/ChangeLog: 2017-04-25 Pedro Alves * common/enum-flags.h (enum_flags): Don't implement copy ctor and assignment operator. commit a49abe0bb18e04d3a4b692995fcfae70cd470775 Author: GDB Administrator Date: Tue Apr 25 00:00:36 2017 +0000 Automatic date update in version.in commit 9e9821ddd80c0d0b3dda54d34cc8867f256d4583 Author: H.J. Lu Date: Mon Apr 24 14:37:12 2017 -0700 x86-64: Force symbol dynamic if it isn't undefined weak Force symbol dynamic if it isn't undefined weak. Generate relative relocation for GOT reference against non-dynamic symbol in PIC to avoid unnecessary dynamic symbols. bfd/ * elf64-x86-64.c (elf_x86_64_link_hash_entry): Add no_finish_dynamic_symbol. (elf_x86_64_link_hash_newfunc): Set no_finish_dynamic_symbol to 0. (elf_x86_64_allocate_dynrelocs): If a symbol isn't undefined weak symbol, don't make it dynamic. (elf_x86_64_relocate_section): If a symbol isn't dynamic in PIC, set no_finish_dynamic_symbol and generate R_X86_64_RELATIVE relocation for GOT reference. (elf_x86_64_finish_dynamic_symbol): Abort if no_finish_dynamic_symbol isn't 0. ld/ * testsuite/ld-x86-64/no-plt.exp: Also check no-plt-1e.nd. * testsuite/ld-x86-64/no-plt-1e.nd: New file. commit 0dc9a308a1ec9675bf6b33bae9e8b1faa0bad9ed Author: H.J. Lu Date: Mon Apr 24 13:42:33 2017 -0700 i386: Force symbol dynamic if it isn't undefined weak Force symbol dynamic if it isn't undefined weak. Generate R_386_RELATIVE relocation for R_386_GOT32 relocation against non-dynamic symbol in PIC. PR ld/21402 * elf32-i386.c (elf_i386_allocate_dynrelocs): If a symbol isn't undefined weak symbol, don't make it dynamic. (elf_i386_relocate_section): If a symbol isn't dynamic in PIC, set no_finish_dynamic_symbol and generate R_386_RELATIVE relocation for R_386_GOT32. commit e1ba30532c6de26a14404ab4919bb591e8da3eab Author: Yao Qi Date: Mon Apr 24 21:29:12 2017 +0100 Use floatformat_totalsize_bytes The code can be replaced by floatformat_totalsize_bytes. gdb: 2017-04-24 Yao Qi * doublest.c (convert_doublest_to_floatformat): Call floatformat_totalsize_bytes. commit e662f84f5d6d014746550ce3d3f623583c043ff0 Author: H.J. Lu Date: Mon Apr 24 09:46:04 2017 -0700 i386: Skip pr12570 tests for nacl targets commit f129e49f4d07f4d36319ac757fdcf3a8ce7d605b Author: H.J. Lu Date: Tue Jan 10 11:30:25 2017 -0800 Don't use elf_i386_eh_frame_plt directly fixed i386 PLT eh_frame generation. Skip pr12570 tests since they are for non-nacl targets. * testsuite/ld-i386/pr12570a.d: Skip for nacl targets. * testsuite/ld-i386/pr12570b.d: Likewise. commit 1587442d37ee4266e54d59bfdc783574f0587aff Author: H.J. Lu Date: Mon Apr 24 09:37:10 2017 -0700 i386: Set ELF_MAXPAGESIZE to 0x1000 for VxWorks commit a27e437177412e5b52999723f3c5d5d0d37b9087 Author: Roland McGrath Date: Thu Jul 28 22:35:15 2011 +0000 BFD vector for elf32-i386-nacl: changed ELF_MAXPAGESIZE to 0x10000 for VxWorks. This patch fixes it and updated testsuite/ld-i386/vxworks2.sd to add space for program headers. bfd/ PR ld/21425 * elf32-i386.c (ELF_MAXPAGESIZE): Set to 0x1000 for VxWorks. ld/ PR ld/20815 * testsuite/ld-i386/vxworks2.sd: Add space for program headers. commit 534455547021f3262fa60d32cabb626af01692a3 Author: Thomas Preud'homme Date: Mon Apr 24 14:49:48 2017 +0100 [GAS/ARM] Fix expansion of ldr pseudo instruction The LDR rX, =cst pseudo-instruction suffers from two issues for loading integer constants in Thumb mode: - movs is used if the constant and register can be encoded using that instruction which leads to unexpected behavior due to its flag-setting behavior - mov.w, movw and mvn are used for r13 (sp) and r15 (pc) but these encoding are marked as UNPREDICTABLE This patch fixes those issues and update testing accordingly. 2017-04-24 Thomas Preud'homme gas/ * config/tc-arm.c (move_or_literal_pool): Remove code generating MOVS. Forbid MOV.W and MOVW if destination is SP or PC. * testsuite/gas/arm/thumb2_ldr_immediate_highregs_armv6t2.s: Explain expectation of LDR not generating a MOVS for low registers and small constants. Add tests of MOVW generation. * testsuite/gas/arm/thumb2_ldr_immediate_highregs_armv6t2.d: Update expected disassembly. commit 8b353c47b70568ab9f0cfd619b7a19e931c2b0c8 Author: Jose E. Marchesi Date: Mon Apr 24 05:31:31 2017 -0700 ld: fix regressions with rett instructions in sparc tests. A few tests in the ld testsuite were expecting the disassembler to emit `rett' instructions in V9. This patch updates the tests to expect `return' instead. ld/ChangeLog: 2017-04-24 Jose E. Marchesi * testsuite/ld-sparc/tlssunbin64.dd: Expect `return' instructions instead of `rett' in V9. * testsuite/ld-sparc/tlssunnopic64.dd: Likewise. * testsuite/ld-sparc/tlssunpic64.dd: Likewise. commit 957f6b39cab6cac0e4c54e650c7f75109544ac1d Author: Tamar Christina Date: Mon Apr 24 11:55:44 2017 +0100 Fix snafu in aarch64 opcodes debugging statement. * aarch64-opc.c (aarch64_logical_immediate_p): Update DEBUG_TRACE arguments. commit 9ad8982091eeb76b380e459fe721aaeacf7b8f24 Author: GDB Administrator Date: Mon Apr 24 00:00:39 2017 +0000 Automatic date update in version.in commit 42354845ae5e00ec1c3519e1f2166b79a9533401 Author: Alan Modra Date: Sun Apr 23 17:39:48 2017 +0930 PR 21418, ar -N lacks arg check PR 21418 * ar.c (main): Check -a, -b, -i and -N args are given. commit 7034215fd6d99f275998f7f0f8a346ab35fcbee6 Author: Alan Modra Date: Sun Apr 23 17:28:14 2017 +0930 PR 21417, ar arg check failure PR 21417 * ar.c (main): Check that an archive file is given after options. commit b02cd3e978e9273074f7cbe2ca1d5b372225a56d Author: Alan Modra Date: Sun Apr 23 18:31:40 2017 +0930 PR 21415, objdump fails to check bfd_get_section_contents status PR 21415 * objdump.c (disassemble_section): Check bfd_get_section_contents status. commit 7eacd66b086cabb1daab20890d5481894d4f56b2 Author: Alan Modra Date: Sun Apr 23 15:21:11 2017 +0930 PR 21414, null pointer deref of _bfd_elf_large_com_section sym PR 21414 * section.c (GLOBAL_SYM_INIT): Make available in bfd.h. * elf.c (lcomm_sym): New. (_bfd_elf_large_com_section): Use lcomm_sym section symbol. * bfd-in2.h: Regenerate. commit bce964aa6c777d236fbd641f2bc7bb931cfe4bf3 Author: Alan Modra Date: Sun Apr 23 11:03:34 2017 +0930 PR 21412, get_reloc_section assumes .rel/.rela name for SHT_REL/RELA. This patch fixes an assumption made by code that runs for objcopy and strip, that SHT_REL/SHR_RELA sections are always named starting with a .rel/.rela prefix. I'm also modifying the interface for elf_backend_get_reloc_section, so any backend function just needs to handle name mapping. PR 21412 * elf-bfd.h (struct elf_backend_data ): Change parameters and comment. (_bfd_elf_get_reloc_section): Delete. (_bfd_elf_plt_get_reloc_section): Declare. * elf.c (_bfd_elf_plt_get_reloc_section, elf_get_reloc_section): New functions. Don't blindly skip over assumed .rel/.rela prefix. Extracted from.. (_bfd_elf_get_reloc_section): ..here. Delete. (assign_section_numbers): Call elf_get_reloc_section. * elf64-ppc.c (elf_backend_get_reloc_section): Define. * elfxx-target.h (elf_backend_get_reloc_section): Update. commit 97e83a100aa8250be783304bfe0429761c6e6b6b Author: Alan Modra Date: Sun Apr 23 13:55:49 2017 +0930 PR 21409, segfault in _bfd_dwarf2_find_nearest_line PR 21409 * dwarf2.c (_bfd_dwarf2_find_nearest_line): Don't segfault when no symbols. commit f082820db966c79e47a143da774700055a1fad41 Author: Alan Modra Date: Sun Apr 23 13:49:50 2017 +0930 PR 21408, segfault in display_debug_lines_decoded PR 21408 * dwarf.c (display_debug_lines_decoded): Don't segfault on NULL file_table. commit b43eea27e99f5fd270b3bec455054ea53ac700bb Author: GDB Administrator Date: Sun Apr 23 00:00:35 2017 +0000 Automatic date update in version.in commit bf1554384b186b448904dbc13ee5374239c88520 Author: Jim Wilson Date: Sat Apr 22 16:36:01 2017 -0700 Fix ldn/stn multiple instructions. Fix testcases with unaligned data. sim/aarch64/ * simulator.c (vec_load): Add M argument. Rewrite to iterate over registers based on structure size. (LD4, LD3, LD2, LD1_2, LD1_3, LD1_4): Pass new arg to vec_load. (LD1_1): Replace with call to vec_load. (vec_store): Add new M argument. Rewrite to iterate over registers based on structure size. (ST4, ST3, ST2, ST1_2, ST1_3, ST1_4): Pass new arg to vec_store. (ST1_1): Replace with call to vec_store. sim/testsuite/sim/aarch64/ * fcvtz.s, fstur.s, ldn_single.s, ldnr.s, mla.s, mls.s, uzp.s: Align data. * sumulh.s: Delete unnecessary data alignment. * stn_single.s: Align data. Fix unaligned ldr insns. Adjust cmp arguments to match change. * ldn_multiple.s, stn_multiple.s: New. commit 10f489e57677e670bf980e93896762594e9ad908 Author: Tom Tromey Date: Wed Apr 12 16:30:21 2017 -0600 Use ui_out_emit_list This changes some spots to use ui_out_emit_list. This only touches "easy" cases, where the cleanup was used in a block-structured way. There's also one more use of ui_out_emit_tuple in here. ChangeLog 2017-04-22 Tom Tromey * mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries): Use ui_out_emit_list. * stack.c (print_frame): Use ui_out_emit_list. * mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Use ui_out_emit_list. * mi/mi-main.c (print_one_inferior) (mi_cmd_data_list_register_names) (mi_cmd_data_list_register_values, mi_cmd_list_features) (mi_cmd_list_target_features, mi_cmd_trace_frame_collected): Use ui_out_emit_list. * mi/mi-interp.c (mi_on_normal_stop_1): Use ui_out_emit_list. (mi_output_solib_attribs): Use ui_out_emit_list, ui_out_emit_tuple. * mi/mi-cmd-var.c (varobj_update_one): Use ui_out_emit_list. * mi/mi-cmd-stack.c (mi_cmd_stack_list_frames) (mi_cmd_stack_list_args, list_args_or_locals): Use ui_out_emit_list. * disasm.c (do_assembly_only): Use ui_out_emit_list. * breakpoint.c (print_solib_event, output_thread_groups): Use ui_out_emit_list. commit 0092b74da6d86185c4d0c0fa0f540b97647bf44a Author: Tom Tromey Date: Wed Apr 12 16:16:10 2017 -0600 Use ui_out_emit_tuple in more places in MI This patch changes a few more spots in MI to use ui_out_emit_tuple. These changes required the use of gdb::optional. ChangeLog 2017-04-22 Tom Tromey * mi/mi-main.c (print_variable_or_computed): Use ui_out_emit_tuple. * mi/mi-cmd-var.c (varobj_update_one): Use ui_out_emit_tuple. * mi/mi-cmd-stack.c (list_arg_or_local): Use ui_out_emit_tuple. commit a14a62ddff9eadbb8a7ad101ab06b02e44b6c00a Author: Tom Tromey Date: Wed Apr 12 16:15:14 2017 -0600 Use ui_out_emit_tuple in tracepoint.c This changes some code in tracepoint.c to use ui_out_emit_tuple. One of these involved removing an otherwise unrelated cleanup (changing type to std::string) and the other involved introducing a new block. ChangeLog 2017-04-22 Tom Tromey * tracepoint.c (tvariables_info_1) (print_one_static_tracepoint_marker): Use ui_out_emit_tuple. commit 46b9c12945629fffb61001a8f13a37c96675c0b7 Author: Tom Tromey Date: Wed Apr 12 16:10:02 2017 -0600 More uses of ui_out_emit_tuple This patch adds a few more uses of ui_out_emit_tuple. In these cases a slightly more complicated change was needed. This also adds annotate_arg_emitter, for use in stack.c, to avoid having to introduce a new scope and reindent the code for a single call. ChangeLog 2017-04-22 Tom Tromey * stack.c (print_frame_arg): Use ui_out_emit_tuple, annotate_arg_emitter. * breakpoint.c (print_mention_watchpoint) (print_mention_masked_watchpoint): Use ui_out_emit_tuple. * annotate.h (struct annotate_arg_emitter): New. commit 2e78302469502f4f8a98144b60c09d4d9b6438fd Author: Tom Tromey Date: Wed Apr 12 08:23:08 2017 -0600 Use ui_out_emit_tuple This patch changes various places to use ui_out_emit_tuple, eliminating a number of cleanups. This patch only tackles "easy" cases, which are ones where the cleanups in question were block-structured and did not involve any changes other than the obvious replacement. ChangeLog 2017-04-22 Tom Tromey * record-btrace.c (record_btrace_insn_history) (record_btrace_insn_history_range, record_btrace_call_history) (record_btrace_call_history_range): Use ui_out_emit_tuple. * thread.c (do_captured_list_thread_ids, print_thread_info_1): Use ui_out_emit_tuple. * stack.c (print_frame_info): Use ui_out_emit_tuple. * solib.c (info_sharedlibrary_command): Use ui_out_emit_tuple. * skip.c (skip_info): Use ui_out_emit_tuple. * remote.c (show_remote_cmd): Use ui_out_emit_tuple. * progspace.c (print_program_space): Use ui_out_emit_tuple. * probe.c (info_probes_for_ops): Use ui_out_emit_tuple. * osdata.c (info_osdata): Use ui_out_emit_tuple. * mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Use ui_out_emit_tuple. * mi/mi-main.c (print_one_inferior, list_available_thread_groups) (output_register, mi_cmd_data_read_memory) (mi_cmd_data_read_memory_bytes, mi_load_progress) (mi_cmd_trace_frame_collected): Use ui_out_emit_tuple. * mi/mi-cmd-var.c (mi_cmd_var_list_children, varobj_update_one): Use ui_out_emit_tuple. * mi/mi-cmd-stack.c (mi_cmd_stack_list_args): Use ui_out_emit_tuple. * mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions) (mi_cmd_info_gdb_mi_command): Use ui_out_emit_tuple. * linux-thread-db.c (info_auto_load_libthread_db): Use ui_out_emit_tuple. * inferior.c (print_inferior): Use ui_out_emit_tuple. * gdb_bfd.c (print_one_bfd): Use ui_out_emit_tuple. * disasm.c (do_mixed_source_and_assembly_deprecated) (do_mixed_source_and_assembly): Use ui_out_emit_tuple. * cp-abi.c (list_cp_abis): Use ui_out_emit_tuple. * cli/cli-setshow.c (cmd_show_list): Use ui_out_emit_tuple. * breakpoint.c (print_one_breakpoint_location) (print_one_breakpoint): Use ui_out_emit_tuple. * auto-load.c (print_script, info_auto_load_cmd): Use ui_out_emit_tuple. * ada-tasks.c (print_ada_task_info): Use ui_out_emit_tuple. ----------------------------------------------------------------------- Summary of changes: bfd/ChangeLog | 191 +++++ bfd/bfd-in2.h | 12 + bfd/compress.c | 19 +- bfd/dwarf2.c | 2 +- bfd/elf-bfd.h | 30 +- bfd/elf-eh-frame.c | 162 ++++- bfd/elf-properties.c | 11 +- bfd/elf.c | 67 +- bfd/elf32-i386.c | 230 +++--- bfd/elf32-m32c.c | 3 +- bfd/elf32-msp430.c | 3 +- bfd/elf32-ppc.c | 38 +- bfd/elf64-ppc.c | 28 +- bfd/elf64-x86-64.c | 326 ++++---- bfd/elflink.c | 48 +- bfd/elfxx-mips.c | 2 +- bfd/elfxx-mips.h | 3 +- bfd/elfxx-target.h | 8 +- bfd/reloc.c | 29 +- bfd/section.c | 24 +- bfd/version.h | 2 +- binutils/ChangeLog | 80 ++ binutils/ar.c | 13 +- binutils/bucomm.c | 3 + binutils/dwarf.c | 78 ++- binutils/objdump.c | 7 +- binutils/readelf.c | 175 ++++- binutils/testsuite/binutils-all/mips/mips.exp | 2 + .../testsuite/binutils-all/mips/mips16-alias.d | 15 + .../testsuite/binutils-all/mips/mips16-alias.s | 20 + .../testsuite/binutils-all/mips/mips16-noalias.d | 16 + binutils/testsuite/binutils-all/note-2-32.s | 32 +- binutils/testsuite/binutils-all/note-2-64.s | 34 +- gas/ChangeLog | 114 +++ gas/config/tc-arm.c | 14 +- gas/config/tc-mips.c | 316 ++++---- gas/config/tc-sparc.c | 9 +- gas/symbols.c | 16 +- gas/testsuite/gas/arc/b.d | 8 +- gas/testsuite/gas/arc/leave_enter.d | 41 +- gas/testsuite/gas/arc/leave_enter.s | 11 + gas/testsuite/gas/arc/noargs_hs.d | 2 +- .../arm/thumb2_ldr_immediate_highregs_armv6t2.d | 24 +- .../arm/thumb2_ldr_immediate_highregs_armv6t2.s | 16 +- gas/testsuite/gas/mips/mips.exp | 9 + gas/testsuite/gas/mips/mips16-branch-addend-4.d | 30 + gas/testsuite/gas/mips/mips16-branch-addend-4.s | 24 + gas/testsuite/gas/mips/mips16-branch-addend-5.d | 4 + gas/testsuite/gas/mips/mips16-branch-addend-5.l | 11 + gas/testsuite/gas/mips/mips16-branch-addend-5.s | 24 + gas/testsuite/gas/mips/option-pic-relax-0.d | 21 + gas/testsuite/gas/mips/option-pic-relax-0.s | 15 + gas/testsuite/gas/mips/option-pic-relax-1.d | 18 + gas/testsuite/gas/mips/option-pic-relax-1.s | 12 + gas/testsuite/gas/mips/option-pic-relax-2.d | 28 + gas/testsuite/gas/mips/option-pic-relax-2.l | 2 + gas/testsuite/gas/mips/option-pic-relax-2.s | 19 + gas/testsuite/gas/mips/option-pic-relax-3.d | 20 + gas/testsuite/gas/mips/option-pic-relax-3.l | 2 + gas/testsuite/gas/mips/option-pic-relax-3.s | 16 + gas/testsuite/gas/mips/option-pic-relax-3a.d | 9 + gas/testsuite/gas/mips/option-pic-relax-4.d | 28 + gas/testsuite/gas/mips/option-pic-relax-4.l | 2 + gas/testsuite/gas/mips/option-pic-relax-4.s | 20 + gas/testsuite/gas/mips/option-pic-relax-5.d | 20 + gas/testsuite/gas/mips/option-pic-relax-5.l | 2 + gas/testsuite/gas/mips/option-pic-relax-5.s | 17 + gas/testsuite/gas/sparc/call-relax-aout.d | 19 + gas/testsuite/gas/sparc/call-relax.d | 18 + gas/testsuite/gas/sparc/call-relax.s | 10 + gas/testsuite/gas/sparc/sparc.exp | 4 + gdb/ChangeLog | 440 +++++++++++ gdb/aarch64-tdep.c | 1 - gdb/ada-lang.c | 19 +- gdb/ada-tasks.c | 4 +- gdb/annotate.h | 11 + gdb/arch-utils.c | 9 + gdb/arch-utils.h | 6 + gdb/arm-tdep.c | 1 - gdb/auto-load.c | 16 +- gdb/breakpoint.c | 81 +-- gdb/breakpoint.h | 125 ++-- gdb/btrace.c | 23 +- gdb/cli/cli-setshow.c | 15 +- gdb/common/common-defs.h | 1 + gdb/common/enum-flags.h | 10 - gdb/common/function-view.h | 40 +- gdb/common/poison.h | 87 +++ gdb/common/traits.h | 43 +- gdb/cp-abi.c | 5 +- gdb/disasm.c | 19 +- gdb/doublest.c | 3 +- gdb/dwarf2-frame.c | 92 +-- gdb/dwarf2-frame.h | 58 ++ gdb/gdb_bfd.c | 4 +- gdb/gdbarch.c | 23 + gdb/gdbarch.h | 7 + gdb/gdbarch.sh | 3 + gdb/gdbtypes.c | 106 ++-- gdb/gdbtypes.h | 13 +- gdb/ia64-tdep.c | 61 +- gdb/infcmd.c | 14 +- gdb/inferior.c | 5 +- gdb/linux-thread-db.c | 3 +- gdb/mi/mi-cmd-file.c | 5 +- gdb/mi/mi-cmd-info.c | 10 +- gdb/mi/mi-cmd-stack.c | 28 +- gdb/mi/mi-cmd-var.c | 21 +- gdb/mi/mi-interp.c | 12 +- gdb/mi/mi-main.c | 110 +-- gdb/mi/mi-symbol-cmds.c | 8 +- gdb/mips-linux-nat.c | 5 +- gdb/mips-tdep.c | 2 +- gdb/nds32-tdep.c | 23 +- gdb/nto-tdep.c | 35 +- gdb/osdata.c | 29 +- gdb/probe.c | 5 +- gdb/progspace.c | 4 +- gdb/python/py-inferior.c | 7 +- gdb/record-btrace.c | 22 +- gdb/regcache.c | 785 +++++++++++--------- gdb/regcache.h | 166 ++++- gdb/remote.c | 11 +- gdb/skip.c | 5 +- gdb/solib-aix.c | 110 ++-- gdb/solib-darwin.c | 32 +- gdb/solib-dsbt.c | 39 +- gdb/solib-frv.c | 110 ++-- gdb/solib-svr4.c | 115 ++-- gdb/solib-svr4.h | 23 + gdb/solib-target.c | 114 ++-- gdb/solib.c | 6 +- gdb/solist.h | 10 +- gdb/sparc-tdep.c | 32 + gdb/stack.c | 44 +- gdb/target.c | 5 +- gdb/testsuite/ChangeLog | 23 + gdb/testsuite/gdb.base/environ.exp | 302 ++------- gdb/testsuite/gdb.base/info-program.exp | 45 ++ gdb/testsuite/gdb.cp/oranking.cc | 22 + gdb/testsuite/gdb.cp/oranking.exp | 9 +- gdb/testsuite/gdb.cp/rvalue-ref-overload.exp | 1 - gdb/testsuite/gdb.cp/rvalue-ref-params.exp | 1 - gdb/thread.c | 30 +- gdb/tracepoint.c | 44 +- gdb/windows-nat.c | 52 +- gdb/xcoffread.c | 68 ++- gdb/xtensa-tdep.c | 21 +- gold/ChangeLog | 4 + gold/testsuite/plugin_section_order.c | 1 + ld/ChangeLog | 60 ++ ld/testsuite/config/default.exp | 37 + ld/testsuite/ld-elf/shared.exp | 86 +++ ld/testsuite/ld-i386/i386.exp | 1 + ld/testsuite/ld-i386/pr12570a.d | 1 + ld/testsuite/ld-i386/pr12570b.d | 1 + ld/testsuite/ld-i386/tls.exp | 111 +++ ld/testsuite/ld-i386/tlsdesc1a.c | 19 + ld/testsuite/ld-i386/tlsdesc1b.c | 8 + ld/testsuite/ld-i386/tlsdesc2.d | 10 + ld/testsuite/ld-i386/vxworks2.sd | 2 +- ld/testsuite/ld-ifunc/ifunc.exp | 99 +++ ld/testsuite/ld-mips-elf/mips-elf.exp | 10 + ld/testsuite/ld-mips-elf/pr21334.dd | 10 + ld/testsuite/ld-mips-elf/pr21334.gd | 11 + ld/testsuite/ld-mips-elf/pr21334.ld | 9 + ld/testsuite/ld-mips-elf/pr21334.s | 20 + ld/testsuite/ld-sparc/tlssunbin64.dd | 2 +- ld/testsuite/ld-sparc/tlssunnopic64.dd | 2 +- ld/testsuite/ld-sparc/tlssunpic64.dd | 2 +- ld/testsuite/ld-x86-64/no-plt-1e.nd | 7 + ld/testsuite/ld-x86-64/no-plt.exp | 2 +- ld/testsuite/ld-x86-64/pr21038a.d | 6 +- ld/testsuite/ld-x86-64/pr21038c.d | 4 +- ld/testsuite/ld-x86-64/tls.exp | 116 +++ ld/testsuite/ld-x86-64/tlsdesc1a.c | 19 + ld/testsuite/ld-x86-64/tlsdesc1b.c | 8 + ld/testsuite/ld-x86-64/tlsdesc2.d | 10 + ld/testsuite/ld-x86-64/x86-64.exp | 1 + opcodes/ChangeLog | 27 + opcodes/aarch64-opc.c | 4 +- opcodes/arc-dis.c | 19 +- opcodes/arc-opc.c | 20 +- opcodes/arc-tbl.h | 8 +- opcodes/mips-dis.c | 3 + opcodes/mips16-opc.c | 12 +- sim/aarch64/ChangeLog | 11 + sim/aarch64/simulator.c | 290 +++----- sim/testsuite/sim/aarch64/ChangeLog | 9 + sim/testsuite/sim/aarch64/fcvtz.s | 1 + sim/testsuite/sim/aarch64/fstur.s | 1 + sim/testsuite/sim/aarch64/ldn_multiple.s | 136 ++++ sim/testsuite/sim/aarch64/ldn_single.s | 2 + sim/testsuite/sim/aarch64/ldnr.s | 2 + sim/testsuite/sim/aarch64/mla.s | 2 + sim/testsuite/sim/aarch64/mls.s | 2 + sim/testsuite/sim/aarch64/stn_multiple.s | 171 +++++ sim/testsuite/sim/aarch64/stn_single.s | 24 +- sim/testsuite/sim/aarch64/sumulh.s | 3 - sim/testsuite/sim/aarch64/uzp.s | 2 + 200 files changed, 5385 insertions(+), 2630 deletions(-) create mode 100644 binutils/testsuite/binutils-all/mips/mips16-alias.d create mode 100644 binutils/testsuite/binutils-all/mips/mips16-alias.s create mode 100644 binutils/testsuite/binutils-all/mips/mips16-noalias.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-addend-4.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-addend-4.s create mode 100644 gas/testsuite/gas/mips/mips16-branch-addend-5.d create mode 100644 gas/testsuite/gas/mips/mips16-branch-addend-5.l create mode 100644 gas/testsuite/gas/mips/mips16-branch-addend-5.s create mode 100644 gas/testsuite/gas/mips/option-pic-relax-0.d create mode 100644 gas/testsuite/gas/mips/option-pic-relax-0.s create mode 100644 gas/testsuite/gas/mips/option-pic-relax-1.d create mode 100644 gas/testsuite/gas/mips/option-pic-relax-1.s create mode 100644 gas/testsuite/gas/mips/option-pic-relax-2.d create mode 100644 gas/testsuite/gas/mips/option-pic-relax-2.l create mode 100644 gas/testsuite/gas/mips/option-pic-relax-2.s create mode 100644 gas/testsuite/gas/mips/option-pic-relax-3.d create mode 100644 gas/testsuite/gas/mips/option-pic-relax-3.l create mode 100644 gas/testsuite/gas/mips/option-pic-relax-3.s create mode 100644 gas/testsuite/gas/mips/option-pic-relax-3a.d create mode 100644 gas/testsuite/gas/mips/option-pic-relax-4.d create mode 100644 gas/testsuite/gas/mips/option-pic-relax-4.l create mode 100644 gas/testsuite/gas/mips/option-pic-relax-4.s create mode 100644 gas/testsuite/gas/mips/option-pic-relax-5.d create mode 100644 gas/testsuite/gas/mips/option-pic-relax-5.l create mode 100644 gas/testsuite/gas/mips/option-pic-relax-5.s create mode 100644 gas/testsuite/gas/sparc/call-relax-aout.d create mode 100644 gas/testsuite/gas/sparc/call-relax.d create mode 100644 gas/testsuite/gas/sparc/call-relax.s create mode 100644 gdb/common/poison.h create mode 100644 gdb/testsuite/gdb.base/info-program.exp create mode 100644 ld/testsuite/ld-i386/tlsdesc1a.c create mode 100644 ld/testsuite/ld-i386/tlsdesc1b.c create mode 100644 ld/testsuite/ld-i386/tlsdesc2.d create mode 100644 ld/testsuite/ld-mips-elf/pr21334.dd create mode 100644 ld/testsuite/ld-mips-elf/pr21334.gd create mode 100644 ld/testsuite/ld-mips-elf/pr21334.ld create mode 100644 ld/testsuite/ld-mips-elf/pr21334.s create mode 100644 ld/testsuite/ld-x86-64/no-plt-1e.nd create mode 100644 ld/testsuite/ld-x86-64/tlsdesc1a.c create mode 100644 ld/testsuite/ld-x86-64/tlsdesc1b.c create mode 100644 ld/testsuite/ld-x86-64/tlsdesc2.d create mode 100644 sim/testsuite/sim/aarch64/ldn_multiple.s create mode 100644 sim/testsuite/sim/aarch64/stn_multiple.s First 500 lines of diff: diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ba2d134..dff6a59 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,194 @@ +2017-04-29 Alan Modra + + PR 21432 + * reloc.c (reloc_offset_in_range): New function. + (bfd_perform_relocation, bfd_install_relocation): Use it. + (_bfd_final_link_relocate): Likewise. + +2017-04-28 H.J. Lu + + * elf32-i386.c (elf_i386_allocate_dynrelocs): Check plt_got + before using .plt.got. + * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise. + +2017-04-27 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_size_dynamic_sections): Use "=" + instead of "+=" to update 0. + +2017-04-27 H.J. Lu + + * elf32-i386.c (elf_i386_create_dynamic_sections): Create the + .plt.got section here. + (elf_i386_check_relocs): Don't create the .plt.got section. + * elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Create + the .plt.got and .plt.bnd sections here. + (elf_x86_64_check_relocs): Don't create the .plt.got nor + .plt.bnd sections. + +2017-04-27 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_link_hash_entry): Remove + has_bnd_reloc. + (elf_x86_64_link_hash_newfunc): Don't clear has_bnd_reloc. + (elf_x86_64_copy_indirect_symbol): Don't copy has_bnd_reloc. + (elf_x86_64_check_relocs): Don't set has_bnd_reloc. + (elf_x86_64_finish_dynamic_symbol): Check bndplt instead of + has_bnd_reloc. + +2017-04-27 H.J. Lu + + * elf-bfd.h (elf_backend_data): Change setup_gnu_properties + to return bfd *. + (_bfd_elf_link_setup_gnu_properties): Return bfd *. + * elf-properties.c (_bfd_elf_link_setup_gnu_properties): Return + the first relocatable ELF input with GNU properties. + +2017-04-27 H.J. Lu + + * elf32-i386.c (elf_i386_finish_dynamic_sections): Simplify + VxWorks for non-PIC. + +2017-04-27 Alan Modra + + * elf-bfd.h (struct elf_backend_data): Make asection param of + elf_backend_eh_frame_address_size const. + (_bfd_elf_eh_frame_address_size): Likewise. + * elf32-m32c.c (_bfd_m32c_elf_eh_frame_address_size): Likewise. + * elf32-msp430.c (elf32_msp430_eh_frame_address_size): Likewise. + * elfxx-mips.c (_bfd_mips_elf_eh_frame_address_size): Likewise. + * elfxx-mips.h (_bfd_mips_elf_eh_frame_address_size): Likewise. + * elf-eh-frame.c (_bfd_elf_eh_frame_address_size): Likewise. + (next_cie_fde_offset): Constify params. + (offset_adjust, adjust_eh_frame_local_symbols): Likewise. + +2017-04-27 Alan Modra + + * elf-bfd.h (struct eh_cie_fde): Add aug_str_len and aug_data_len. + (_bfd_elf_adjust_eh_frame_global_symbol): Declare. + * elf-eh-frame.c (_bfd_elf_parse_eh_frame): Set aug_str_len and + aug_data_len. + (offset_adjust): New function. + (_bfd_elf_adjust_eh_frame_global_symbol): Likewise. + (adjust_eh_frame_local_symbols): Likewise. + (_bfd_elf_discard_section_eh_frame): Call adjust_eh_frame_local_symbols + after changing anything. Return true if anything changed. + * elflink.c (bfd_elf_discard_info): If .eh_frame changed, call + _bfd_elf_adjust_eh_frame_global_symbol for globals. + +2017-04-27 Alan Modra + + * elflink.c (_bfd_elf_link_hash_hide_symbol): Clear dynstr_index + when force_local. + +2017-04-27 Alan Modra + + * elf32-ppc.c (UNDEFWEAK_NO_DYNAMIC_RELOC): Define. + (ppc_elf_select_plt_layout, ppc_elf_tls_setup): Use it. + (ppc_elf_adjust_dynamic_symbol, allocate_dynrelocs): Likewise. + (ppc_elf_relocate_section): Likewise. Delete silly optimisation + for undef and undefweak dyn_relocs. + * elf64-ppc.c (UNDEFWEAK_NO_DYNAMIC_RELOC): Define. + (ppc64_elf_adjust_dynamic_symbol, ppc64_elf_tls_setup): Use it. + (allocate_got, allocate_dynrelocs): Likewise. + (ppc64_elf_relocate_section): Likewise. + +2017-04-26 H.J. Lu + + * elf32-i386.c (elf_i386_size_dynamic_sections): Alwasys add + DT_PLTRELSZ, DT_PLTREL and DT_JMPREL for .rel.plt section. + * elf64-x86-64.c (elf_x86_64_size_dynamic_sections): Alwasys + add DT_PLTRELSZ, DT_PLTREL and DT_JMPREL for .rela.plt section. + +2017-04-26 Nick Clifton + + PR binutils/21434 + * reloc.c (bfd_perform_relocation): Check for a negative address + in the reloc. + +2017-04-26 Maciej W. Rozycki + + PR ld/21334 + * elf-bfd.h (elf_backend_data): Add `always_renumber_dynsyms' + member. + * elfxx-target.h [!elf_backend_always_renumber_dynsyms] + (elf_backend_always_renumber_dynsyms): Define. + (elfNN_bed): Initialize `always_renumber_dynsyms' member. + * elfxx-mips.h (elf_backend_always_renumber_dynsyms): Define. + * elflink.c (bfd_elf_size_dynamic_sections): Also call + `_bfd_elf_link_renumber_dynsyms' if the backend has requested + it. + (bfd_elf_size_dynsym_hash_dynstr): Likewise. + +2017-04-26 Maciej W. Rozycki + + * elflink.c (bfd_elf_size_dynamic_sections): Only call + `_bfd_elf_link_renumber_dynsyms' after section GC if dynamic + sections have been created. + +2017-04-26 Nick Clifton + + PR binutils/21431 + * compress.c (bfd_init_section_compress_status): Check the return + value from bfd_malloc. + +2017-04-24 H.J. Lu + + * elf64-x86-64.c (elf_x86_64_link_hash_entry): Add + no_finish_dynamic_symbol. + (elf_x86_64_link_hash_newfunc): Set no_finish_dynamic_symbol to + 0. + (elf_x86_64_allocate_dynrelocs): If a symbol isn't undefined + weak symbol, don't make it dynamic. + (elf_x86_64_relocate_section): If a symbol isn't dynamic in PIC, + set no_finish_dynamic_symbol and generate R_X86_64_RELATIVE + relocation for GOT reference. + (elf_x86_64_finish_dynamic_symbol): Abort if + no_finish_dynamic_symbol isn't 0. + +2017-04-24 H.J. Lu + + PR ld/21402 + * elf32-i386.c (elf_i386_allocate_dynrelocs): If a symbol isn't + undefined weak symbol, don't make it dynamic. + (elf_i386_relocate_section): If a symbol isn't dynamic in PIC, + set no_finish_dynamic_symbol and generate R_386_RELATIVE + relocation for R_386_GOT32. + +2017-04-24 H.J. Lu + + PR ld/21425 + * elf32-i386.c (ELF_MAXPAGESIZE): Set to 0x1000 for VxWorks. + +2017-04-23 Alan Modra + + PR 21414 + * section.c (GLOBAL_SYM_INIT): Make available in bfd.h. + * elf.c (lcomm_sym): New. + (_bfd_elf_large_com_section): Use lcomm_sym section symbol. + * bfd-in2.h: Regenerate. + +2017-04-23 Alan Modra + + PR 21412 + * elf-bfd.h (struct elf_backend_data ): Change + parameters and comment. + (_bfd_elf_get_reloc_section): Delete. + (_bfd_elf_plt_get_reloc_section): Declare. + * elf.c (_bfd_elf_plt_get_reloc_section, elf_get_reloc_section): + New functions. Don't blindly skip over assumed .rel/.rela prefix. + Extracted from.. + (_bfd_elf_get_reloc_section): ..here. Delete. + (assign_section_numbers): Call elf_get_reloc_section. + * elf64-ppc.c (elf_backend_get_reloc_section): Define. + * elfxx-target.h (elf_backend_get_reloc_section): Update. + +2017-04-23 Alan Modra + + PR 21409 + * dwarf2.c (_bfd_dwarf2_find_nearest_line): Don't segfault when + no symbols. + 2017-04-21 H.J. Lu PR ld/21402 diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 1d73134..17a35c0 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1839,6 +1839,18 @@ extern asection _bfd_std_section[4]; { NULL }, { NULL } \ } +/* We use a macro to initialize the static asymbol structures because + traditional C does not permit us to initialize a union member while + gcc warns if we don't initialize it. + the_bfd, name, value, attr, section [, udata] */ +#ifdef __STDC__ +#define GLOBAL_SYM_INIT(NAME, SECTION) \ + { 0, NAME, 0, BSF_SECTION_SYM, SECTION, { 0 }} +#else +#define GLOBAL_SYM_INIT(NAME, SECTION) \ + { 0, NAME, 0, BSF_SECTION_SYM, SECTION } +#endif + void bfd_section_list_clear (bfd *); asection *bfd_get_section_by_name (bfd *abfd, const char *name); diff --git a/bfd/compress.c b/bfd/compress.c index f881c07..c854a20 100644 --- a/bfd/compress.c +++ b/bfd/compress.c @@ -542,7 +542,6 @@ bfd_init_section_compress_status (bfd *abfd, sec_ptr sec) { bfd_size_type uncompressed_size; bfd_byte *uncompressed_buffer; - bfd_boolean ret; /* Error if not opened for read. */ if (abfd->direction != read_direction @@ -558,18 +557,18 @@ bfd_init_section_compress_status (bfd *abfd, sec_ptr sec) /* Read in the full section contents and compress it. */ uncompressed_size = sec->size; uncompressed_buffer = (bfd_byte *) bfd_malloc (uncompressed_size); + /* PR 21431 */ + if (uncompressed_buffer == NULL) + return FALSE; + if (!bfd_get_section_contents (abfd, sec, uncompressed_buffer, 0, uncompressed_size)) - ret = FALSE; - else - { - uncompressed_size = bfd_compress_section_contents (abfd, sec, - uncompressed_buffer, - uncompressed_size); - ret = uncompressed_size != 0; - } + return FALSE; - return ret; + uncompressed_size = bfd_compress_section_contents (abfd, sec, + uncompressed_buffer, + uncompressed_size); + return uncompressed_size != 0; } /* diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index 132a674..0ef3e1f 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -4205,7 +4205,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd, looking up the function by section + offset uses the DW_AT_decl_line from the function DW_TAG_subprogram for the line, which will be the line of the function name. */ - if ((section->flags & SEC_CODE) == 0) + if (symbols != NULL && (section->flags & SEC_CODE) == 0) { asymbol **tmp; diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index af377ee..4110ace 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -326,6 +326,12 @@ struct eh_cie_fde or 0 if the CIE doesn't have any. */ unsigned int personality_offset : 8; + /* Length of augmentation. aug_str_len is the length of the + string including null terminator. aug_data_len is the length + of the rest up to the initial insns. */ + unsigned int aug_str_len : 3; + unsigned int aug_data_len : 5; + /* True if we have marked relocations associated with this CIE. */ unsigned int gc_mark : 1; @@ -354,7 +360,7 @@ struct eh_cie_fde unsigned int merged : 1; /* Unused bits. */ - unsigned int pad1 : 17; + unsigned int pad1 : 9; } cie; } u; unsigned int reloc_index; @@ -1285,7 +1291,7 @@ struct elf_backend_data that can't be determined for some reason. The default definition goes by the bfd's EI_CLASS. */ unsigned int (*elf_backend_eh_frame_address_size) - (bfd *, asection *); + (bfd *, const asection *); /* These functions tell elf-eh-frame whether to attempt to turn absolute or lsda encodings into pc-relative ones. The default @@ -1360,8 +1366,10 @@ struct elf_backend_data bfd_size_type (*maybe_function_sym) (const asymbol *sym, asection *sec, bfd_vma *code_off); - /* Return the section which RELOC_SEC applies to. */ - asection *(*get_reloc_section) (asection *reloc_sec); + /* Given NAME, the name of a relocation section stripped of its + .rel/.rela prefix, return the section in ABFD to which the + relocations apply. */ + asection *(*get_reloc_section) (bfd *abfd, const char *name); /* Called to set the sh_flags, sh_link and sh_info fields of OSECTION which has a type >= SHT_LOOS. Returns TRUE if the fields were initialised, @@ -1433,7 +1441,7 @@ struct elf_backend_data elf_property *); /* Set up GNU properties. */ - void (*setup_gnu_properties) (struct bfd_link_info *); + bfd *(*setup_gnu_properties) (struct bfd_link_info *); /* Encoding used for compact EH tables. */ int (*compact_eh_encoding) (struct bfd_link_info *); @@ -1529,6 +1537,10 @@ struct elf_backend_data /* Address of protected data defined in the shared library may be external, i.e., due to copy relocation. */ unsigned extern_protected_data : 1; + + /* True if `_bfd_elf_link_renumber_dynsyms' must be called even for + static binaries. */ + unsigned always_renumber_dynsyms : 1; }; /* Information about reloc sections associated with a bfd_elf_section_data @@ -1975,7 +1987,7 @@ extern void bfd_elf_print_symbol (bfd *, void *, asymbol *, bfd_print_symbol_type); extern unsigned int _bfd_elf_eh_frame_address_size - (bfd *, asection *); + (bfd *, const asection *); extern bfd_byte _bfd_elf_encode_eh_address (bfd *abfd, struct bfd_link_info *info, asection *osec, bfd_vma offset, asection *loc_sec, bfd_vma loc_offset, bfd_vma *encoded); @@ -2174,6 +2186,8 @@ extern bfd_boolean _bfd_elf_end_eh_frame_parsing extern bfd_boolean _bfd_elf_discard_section_eh_frame (bfd *, struct bfd_link_info *, asection *, bfd_boolean (*) (bfd_vma, void *), struct elf_reloc_cookie *); +extern bfd_boolean _bfd_elf_adjust_eh_frame_global_symbol + (struct elf_link_hash_entry *, void *); extern bfd_boolean _bfd_elf_discard_section_eh_frame_hdr (bfd *, struct bfd_link_info *); extern bfd_vma _bfd_elf_eh_frame_section_offset @@ -2448,7 +2462,7 @@ extern bfd_boolean _bfd_elf_is_function_type (unsigned int); extern bfd_size_type _bfd_elf_maybe_function_sym (const asymbol *, asection *, bfd_vma *); -extern asection *_bfd_elf_get_reloc_section (asection *); +extern asection *_bfd_elf_plt_get_reloc_section (bfd *, const char *); extern int bfd_elf_get_default_section_type (flagword); @@ -2593,7 +2607,7 @@ extern bfd_boolean _bfd_elf_parse_gnu_properties (bfd *, Elf_Internal_Note *); extern elf_property * _bfd_elf_get_property (bfd *, unsigned int, unsigned int); -extern void _bfd_elf_link_setup_gnu_properties +extern bfd *_bfd_elf_link_setup_gnu_properties (struct bfd_link_info *); /* The linker may need to keep track of the number of relocs that it diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c index 1743823..52ba9c6 100644 --- a/bfd/elf-eh-frame.c +++ b/bfd/elf-eh-frame.c @@ -326,9 +326,9 @@ size_of_output_cie_fde (struct eh_cie_fde *entry) /* Return the offset of the FDE or CIE after ENT. */ static unsigned int -next_cie_fde_offset (struct eh_cie_fde *ent, - struct eh_cie_fde *last, - asection *sec) +next_cie_fde_offset (const struct eh_cie_fde *ent, + const struct eh_cie_fde *last, + const asection *sec) { while (++ent < last) { @@ -757,6 +757,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, strcpy (cie->augmentation, (char *) buf); buf = (bfd_byte *) strchr ((char *) buf, '\0') + 1; + this_inf->u.cie.aug_str_len = buf - start - 1; ENSURE_NO_RELOCS (buf); if (buf[0] == 'e' && buf[1] == 'h') { @@ -845,6 +846,8 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, goto free_no_table; } } + this_inf->u.cie.aug_data_len + = buf - start - 1 - this_inf->u.cie.aug_str_len; /* For shared libraries, try to get rid of as many RELATIVE relocs as possible. */ @@ -1327,6 +1330,143 @@ find_merged_cie (bfd *abfd, struct bfd_link_info *info, asection *sec, return new_cie->cie_inf; } +/* For a given OFFSET in SEC, return the delta to the new location + after .eh_frame editing. */ + +static bfd_signed_vma +offset_adjust (bfd_vma offset, const asection *sec) +{ + struct eh_frame_sec_info *sec_info + = (struct eh_frame_sec_info *) elf_section_data (sec)->sec_info; + unsigned int lo, hi, mid; + struct eh_cie_fde *ent; + bfd_signed_vma delta; + + lo = 0; + hi = sec_info->count; + if (hi == 0) + return 0; + + while (lo < hi) + { + mid = (lo + hi) / 2; + ent = &sec_info->entry[mid]; + if (offset < ent->offset) + hi = mid; + else if (mid + 1 >= hi) + break; + else if (offset >= ent[1].offset) + lo = mid + 1; + else + break; + } + + if (!ent->removed) + delta = (bfd_vma) ent->new_offset - (bfd_vma) ent->offset; + else if (ent->cie && ent->u.cie.merged) + { + struct eh_cie_fde *cie = ent->u.cie.u.merged_with; + delta = ((bfd_vma) cie->new_offset + cie->u.cie.u.sec->output_offset + - (bfd_vma) ent->offset - sec->output_offset); + } + else + { + /* Is putting the symbol on the next entry best for a deleted + CIE/FDE? */ + struct eh_cie_fde *last = sec_info->entry + sec_info->count; + delta = ((bfd_vma) next_cie_fde_offset (ent, last, sec) + - (bfd_vma) ent->offset); + return delta; + } + + /* Account for editing within this CIE/FDE. */ + offset -= ent->offset; + if (ent->cie) + { + unsigned int extra + = ent->add_augmentation_size + ent->u.cie.add_fde_encoding; + if (extra == 0 + || offset <= 9u + ent->u.cie.aug_str_len) + return delta; + delta += extra; + if (offset <= 9u + ent->u.cie.aug_str_len + ent->u.cie.aug_data_len) + return delta; + delta += extra; + } + else + { + unsigned int ptr_size, width, extra = ent->add_augmentation_size; + if (offset <= 12 || extra == 0) + return delta; + ptr_size = (get_elf_backend_data (sec->owner) + ->elf_backend_eh_frame_address_size (sec->owner, sec)); + width = get_DW_EH_PE_width (ent->fde_encoding, ptr_size); + if (offset <= 8 + 2 * width) + return delta; + delta += extra; + } + + return delta; +} + +/* Adjust a global symbol defined in .eh_frame, so that it stays + relative to its original CIE/FDE. It is assumed that a symbol + defined at the beginning of a CIE/FDE belongs to that CIE/FDE + rather than marking the end of the previous CIE/FDE. This matters hooks/post-receive -- Repository for Project Archer.