From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 96400 invoked by alias); 11 Aug 2015 21:01:28 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 96382 invoked by uid 9674); 11 Aug 2015 21:01:28 -0000 Date: Tue, 11 Aug 2015 21:01:00 -0000 Message-ID: <20150811210127.96214.qmail@sourceware.org> From: jkratoch@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] jankratochvil/gdbserverbuildid-locate: sticky X-Git-Refname: refs/heads/jankratochvil/gdbserverbuildid-locate X-Git-Reftype: branch X-Git-Oldrev: d11dfeff36085e72697b0935fa9ea7b478502be3 X-Git-Newrev: fdfff5459f87e263811f0fe597946b6ec8ef2ca5 X-SW-Source: 2015-q3/txt/msg00021.txt.bz2 List-Id: The branch, jankratochvil/gdbserverbuildid-locate has been updated discards d11dfeff36085e72697b0935fa9ea7b478502be3 (commit) discards 5bb913190de7ef138463e6dac4fd4161e00a352b (commit) discards 652d48b40862076ce2bf51dfa3cf721e51be78d6 (commit) discards 5ff39b6e672dd158110b59091137c51558e8a17a (commit) discards c9a2870e237c57bd791a761f35a3657c405388c0 (commit) discards aba047ecde86b2aca84b6ea403645dbc6dfda4f9 (commit) discards 7b78ff694e36c0391a51d08764c9070eb864fcab (commit) discards 1fb2a28254f3fa02b876e7c9eac8ed50fad20b3c (commit) discards 29ae97c2a99b590f7a1e5fce610bb07562fb77b4 (commit) discards 2858b417b03809d653a1b432adfc1e05ba8e2eca (commit) discards a3110c7b4bb8e1d8705e72c5d7aa31e2e889f34d (commit) discards 111af182305566a065841f51a42e48d34e4159fa (commit) discards c291ee26e669f02ae872956ad5f39263d7351a7d (commit) discards 108dd1aa6d678f8b2f3938eb9854502c2ceb4c1f (commit) discards 5f7f919b9f15e4158eaa9ba8d1865182a29ff5fb (commit) discards 028d23ba5152daa5c59a7f85bd3a08c2ba93ae68 (commit) discards fd1312a6b9f9a54c69ca6852a5e305213dfe7fd5 (commit) discards a61ca3ebe307358102d7a172ef8ec39cd02e9db7 (commit) discards 38e9eefa67fd1b6dbc477227bb2aca8f8ed81ccc (commit) discards d4ce568a895cd2567bf06f4be2e51e9417401fc4 (commit) discards c37f1754c8e7fc3993edf9be4f959823508fd4b2 (commit) discards 903dc1fe73d28ed8cfb49e2639438529084568cd (commit) discards 04f4385dea44eb3b377181c2aef85c420ce7bfbd (commit) discards fa4273cdac197b1ee9bd9ced0302ad6cb81baad9 (commit) discards e9ca80639af74cbc23b266e1bf7a4abd2fb63e7a (commit) discards d02982822a709b5ccfcddeeaf6a2648bcecff266 (commit) discards 99416e9384ecd012925eaaaa1ded88df88d37546 (commit) via fdfff5459f87e263811f0fe597946b6ec8ef2ca5 (commit) via ae03cee1305381dac0621f97d77645c90e9fd907 (commit) via fd861b8aae745799a44483808388cde6c4f20aaf (commit) via 868abc8257c7e24b2ae4a68c57e5854bb58ecf48 (commit) via e620804cc6184ac2766423ccbdd8aabaff6b70fa (commit) via 9efcc0216f1fe90dbea76bb8e2738145205c6933 (commit) via a823fdc321b6fb4cd2c5a46f21f67e961d737590 (commit) via 847a1b1366e3ed0358ea7c8f57142865b52bd863 (commit) via feb785d4098bf5bba00e940a7ebe6a96ac0edf72 (commit) via 65bf749134458fe10426b700160b670d5643c3eb (commit) via 86cc52cb9b768555c6a8551cdd02064846fd7791 (commit) via 80394b0cb9ca0114f2444f6644b0bf9402966c94 (commit) via 18b680351b49456ba30460c7c5f68abf570706e4 (commit) via cf9c2659e990164f6c207c34aa0235d78164d7f4 (commit) via ee862c4e7d47bd38fe07504d5cc71eca33a01281 (commit) via 61aa8f63537242fb9fdc89b948f88b7787b27599 (commit) via fea5a2a69d6351ecfdce8ec701017a99a41af745 (commit) via efd2bb0409acad9f0a23fffdd8af9cfd5ac442c9 (commit) via 8b70dce00e539378daf8ba171d7a0890e280c992 (commit) via d42beee1aec30b9f4097979f2ab07214fcca3d95 (commit) via 17906c8d67cbe67be648b292c6f344477600d7f9 (commit) via 0a8f785466dbfad09b32e1ce76759049be4f65b2 (commit) via 3d0cb2c5b709dfe05fd3abd2d001f9a46fbf0686 (commit) via d879323ac26a303234a0286d10b8b1939d97a3dc (commit) via 7c4a05d5f2b5acaf762c6ff1c7caf7aa83128c32 (commit) via 0956a0bae075d09240541446f183e0810e20d2a0 (commit) via 4876094c705235a5f2d81f2333dbea0d625e9697 (commit) via 40fbed84815b00960f7fac8d2e7857942df4308c (commit) via 70151fb54ab6e3d5dc7f99fe3fbfa7ad2f1ab2af (commit) via 73f925cc20e839d4b7352b809a33e4e7dcbfa05a (commit) via a12fad50d28b9251893c6709ac4374773350c21a (commit) via 56a2e4507a4249634422fba2373b651b774c55ac (commit) via f69e49203b49b7353748b78a9d8111440d9ac291 (commit) via 1107e076cff62e1093da024ab73e5648051781ab (commit) via 2c0a466a7f83eb1ee5f5da0bdd7b4b643fbe3278 (commit) via 97dc35c88dd470465a99edeb0b491012a368f2bf (commit) via 922c5db5e733526f12e2fbfeb72c7f1f90089d53 (commit) via dbac553d28887561e3f154654ec8e70195d89943 (commit) via 4c0160b8e2f902ecdf6a42dc20b5f39b0a48fac7 (commit) via c8373ebb4ed77c361d95aa806cfbe1b4062b5be5 (commit) via 4b0e8a5f80441fad8eddaf68e7af70bd6991aa37 (commit) via 64140f86ab732f9ed87beccab07c32befaf9ca52 (commit) via eff0bc54a343fed1dd152f0a1b455b2438f76e6f (commit) via e66c3c2568fcfebc931bc18d35055c7f784133ce (commit) via d29b2a1ece30514431861472d784ae8722816a4c (commit) via 88fd0449a3f88c12c8930698a833f6c1c4478307 (commit) via 2b29bb41d56d4e4ba495393f4f519718b73f92df (commit) via 30379291886a171e6dc202122bc1c583318c2e17 (commit) via 125453567f4a0abc68cfc67a3df46be1aa9bb904 (commit) via 80af41e00325ff3e877df11d465baeaa3d565103 (commit) via e27852be65403306da198b3c1d7b222acd6bdfe9 (commit) via fd7dcb94cbd44629b3929336aec8b76c3e339656 (commit) via 422f11824b3abf6c71042e2ee3aed572f250fc89 (commit) via 75fb7498c25ba89262867abe5340a8d38f1e19cd (commit) via 2bc6d61bf3e4935921ae2612b3c6cd0604428960 (commit) via 662a7b62c477e93284de4db127b4dbc3529caaa5 (commit) via 8fe3f3d6afbf084f9ef36d887b661792c769f862 (commit) via e44bf850dff24e0442408e26043d957588be88ee (commit) via 0a77d46120137650c13091866cb93150910e1317 (commit) via d4ac1f878ecef58f1e4b4ff0cbfb4b475656eaf4 (commit) via f12899e9f081bb857c96999386e64a4252c4a325 (commit) via 5ac213430b710e8aaed1f4cea6ff809783201df9 (commit) via 7f03bd92e389a32da490bb55037881cf374d0f69 (commit) via 3fc8eb30a95df3fd07a63e9bd0a9d309b86a0357 (commit) via d4569d7bc572ae8f10d7c527cbdfbc9d26cc1ed8 (commit) via bfedc46af315dc6484295699c35e05040d76d700 (commit) via d55007b58352c0b5fd2817e003b6dcf4e3ee4c07 (commit) via fbea99ea8a062e5cd96e2d88336984ed3adc93d4 (commit) via 372316f12874a30c62e6d71079ca3b86c786fb7e (commit) via 2ac7589cfe1df06506adb133e99b2b89212c9a11 (commit) via 8b0615634896718c982d367a01ec61120084d3fb (commit) via 1afd5965eda86caed3af7f23fd1f8802831360b6 (commit) via 4d9d9d0423ed611fa6d620ca3aa088fc16a0d59e (commit) via c2829269f5af8a860b54ceac3596610b1f51fee5 (commit) via 6c4cfb244b408f980be24ea2175bc58baf74a6f9 (commit) via 567420d10895611e03d5ee65e6b24c16a69a6e99 (commit) via d8dd4d5fe6d5ab971b731df5f65025a0dbbdb912 (commit) via e1316e60d4d1fe406efc6e7536b2bdb43733e9d2 (commit) via 47e9c225c1cb6fb1809218f5f546a70fc85f705c (commit) via 5960642af99c6dc84b28e1bc69a617099b9dee97 (commit) via 36aed29d3774a156c88ca7110f3c12605d861b9c (commit) via 6e33951edcbed1fd803beabcde2af3b252b92164 (commit) via 060967202b8def804d9afccad343d2eaef8a81cf (commit) via 7ff38b1c898be5db053193f26d6a3a1d8a6074e8 (commit) via 0b45135ec1364f9d0c850a52ce05cf4ffb038021 (commit) via da8c46d2967b6325dcd2cc72eca26d807964c93c (commit) via 5599c404621b2d8ac021c1427aee6e8974572042 (commit) via 016a3251631341bf4d8fe50966d2b70f8ea69e96 (commit) via 308d9764e1ce02c31882e6d99bbaebe63c7fe830 (commit) via de1c2c52237dd3e8d94df7b4a304ac9df75c8cf3 (commit) via 782e0bf46a84f57139f25c31c2ffc93508f07ef5 (commit) via aead7601eb0ddc3fa51d43747bdad0e02abda342 (commit) via 84da3f0cf938f8f74d9fa89f89f228bc950282c6 (commit) via 9d996aba1a365564c18dd939772d379c97c94213 (commit) via 33ebda9d6841e18d9ef18b94c3dcad7d0498ab3d (commit) via a44892be35506471a53e5bc8c2def4ffccf451f9 (commit) via ca0a5f0bd33d0aa17a5cf518e41e47ddfde486ad (commit) via 608a1e46394e9df951968c9112fbec3065da5fba (commit) via 05d999b0896ab6ccd4ce23a715765484c60a967d (commit) via f0ce0d3a331129309a46a6a9ac85fce35acae72b (commit) via bf47e2482d3e88580ba5a22db48bc773fa8ced3f (commit) via f6a9d9c7db9b6b58e6915869c1bd7c83d96d31ee (commit) via 83e97ed023e828a7d924b765661374272c7f7eb4 (commit) via 4807d3f32937bc4d932638fd8f8b3084be82b74a (commit) via b6b9ffccac04b8729d5206b5a9fefa09ea2510f3 (commit) via 863d01bde2725d009c45ab7e9ba1dbf3f5b923f8 (commit) via 00db26facc14ac830adef704bba9b24d0d366ddf (commit) via ad071a3055b9b47dad340c1a1cb3a9b39529cef0 (commit) via e0a3af227ee0602ae69320fd6f931c363f14975b (commit) via 0cf003f49ee8bbd5dc5f1ce45193c7ae056c69b8 (commit) from d11dfeff36085e72697b0935fa9ea7b478502be3 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit fdfff5459f87e263811f0fe597946b6ec8ef2ca5 Author: Jan Kratochvil Date: Wed Aug 5 21:41:00 2015 +0200 sticky Message-Id: <1433754079-10395-1-git-send-email-gbenson@redhat.com> Philippe Waroquiers wrote: > On Fri, 2015-06-05 at 12:22 +0100, Gary Benson wrote: > > Built and regtested on RHEL6.6 x86_64. > I tested with the last SVN version of the Valgrind gdbserver (that > supports qXfer:exec-file:read+). > > The patch introduces a regression: > with the patch, GDB does not anymore automatically load the > exec-file. > > I bypassed this problem by ignoring fake_pid_p in remote.c: > --- a/gdb/remote.c > +++ b/gdb/remote.c > @@ -1624,9 +1624,13 @@ remote_add_inferior (int fake_pid_p, int pid, int > attached, > inf->attach_flag = attached; > inf->fake_pid_p = fake_pid_p; > > - /* If no main executable is currently open then attempt to > - open the file that was executed to create this inferior. */ > - if (try_open_exec && get_exec_file (0) == NULL) > + /* Attempt to open the file that was executed to create this > + inferior. If the user has explicitly specified executable > + and/or symbol files then warn the user if their choices do > + not match. Otherwise, set exec_file and symfile_objfile to > + the new file. */ > + printf("fake_pid_p %d\n", fake_pid_p); > + if (try_open_exec)// && !fake_pid_p) > exec_file_locate_attach (pid, 1); > > Effectively, the printf shows that with Valgrind gdbsrv, > fake_pid_p value is 1. > > When ignoring fake_pid_p, GDB can properly attach > to different Valgrind gdbsrv, and changes of executable > as expected. Ah, it seems I mailed a bad patch, my apologies! I was working on two fixes that touched the same line, and it looks like I rebased them in the wrong order. This updated patch has been created against the latest gdb/master (80fb91378c91a8239817a5ab2b1c3e346109db25). Could you please try your tests again? Thanks, Gary --- On attach, GDB will only attempt to determine the main executable's filename if one is not already set. This causes problems if you attach to one process and then attach to another: GDB will not attempt to discover the main executable on the second attach. If the two processes have different main executable files then the symbols will now be wrong. This is PR gdb/17626. In GDB some filenames are supplied by the user (e.g. using the "file" or "symbol-file" commands) and some are determined by GDB (e.g. while processing an "attach" command). This commit updates GDB to track which filenames were supplied by the user. When GDB might attempt to determine an executable filename and one is already set, filenames determined by GDB may be overridden but user-supplied filenames will not. gdb/ChangeLog: PR gdb/17626 * progspace.h (struct program_space) : New field. : Likewise. (symfile_objfile_is_user_supplied): New macro. * exec.h (exec_file_is_user_supplied): Likewise. * exec.c (exec_close): Clear exec_file_is_user_supplied. (exec_file_locate_attach): Remove get_exec_file check. Do not replace user-supplied executable or symbol files. Warn if user-supplied executable or symbol files do not match discovered file. (exec_file_command): Set exec_file_is_user_supplied. * symfile.c (symbol_file_clear): Clear symfile_objfile_is_user_supplied. (symbol_file_command): Set symfile_objfile_is_user_supplied. * inferior.c (add_inferior_command): Set exec_file_is_user_supplied and symfile_objfile_is_user_supplied. * main.c (captured_main): Likewise. * infcmd.c (attach_command_post_wait): Always call exec_file_locate_attach. Only call reopen_exec_file and reread_symbols if exec_file_is_user_supplied. * remote.c (remote_add_inferior): Remove get_exec_file check around exec_file_locate_attach. commit ae03cee1305381dac0621f97d77645c90e9fd907 Author: Jan Kratochvil Date: Wed Aug 5 21:28:34 2015 +0200 mainbuildid commit fd861b8aae745799a44483808388cde6c4f20aaf Author: Jan Kratochvil Date: Wed Aug 5 21:28:33 2015 +0200 hexallocate commit 868abc8257c7e24b2ae4a68c57e5854bb58ecf48 Author: Jan Kratochvil Date: Wed Aug 5 21:28:33 2015 +0200 locatetest commit e620804cc6184ac2766423ccbdd8aabaff6b70fa Author: Jan Kratochvil Date: Wed Aug 5 21:28:33 2015 +0200 buildidwarn commit 9efcc0216f1fe90dbea76bb8e2738145205c6933 Author: Jan Kratochvil Date: Wed Aug 5 21:28:33 2015 +0200 buildidsolibbfdopen commit a823fdc321b6fb4cd2c5a46f21f67e961d737590 Author: Jan Kratochvil Date: Wed Aug 5 21:28:32 2015 +0200 buildidverify commit 847a1b1366e3ed0358ea7c8f57142865b52bd863 Author: Jan Kratochvil Date: Wed Aug 5 21:28:32 2015 +0200 buildidsolibsearch commit feb785d4098bf5bba00e940a7ebe6a96ac0edf72 Author: Jan Kratochvil Date: Wed Aug 5 21:28:32 2015 +0200 buildidtofile commit 65bf749134458fe10426b700160b670d5643c3eb Author: Jan Kratochvil Date: Wed Aug 5 21:28:32 2015 +0200 buildidproto commit 86cc52cb9b768555c6a8551cdd02064846fd7791 Author: Jan Kratochvil Date: Wed Aug 5 21:28:31 2015 +0200 buildidtobfd commit 80394b0cb9ca0114f2444f6644b0bf9402966c94 Author: Jan Kratochvil Date: Wed Aug 5 21:28:31 2015 +0200 buildidforcemove commit 18b680351b49456ba30460c7c5f68abf570706e4 Author: Jan Kratochvil Date: Wed Aug 5 21:28:31 2015 +0200 buildidfreefix commit cf9c2659e990164f6c207c34aa0235d78164d7f4 Author: Jan Kratochvil Date: Wed Aug 5 21:28:30 2015 +0200 unvalidate commit ee862c4e7d47bd38fe07504d5cc71eca33a01281 Author: Jan Kratochvil Date: Wed Aug 5 21:28:30 2015 +0200 openpsymfile commit 61aa8f63537242fb9fdc89b948f88b7787b27599 Author: Jan Kratochvil Date: Tue Aug 11 22:34:28 2015 +0200 openpsolib commit fea5a2a69d6351ecfdce8ec701017a99a41af745 Author: Jan Kratochvil Date: Tue Aug 11 22:34:28 2015 +0200 openp commit efd2bb0409acad9f0a23fffdd8af9cfd5ac442c9 Author: Jan Kratochvil Date: Tue Aug 11 22:34:28 2015 +0200 filelib commit 8b70dce00e539378daf8ba171d7a0890e280c992 Author: Jan Kratochvil Date: Tue Aug 11 22:34:28 2015 +0200 targetfd commit d42beee1aec30b9f4097979f2ab07214fcca3d95 Author: Jan Kratochvil Date: Tue Aug 11 22:34:27 2015 +0200 openpnullpathname commit 17906c8d67cbe67be648b292c6f344477600d7f9 Author: Jan Kratochvil Date: Tue Aug 11 22:34:27 2015 +0200 openpmode commit 0a8f785466dbfad09b32e1ce76759049be4f65b2 Author: Jan Kratochvil Date: Tue Aug 11 22:34:27 2015 +0200 openppath commit 3d0cb2c5b709dfe05fd3abd2d001f9a46fbf0686 Author: Jan Kratochvil Date: Tue Aug 11 22:34:27 2015 +0200 openpenum commit d879323ac26a303234a0286d10b8b1939d97a3dc Author: Jan Kratochvil Date: Tue Aug 11 22:34:26 2015 +0200 sysrootdelim commit 7c4a05d5f2b5acaf762c6ff1c7caf7aa83128c32 Author: Jan Kratochvil Date: Tue Aug 11 22:34:26 2015 +0200 sysrootconst commit 0956a0bae075d09240541446f183e0810e20d2a0 Author: Jan Kratochvil Date: Fri Jul 17 22:31:05 2015 +0200 build-id: -config,+configure.tgt commit 4876094c705235a5f2d81f2333dbea0d625e9697 Author: Jan Kratochvil Date: Fri Jul 17 22:30:32 2015 +0200 Revert "Revert the previous 7 commits of: Validate binary before use" This reverts commit db1ff28b60f8886b8d7c634f1db2f939ba47a13c. Conflicts: gdb/ChangeLog gdb/gdbserver/ChangeLog gdb/testsuite/ChangeLog commit 40fbed84815b00960f7fac8d2e7857942df4308c Author: Jiong Wang Date: Tue Aug 11 17:44:30 2015 +0100 [AArch64][8/8] LD support BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12 2015-08-11 Jiong Wang bfd/ * elfnn-aarch64.c (IS_AARCH64_TLS_RELOC): Recognize BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12. (aarch64_reloc_got_type): Likewise. (elfNN_aarch64_final_link_relocate): Likewise. (elfNN_aarch64_relocate_section): Likewise. * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise. (_bfd_aarch64_elf_resolve_relocation): Likewise. ld/testsuite/ * ld-aarch64/emit-relocs-529.s: New testcase. * ld-aarch64/emit-relocs-529-overflow.s: Likewise. * ld-aarch64/emit-relocs-86.s: Likewise. * ld-aarch64/emit-relocs-86-overflow.s: Likewise. * ld-aarch64/emit-relocs-529.d: New expectation file. * ld-aarch64/emit-relocs-529-overflow.d: Likewise. * ld-aarch64/emit-relocs-86.d: Likewise. * ld-aarch64/emit-relocs-86-overflow.d: Likewise. * ld-aarch64/aarch64-elf.exp: Run new testcases. commit 70151fb54ab6e3d5dc7f99fe3fbfa7ad2f1ab2af Author: Jiong Wang Date: Tue Aug 11 17:38:49 2015 +0100 [AArch64][7/8] GAS support BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12 2015-08-11 Jiong Wang include/elf/ * aarch64.h (R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12): Define. bfd/ * reloc.c (BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12): New entry. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12. gas/ * config/tc-aarch64.c (reloc_table): New relocation modifiers "dtprel_lo12". (md_apply_fix): Support BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12. (aarch64_force_relocation): Likewise. gas/testsuite/ * gas/aarch64/reloc-dtprel_lo12-1.s: New testcase. * gas/aarch64/reloc-dtprel_lo12-ilp32-1.s: Likewise. * gas/aarch64/reloc-dtprel_lo12-1.d: New expectation file. * gas/aarch64/reloc-dtprel_lo12-ilp32-1.d: Likewise. commit 73f925cc20e839d4b7352b809a33e4e7dcbfa05a Author: Jiong Wang Date: Tue Aug 11 17:20:17 2015 +0100 [AArch64][6/8] LD support BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC 2015-08-11 Jiong Wang bfd/ * elfnn-aarch64.c (IS_AARCH64_TLS_RELOC): Recognize BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC. (aarch64_reloc_got_type): Likewise. (elfNN_aarch64_final_link_relocate): Likewise. (elfNN_aarch64_relocate_section): Likewise. (elfNN_aarch64_gc_sweep_hook): Likewise. (elfNN_aarch64_check_relocs): Likewise. * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise. (_bfd_aarch64_elf_resolve_relocation): Likewise. ld/testsuite/ * ld-aarch64/tls-small-ld.s: Update testcase. commit a12fad50d28b9251893c6709ac4374773350c21a Author: Jiong Wang Date: Tue Aug 11 17:15:56 2015 +0100 [AArch64][5/8] GAS support BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC 2015-08-11 Jiong Wang bfd/ * reloc.c (BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC): New entry. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC. gas/ * config/tc-aarch64.c (reloc_table): New relocation modifiers. (md_apply_fix): Support BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC. (aarch64_force_relocation): Likewise. gas/testsuite/ * gas/aarch64/reloc-tlsldm_lo12_nc-1.s: New testcase. * gas/aarch64/reloc-tlsldm_lo12_nc-ilp32-1.s: Likewise. * gas/aarch64/reloc-tlsldm_lo12_nc-1.d: New expectation file. * gas/aarch64/reloc-tlsldm_lo12_nc-ilp32-1.d: Likewise. commit 56a2e4507a4249634422fba2373b651b774c55ac Author: Jiong Wang Date: Tue Aug 11 17:07:30 2015 +0100 [AArch64][4/8] Add R_AARCH64_P32_TLSLD_ADD_LO12_NC in elf header 2015-08-11 Jiong Wang include/elf/ * aarch64.h (R_AARCH64_P32_TLSLD_ADD_LO12_NC): Define. commit f69e49203b49b7353748b78a9d8111440d9ac291 Author: Jiong Wang Date: Tue Aug 11 17:05:34 2015 +0100 [AArch64][3/8] LD support BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21 2015-08-11 Jiong Wang bfd/ * elfnn-aarch64.c (IS_AARCH64_TLS_RELOC): Recognize BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21. (aarch64_reloc_got_type): Likewise. (elfNN_aarch64_final_link_relocate): Likewise. (elfNN_aarch64_relocate_section): Likewise. (elfNN_aarch64_gc_sweep_hook): Likewise. (elfNN_aarch64_check_relocs): Likewise. * elfxx-aarch64.c (_bfd_aarch64_elf_put_addend): Likewise. (_bfd_aarch64_elf_resolve_relocation): Likewise. ld/testsuite/ * ld-aarch64/tls-small-ld.s: New file. * ld-aarch64/tls-small-ld.d: Likewise. * ld-aarch64/aarch64-elf.exp: Run new test. commit 1107e076cff62e1093da024ab73e5648051781ab Author: Jiong Wang Date: Tue Aug 11 16:58:20 2015 +0100 [AArch64][2/8] GAS support BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21 2015-08-11 Jiong Wang bfd/ * reloc.c (BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21): New entry. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21. gas/ * config/tc-aarch64.c (reloc_table): New relocation modifiers. (md_apply_fix): Support BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21. (aarch64_force_relocation): Likewise. gas/testsuite/ * gas/aarch64/reloc-tlsldm-page-1.s: New testcase. * gas/aarch64/reloc-tlsldm-page-ilp32-1.s: Likewise. * gas/aarch64/reloc-tlsldm-page-1.d: New expectation file. * gas/aarch64/reloc-tlsldm-page-ilp32-1.d: Likewise. commit 2c0a466a7f83eb1ee5f5da0bdd7b4b643fbe3278 Author: Jiong Wang Date: Tue Aug 11 16:53:12 2015 +0100 [AArch64][1/8] Add R_AARCH64_P32_TLSLD_ADR_PAGE21 in elf header 2015-08-11 Jiong Wang include/elf/ * aarch64.h (R_AARCH64_P32_TLSLD_ADR_PAGE21): Define. commit 97dc35c88dd470465a99edeb0b491012a368f2bf Author: H.J. Lu Date: Tue Aug 11 12:58:52 2015 -0700 Skip IFUNC relocations in debug sections Skip IFUNC relocations in debug sections ignored by ld.so. bfd/ PR ld/18808 * elf32-i386.c (elf_i386_relocate_section): Skip IFUNC relocations in debug sections. * elf64-x86-64.c (elf_x86_64_relocate_section): Likewise. ld/testsuite/ PR ld/18808 * ld-ifunc/ifunc.exp: Add a test for PR ld/18808. * ld-ifunc/pr18808.out: New file. * ld-ifunc/pr18808a.c: Likewise. * ld-ifunc/pr18808b.c: Likewise. commit 922c5db5e733526f12e2fbfeb72c7f1f90089d53 Author: Nick Clifton Date: Tue Aug 11 18:00:36 2015 +0100 Fix the disassembly of the AArch64 SIMD EXT instruction. PR 18800 * aarch64-tbl.h (aarch64_opcode_table): Fix mask for SIMD EXT instruction. commit dbac553d28887561e3f154654ec8e70195d89943 Author: Peter Zotov Date: Tue Aug 11 17:12:21 2015 +0100 Fix encoding or OpenRisk1000 PC relative relocations. PR ld/18759 * elf32-or1k.c (R_OR1K_32_PCREL): Set pcrel_offset to TRUE. (R_OR1K_16_PCREL): Likewise. (R_OR1K_8_PCREL): Likewise. commit 4c0160b8e2f902ecdf6a42dc20b5f39b0a48fac7 Author: Nick Clifton Date: Tue Aug 11 17:02:25 2015 +0100 Fix typo in coff-sh.c. PR binutils/18747 * coff-sh.c (_bfd_sh_align_load_span): Fix typo when setting opcode count. commit c8373ebb4ed77c361d95aa806cfbe1b4062b5be5 Author: Alan Modra Date: Tue Aug 11 21:54:48 2015 +0930 Tweak binutils testsuite Some targets provide aligned .bss sections, so explicitly align. msp430 and rl78 emit "magic" symbols when assembling symbol.s, and mips targets emit STT_OBJECT rather than STT_NOTYPE syms. * binutils-all/strip-12.s: Align .bss section. * binutils-all/strip-12.d: Adjust. * binutils-all/symbols-1.d: Allow extraneous symbols. * binutils-all/symbols-2.d: Likewise, and V for weakened syms. * binutils-all/symbols-3.d: Likewise. * binutils-all/symbols-4.d: Likewise. commit 4b0e8a5f80441fad8eddaf68e7af70bd6991aa37 Author: Nick Clifton Date: Tue Aug 11 11:57:09 2015 +0100 Fix memory access problems discovered when running some binary tools on corrupt files. PR binutils/18758 * elf.c (_bfd_elf_setup_sections): Add checks for corrupt section group information. * peicode.h (pe_ILF_make_a_section): Ensure alignment of the used_by_bfd pointer. (pe_ILF_build_a_bfd): Ensure alignment of vars.data pointer. commit 64140f86ab732f9ed87beccab07c32befaf9ca52 Author: H.J. Lu Date: Tue Aug 11 03:50:17 2015 -0700 Fix a typo in _bfd_elf_copy_private_bfd_data * elf.c (_bfd_elf_copy_private_bfd_data): Fix a typo. commit eff0bc54a343fed1dd152f0a1b455b2438f76e6f Author: Nick Clifton Date: Tue Aug 11 10:07:21 2015 +0100 Fix compile time warning messages about constant expressions where a value is being shifted into bit 31. PR gas/18765 * config/tc-arm.c (move_or_literal_pool): Use U suffix to remove compile time warnings about constant expressions being shifted into bit 31. (do_iwmmxt_wldstd): Likewise. (do_iwmmxt_wrwrwr_or_imm5): Likewise. (md_assemble): Likewise. commit e66c3c2568fcfebc931bc18d35055c7f784133ce Author: Nick Clifton Date: Tue Aug 11 09:49:18 2015 +0100 Convert 'A && (!A || B)' to 'A || B' in various places. PR gas/18574 * config/tc-msp430.c (msp430_operands): Rewrite if statements to remove redundant checks. (md_apply_fix): Likewise. commit d29b2a1ece30514431861472d784ae8722816a4c Author: Nick Clifton Date: Tue Aug 11 09:43:16 2015 +0100 Fix typo checking MMIX operands. PR gas/18677 * config/tc-mmix.c (md_assemble): Fix typo checking operands with a numeric constant value. commit 88fd0449a3f88c12c8930698a833f6c1c4478307 Author: Nick Clifton Date: Tue Aug 11 09:40:02 2015 +0100 Fix typo checking number of operands. PR gas/18678 * config/tc-tic4x.c (tic4x_insn_check): Fix typo. commit 2b29bb41d56d4e4ba495393f4f519718b73f92df Author: Nick Clifton Date: Tue Aug 11 09:36:57 2015 +0100 Fix a typo where the same name was checked twice. PR gas/18679 * config/xtensa-relax.c (same_operand_name): Fix typo. commit 30379291886a171e6dc202122bc1c583318c2e17 Author: Iain Buclaw Date: Tue Aug 11 08:51:05 2015 +0200 PR gdb/18669 libiberty demangle.test failure: strtod() on sparc-sun-solaris2.9 Test symbols did not demangle as per the d-demangle-expected tests because strtod() on Solaris 9 does not accept hexadecimal numbers. This has now been fixed up so that no attempt at formatting/converting the demangled hexadecimal literals are done. libiberty/ChangeLog: 2015-08-11 Iain Buclaw * d-demangle.c (dlang_parse_real): Remove call to strtod. (strtod): Remove declaration. * testsuite/d-demangle-expected: Update float and complex literal tests to check correct hexadecimal demangling. commit 125453567f4a0abc68cfc67a3df46be1aa9bb904 Author: GDB Administrator Date: Tue Aug 11 00:00:08 2015 +0000 Automatic date update in version.in commit 80af41e00325ff3e877df11d465baeaa3d565103 Author: Doug Evans Date: Mon Aug 10 13:36:36 2015 -0700 remove trailing space in previous entry commit e27852be65403306da198b3c1d7b222acd6bdfe9 Author: Doug Evans Date: Mon Aug 10 12:23:09 2015 -0700 PR gdb/17960 Internal error: tracker != NULL when completing on file:function gdb/ChangeLog: * symtab.c (make_file_symbol_completion_list_1): Renamed from make_file_symbol_completion_list and made static. (make_file_symbol_completion_list): New function. gdb/testsuite/ChangeLog: * gdb.base/completion.exp: Add location completer tests. commit fd7dcb94cbd44629b3929336aec8b76c3e339656 Author: Joel Brobecker Date: Mon Aug 10 10:08:44 2015 -0700 gdb/infrun.c: Various trivial ARI fixes. gdb/ChangeLog: * infrun.c (follow_fork, displaced_step_prepare, resume): Remove trailing new-line at end of warning message. (proceed): Add i18n marker to error messages. commit 422f11824b3abf6c71042e2ee3aed572f250fc89 Author: H.J. Lu Date: Mon Aug 10 07:57:40 2015 -0700 Replace hidden with versioned in elf_link_hash_entry This patch replaces the "hidden" field with the "versioned" field in elf_link_hash_entry so that we can avoid calling strchr and strrchr if the symbol is unversioned. * elf-bfd.h (elf_symbol_version): New enum. (elf_link_hash_entry): Replace hidden with versioned. * elflink.c (_bfd_elf_merge_symbol): Don't look for symbol version if the symbol is unversioned. Initialize versioned. (_bfd_elf_add_default_symbol): Don't look for symbol version if the symbol is unversioned or hidden. Initialize versioned. (elf_collect_hash_codes): Don't look for symbol version if the symbol is unversioned. (elf_collect_gnu_hash_codes): Likewise. (bfd_elf_gc_mark_dynamic_ref_symbol): Likewise. (_bfd_elf_link_hash_copy_indirect): Check versioned instead of hidden. (elf_link_output_extsym): Likewise. commit 75fb7498c25ba89262867abe5340a8d38f1e19cd Author: Robert Suchanek Date: Mon Aug 10 08:57:31 2015 +0100 Add SIGRIE instruction for MIPS R6 opcodes/ * mips-opc.c (mips_builtin_opcodes): Add "sigrie". gas/testsuite/ * gas/mips/r6.s: Add tests for "sigrie". * gas/mips/r6.d: Check for "sigrie". * gas/mips/r6-n32.d: Likewise. * gas/mips/r6-n64.d: Likewise. commit 2bc6d61bf3e4935921ae2612b3c6cd0604428960 Author: GDB Administrator Date: Mon Aug 10 00:00:08 2015 +0000 Automatic date update in version.in commit 662a7b62c477e93284de4db127b4dbc3529caaa5 Author: GDB Administrator Date: Sun Aug 9 00:00:07 2015 +0000 Automatic date update in version.in commit 8fe3f3d6afbf084f9ef36d887b661792c769f862 Author: Hans-Peter Nilsson Date: Sat Aug 8 22:44:37 2015 +0200 tc-arm.c: Append ULL to 0xFFFFFFFFFFFFF to avoid errors on 32-bit hosts. commit e44bf850dff24e0442408e26043d957588be88ee Author: GDB Administrator Date: Sat Aug 8 00:00:08 2015 +0000 Automatic date update in version.in commit 0a77d46120137650c13091866cb93150910e1317 Author: Hans-Peter Nilsson Date: Sat Aug 8 01:04:50 2015 +0200 binutils-all/strip-12.s: Use ".section .bss" instead of ".bss" which isn't supported by all ELF targets. commit d4ac1f878ecef58f1e4b4ff0cbfb4b475656eaf4 Author: H.J. Lu Date: Fri Aug 7 10:28:42 2015 -0700 Check sh_type/sh_flags/sh_addralign/sh_entsize when copying sh_link/sh_info When copying the sh_link and sh_info fields in stripped section headers, we also check if the sh_type, sh_flags, /sh_addralign and sh_entsize fields of the output section match the output. Since --only-keep-debug turns all non-debug sections into SHT_NOBITS sections, the output SHT_NOBITS type matches any input type. bfd/ PR binutils/18785 * elf.c (_bfd_elf_copy_private_bfd_data): When copying the sh_link and sh_info fields in stripped section headers, we also check if the sh_type, sh_flags, /sh_addralign and sh_entsize fields of the output section match the output. Since --only-keep-debug turns all non-debug sections into SHT_NOBITS sections, the output SHT_NOBITS type matches any input type. binutils/testsuite/ PR binutils/18785 * binutils-all/objcopy.exp: Run strip-12. * binutils-all/strip-12.d: New file. * binutils-all/strip-12.s: Likewise. commit f12899e9f081bb857c96999386e64a4252c4a325 Author: Pedro Alves Date: Thu Aug 6 18:23:01 2015 +0100 native Linux: enable always non-stop by default The testsuite shows no regressions with this forced on, on: - Native x86_64 Fedora 20, with and output "set displaced off". - Native x86_64 Fedora 20, on top of x86 software single-step series. - PPC64 Fedora 18. - S/390 RHEL 7.1. Let's try making it the default. gdb/ChangeLog: 2015-08-07 Pedro Alves * linux-nat.c (linux_nat_always_non_stop_p): Return 1. commit 5ac213430b710e8aaed1f4cea6ff809783201df9 Author: Pedro Alves Date: Thu Aug 6 18:23:01 2015 +0100 S/390: displaced stepping and PC-relative RIL-b/RIL-c instructions This adds displaced stepping support for the General-Instruction Extension Facility instructions, which have a PC-relative displacement (RIL-b/RIL-c). We already handle RIL branches, but not others. Currently, displaced stepping a breakpoint put on any of these instructions results in the inferior crashing when or after the instruction is executed out-of-line in the scratch pad. This patch takes the easy route of patching the displacement in the copy of the instruction in the scratch pad. As the displacement is a signed 32-bit field, it's possible that the stratch pad ends too far that the needed displacement doesn't fit in the adjusted instruction, as e.g., if stepping over a breakpoint in a shared library (the scratch pad is around the main program's entry point). That case is detected and GDB falls back to stepping over the breakpoint in-line (which involves pausing all threads momentarily). (We could probably do something smarter, but I don't plan on doing it myself. This was already sufficient to get "maint set target-non-stop on" working regression free on S/390.) Tested on S/390 RHEL 7.1, where it fixes a few hundred FAILs when testing with displaced stepping force-enabled, with the end result being no regressions compared to a test run that doesn't force displaced stepping. Fixes the non-stop tests compared to mainline too; most are crashing due to this on the machine I run tests on. gdb/ChangeLog: 2015-08-07 Pedro Alves * s390-linux-tdep.c (is_non_branch_ril) (s390_displaced_step_copy_insn): New functions. (s390_displaced_step_fixup): Update comment. (s390_gdbarch_init): Install s390_displaced_step_copy_insn as gdbarch_displaced_step_copy_insn hook. commit 7f03bd92e389a32da490bb55037881cf374d0f69 Author: Pedro Alves Date: Thu Aug 6 18:23:00 2015 +0100 PPC64: Fix gdb.arch/ppc64-atomic-inst.exp with displaced stepping The ppc64 displaced step code can't handle atomic sequences. Fallback to stepping over the breakpoint in-line if we detect one. gdb/ChangeLog: 2015-08-07 Pedro Alves * infrun.c (displaced_step_prepare_throw): Return -1 if gdbarch_displaced_step_copy_insn returns NULL. Update intro comment. * rs6000-tdep.c (LWARX_MASK, LWARX_INSTRUCTION, LDARX_INSTRUCTION) (STWCX_MASK, STWCX_INSTRUCTION, STDCX_INSTRUCTION): Move higher up in file. (ppc_displaced_step_copy_insn): New function. (ppc_displaced_step_fixup): Update comment. (rs6000_gdbarch_init): Install ppc_displaced_step_copy_insn as gdbarch_displaced_step_copy_insn hook. * gdbarch.sh (displaced_step_copy_insn): Document what happens on NULL return. * gdbarch.h: Regenerate. gdb/testsuite/ChangeLog: 2015-08-07 Pedro Alves * gdb.arch/ppc64-atomic-inst.exp (do_test): New procedure, move tests here. (top level): Run do_test with and without displaced stepping. commit 3fc8eb30a95df3fd07a63e9bd0a9d309b86a0357 Author: Pedro Alves Date: Thu Aug 6 18:22:59 2015 +0100 Disable displaced stepping if trying it fails Running the testsuite with "maint set target-non-stop on" shows: (gdb) PASS: gdb.base/valgrind-infcall.exp: continue #98 (false warning) continue Continuing. dl_main (phdr=..., auxv=) at rtld.c:2302 2302 LIBC_PROBE (init_complete, 2, LM_ID_BASE, r); Cannot access memory at address 0x400532 (gdb) PASS: gdb.base/valgrind-infcall.exp: continue #99 (false warning) p gdb_test_infcall () $1 = 1 (gdb) FAIL: gdb.base/valgrind-infcall.exp: p gdb_test_infcall () Even though that was a native GNU/Linux test run, this test spawns Valgrind and connects to it with "target remote". The error above is actually orthogonal to target-non-stop. The real issue is that that enables displaced stepping, and displaced stepping doesn't work with Valgrind, because we can't write to the inferior memory (thus can't copy the instruction to the scratch pad area). I'm sure there will be other targets with the same issue, so trying to identify Valgrind wouldn't be sufficient. The fix is to try setting up the displaced step anyway. If we get a MEMORY_ERROR, we disable displaced stepping for that inferior, and fall back to doing an in-line step-over. If "set displaced-stepping" is "on" (as opposed to "auto), GDB warns displaced stepping failed ("on" is mainly useful for the testsuite, not for users). Tested on x86_64 Fedora 20. gdb/ChangeLog: 2015-08-07 Pedro Alves * inferior.h (struct inferior) : New field. * infrun.c (use_displaced_stepping_now_p): New parameter 'inf'. Return false if dispaced stepping failed before. (resume): Pass the current inferior to use_displaced_stepping_now_p. Wrap displaced_step_prepare in TRY/CATCH. If we get a MEMORY_ERROR, set the inferior's displaced_stepping_failed flag, and fall back to an in-line step-over. gdb/testsuite/ChangeLog: 2015-08-07 Pedro Alves * gdb.base/valgrind-disp-step.c: New file. * gdb.base/valgrind-disp-step.exp: New file. commit d4569d7bc572ae8f10d7c527cbdfbc9d26cc1ed8 Author: Pedro Alves Date: Thu Aug 6 18:22:59 2015 +0100 Fix step-over-{trips-on-watchpoint|lands-on-breakpoint}.exp race On a target that is both always in non-stop mode and can do displaced stepping (such as native x86_64 GNU/Linux, with "maint set target-non-stop on"), the step-over-trips-on-watchpoint.exp test sometimes fails like this: (gdb) PASS: gdb.threads/step-over-trips-on-watchpoint.exp: no thread-specific bp: step: thread 1 set scheduler-locking off (gdb) PASS: gdb.threads/step-over-trips-on-watchpoint.exp: no thread-specific bp: step: set scheduler-locking off step -[Switching to Thread 0x7ffff7fc0700 (LWP 11782)] -Hardware watchpoint 4: watch_me - -Old value = 0 -New value = 1 -child_function (arg=0x0) at /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.c:39 -39 other = 1; /* set thread-specific breakpoint here */ -(gdb) PASS: gdb.threads/step-over-trips-on-watchpoint.exp: no thread-specific bp: step: step +wait_threads () at /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.threads/step-over-trips-on-watchpoint.c:49 +49 return 1; /* in wait_threads */ +(gdb) FAIL: gdb.threads/step-over-trips-on-watchpoint.exp: no thread-specific bp: step: step Note "scheduler-locking" was set off. The problem is that on such targets, the step-over of thread 2 and the "step" of thread 1 can be set to run simultaneously (since with displaced stepping the breakpoint isn't ever removed from the target), and sometimes, the "step" of thread 1 finishes first, so it'd take another resume to see the watchpoint trigger. Fix this by replacing the wait_threads function with a one-line infinite loop that doesn't call any function, so that the "step" of thread 1 never finishes. gdb/testsuite/ChangeLog: 2015-08-07 Pedro Alves * gdb.threads/step-over-lands-on-breakpoint.c (wait_threads): Delete function. (main): Add alarm. Run an infinite loop instead of calling wait_threads. * gdb.threads/step-over-lands-on-breakpoint.exp (do_test): Change comment. * gdb.threads/step-over-trips-on-watchpoint.c (wait_threads): Delete function. (main): Add alarm. Run an infinite loop instead of calling wait_threads. * gdb.threads/step-over-trips-on-watchpoint.exp (do_test): Change comment. commit bfedc46af315dc6484295699c35e05040d76d700 Author: Pedro Alves Date: Thu Aug 6 18:22:58 2015 +0100 Fix interrupt-noterm.exp on targets always in non-stop With "maint set target-non-stop on" we get: @@ -66,13 +66,16 @@ Continuing. interrupt (gdb) PASS: gdb.base/interrupt-noterm.exp: interrupt -Program received signal SIGINT, Interrupt. -PASS: gdb.base/interrupt-noterm.exp: inferior received SIGINT -testcase src/gdb/testsuite/gdb.base/interrupt-noterm.exp completed in 0 seconds +[process 12119] #1 stopped. +0x0000003615ebc6d0 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:81 +81 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) +FAIL: gdb.base/interrupt-noterm.exp: inferior received SIGINT (timeout) +testcase src/gdb/testsuite/gdb.base/interrupt-noterm.exp completed in 10 seconds That is, we get "[$thread] #1 stopped" instead of SIGINT. The issue is that we don't currently distinguish send "interrupt/ctrl-c" to target terminal vs "stop/pause" thread well; both cases go through "target_stop". And then, the native Linux backend (linux-nat.c) implements target_stop with SIGSTOP in non-stop mode, and SIGINT in all-stop mode. Since "maint set target-non-stop on" forces the backend to be always running in non-stop mode, even though the user-visible behavior is "set non-stop" is "off", "interrupt" causes a SIGSTOP instead of the SIGINT the test expects. Fix this by introducing a target_interrupt method to use in the "interrupt/ctrl-c" case, so "set non-stop off" can always work the same irrespective of "maint set target-non-stop on/off". I'm explictly considering changing the "set non-stop on" behavior as out of scope here. Most of the patch is an across-the-board rename of to_stop hook implementations to to_interrupt. The only targets where something more than a rename is being done are linux-nat.c and remote.c, which are the only targets that support async, and thus are the only ones the core side calls target_stop on. gdb/ChangeLog: 2015-08-07 Pedro Alves * darwin-nat.c (darwin_stop): Rename to ... (darwin_interrupt): ... this. (_initialize_darwin_inferior): Adjust. * gnu-nat.c (gnu_stop): Delete. (gnu_target): Don't install gnu_stop. * inf-ptrace.c (inf_ptrace_stop): Rename to ... (inf_ptrace_interrupt): ... this. (inf_ptrace_target): Adjust. * infcmd.c (interrupt_target_1): Use target_interrupt instead of target_stop. * linux-nat (linux_nat_stop): Rename to ... (linux_nat_interrupt): ... this. (linux_nat_stop): Reimplement. (linux_nat_add_target): Install linux_nat_interrupt. * nto-procfs.c (nto_interrupt_twice): Rename to ... (nto_handle_sigint_twice): ... this. (nto_interrupt): Rename to ... (nto_handle_sigint): ... this. Call target_interrupt instead of target_stop. (procfs_wait): Adjust. (procfs_stop): Rename to ... (procfs_interrupt): ... this. (init_procfs_targets): Adjust. * procfs.c (procfs_stop): Rename to ... (procfs_interrupt): ... this. (procfs_target): Adjust. * remote-m32r-sdi.c (m32r_stop): Rename to ... (m32r_interrupt): ... this. (init_m32r_ops): Adjust. * remote-sim.c (gdbsim_stop_inferior): Rename to ... (gdbsim_interrupt_inferior): ... this. (gdbsim_stop): Rename to ... (gdbsim_interrupt): ... this. (gdbsim_cntrl_c): Adjust. (init_gdbsim_ops): Adjust. * remote.c (sync_remote_interrupt): Adjust comments. (remote_stop_as): Rename to ... (remote_interrupt_as): ... this. (remote_stop): Adjust comment. (remote_interrupt): New function. (init_remote_ops): Install remote_interrupt. * target.c (target_interrupt): New function. * target.h (struct target_ops) : New field. (target_interrupt): New declaration. * windows-nat.c (windows_stop): Rename to ... (windows_interrupt): ... this. * target-delegates.c: Regenerate. commit d55007b58352c0b5fd2817e003b6dcf4e3ee4c07 Author: Pedro Alves Date: Thu Aug 6 18:22:57 2015 +0100 Fix signal-while-stepping-over-bp-other-thread.exp on targets always in non-stop With "maint set target-non-stop on" we get: -PASS: gdb.threads/signal-while-stepping-over-bp-other-thread.exp: step +FAIL: gdb.threads/signal-while-stepping-over-bp-other-thread.exp: step The issue is simply that switch_back_to_stepped_thread is not used in non-stop mode, thus infrun doesn't output the expected "switching back to stepped thread" log. gdb/testsuite/ChangeLog: 2015-08-07 Pedro Alves * signal-while-stepping-over-bp-other-thread.exp: Expect "restart threads" as alternative to "switching back to stepped thread". commit fbea99ea8a062e5cd96e2d88336984ed3adc93d4 Author: Pedro Alves Date: Fri Aug 7 17:24:01 2015 +0100 Implement all-stop on top of a target running non-stop mode This finally implements user-visible all-stop mode running with the target_ops backend always in non-stop mode. This is a stepping stone towards finer-grained control of threads, being able to do interesting things like thread groups, associating groups with breakpoints, etc. From the user's perspective, all-stop mode is really just a special case of being able to stop and resume specific sets of threads, so it makes sense to do this step first. With this, even in all-stop, the target is no longer in charge of stopping all threads before reporting an event to the core -- the core takes care of it when it sees fit. For example, when "next"- or "step"-ing, we can avoid stopping and resuming all threads at each internal single-step, and instead only stop all threads when we're about to present the stop to the user. The implementation is almost straight forward, as the heavy lifting has been done already in previous patches. Basically, we replace checks for "set non-stop on/off" (the non_stop global), with calls to a new target_is_non_stop_p function. In a few places, if "set non-stop off", we stop all threads explicitly, and in a few other places we resume all threads explicitly, making use of existing methods that were added for teaching non-stop to step over breakpoints without displaced stepping. This adds a new "maint set target-non-stop on/off/auto" knob that allows both disabling the feature if we find problems, and force-enable it for development (useful when teaching a target about this. The default is "auto", which means the feature is enabled if a new target method says it should be enabled. The patch implements the method in linux-nat.c, just for illustration, because it still returns false. We'll need a few follow up fixes before turning it on by default. This is a separate target method from indicating regular non-stop support, because e.g., while e.g., native linux-nat.c is close to regression free with all-stop-non-stop (with following patches will fixing the remaining regressions), remote.c+gdbserver will still need more fixing, even though it supports "set non-stop on". Tested on x86_64 Fedora 20, native, with and without "set displaced off", and with and without "maint set target-non-stop on"; and also against gdbserver. gdb/ChangeLog: 2015-08-07 Pedro Alves * NEWS: Mention "maint set/show target-non-stop". * breakpoint.c (update_global_location_list): Check target_is_non_stop_p instead of non_stop. * infcmd.c (attach_command_post_wait, attach_command): Likewise. * infrun.c (show_can_use_displaced_stepping) (can_use_displaced_stepping_p, start_step_over_inferior): Likewise. (internal_resume_ptid): New function. (resume): Use it. (proceed): Check target_is_non_stop_p instead of non_stop. If in all-stop mode but the target is always in non-stop mode, start all the other threads that are implicitly resumed too. (for_each_just_stopped_thread, fetch_inferior_event) (adjust_pc_after_break, stop_all_threads): Check target_is_non_stop_p instead of non_stop. (handle_inferior_event): Likewise. Handle detach-fork in all-stop with the target always in non-stop mode. (handle_signal_stop) : Check target_is_non_stop_p instead of non_stop. (switch_back_to_stepped_thread): Check target_is_non_stop_p instead of non_stop. (keep_going_stepped_thread): Use internal_resume_ptid. (stop_waiting): If in all-stop mode, and the target is in non-stop mode, stop all threads. (keep_going_pass): Likewise, when starting a new in-line step-over sequence. * linux-nat.c (get_pending_status, select_event_lwp) (linux_nat_filter_event, linux_nat_wait_1, linux_nat_wait): Check target_is_non_stop_p instead of non_stop. (linux_nat_always_non_stop_p): New function. (linux_nat_stop): Check target_is_non_stop_p instead of non_stop. (linux_nat_add_target): Install linux_nat_always_non_stop_p. * target-delegates.c: Regenerate. * target.c (target_is_non_stop_p): New function. (target_non_stop_enabled, target_non_stop_enabled_1): New globals. (maint_set_target_non_stop_command) (maint_show_target_non_stop_command): New functions. (_initilize_target): Install "maint set/show target-non-stop" commands. * target.h (struct target_ops) : New field. (target_non_stop_enabled): New declaration. (target_is_non_stop_p): New declaration. gdb/doc/ChangeLog: 2015-08-07 Pedro Alves * gdb.texinfo (Maintenance Commands): Document "maint set/show target-non-stop". commit 372316f12874a30c62e6d71079ca3b86c786fb7e Author: Pedro Alves Date: Fri Aug 7 17:24:00 2015 +0100 Teach non-stop to do in-line step-overs (stop all, step, restart) That is, step past breakpoints by: - pausing all threads - removing breakpoint at PC - single-step - reinsert breakpoint - restart threads similarly to all-stop (with displaced stepping disabled). This allows non-stop to work on targets/architectures without displaced stepping support. That is, it makes displaced stepping an optimization instead of a requirement. For example, in principle, all GNU/Linux ports support non-stop mode at the target_ops level, but not all corresponding gdbarch's implement displaced stepping. This should make non-stop work for all (albeit, not as efficiently). And then there are scenarios where even if the architecture supports displaced stepping, we can't use it, because we e.g., don't find a usable address to use as displaced step scratch pad. It should also fix stepping past watchpoints on targets that have non-continuable watchpoints in non-stop mode (e.g., PPC, untested). Running the instruction out of line in the displaced stepping scratch pad doesn't help that case, as the copied instruction reads/writes the same watched memory... We can fix that too by teaching GDB to only remove the watchpoint from the thread that we want to move past the watchpoint (currently, removing a watchpoint always removes it from all threads), but again, that can be considered an optimization; not all targets would support it. For those familiar with the gdb and gdbserver Linux target_ops backends, the implementation should look similar, except it is done on the core side. When we pause threads, we may find they stop with an interesting event that should be handled later when the thread is re-resumed, thus we store such events in the thread object, and mark the event as pending. We should only consume pending events if the thread is indeed resumed, thus we add a new "resumed" flag to the thread object. At a later stage, we might add new target methods to accelerate some of this, like "pause all threads", with corresponding RSP packets, but we'd still need a fallback method for remote targets that don't support such packets, so, again, that can be deferred as optimization. My _real_ motivation here is making it possible to reimplement all-stop mode on top of the target always working on non-stop mode, so that e.g., we can send RSP packets to a remote target even while the target is running -- can't do that in the all-stop RSP variant, by design). Tested on x86_64 Fedora 20, with and without "set displaced off" forced. The latter forces the new code paths whenever GDB needs to step past a breakpoint. gdb/ChangeLog: 2015-08-07 Pedro Alves * breakpoint.c (breakpoints_should_be_inserted_now): If any thread has a pending status, return true. * gdbthread.h: Include target/waitstatus.h. (struct thread_suspend_state) : New fields. (struct thread_info) : New field. (set_resumed): Declare. * infrun.c: Include "event-loop.h". (infrun_async_inferior_event_token, infrun_is_async): New globals. (infrun_async): New function. (clear_step_over_info): Add debug output. (displaced_step_in_progress_any_inferior): New function. (displaced_step_fixup): New returns int. (start_step_over): Handle in-line step-overs too. Assert the thread is marked resumed. (resume_cleanups): Clear the thread's resumed flag. (resume): Set the thread's resumed flag. Return early if the thread has a pending status. Allow stepping a breakpoint with no signal. (proceed): Adjust to check 'resumed' instead of 'executing'. (clear_proceed_status_thread): If the thread has a pending status, and that status is a finished step, discard the pending status. (clear_proceed_status): Don't clear step_over_info here. (random_pending_event_thread, do_target_wait): New functions. (prepare_for_detach, wait_for_inferior, fetch_inferior_event): Use do_target_wait. (wait_one): New function. (THREAD_STOPPED_BY): New macro. (thread_stopped_by_watchpoint, thread_stopped_by_sw_breakpoint) (thread_stopped_by_hw_breakpoint): New functions. (switch_to_thread_cleanup, save_waitstatus, stop_all_threads): New functions. (handle_inferior_event): Also call set_resumed(false) on all threads implicitly stopped by the event. (restart_threads, resumed_thread_with_pending_status): New functions. (finish_step_over): If we were doing an in-line step-over before, and no longer are after trying to start a new step-over, restart all threads. If we have multiple threads with pending events, save the current event and go through the event loop again. (handle_signal_stop): Return early if finish_step_over returns false. : If we get a signal while stepping over a breakpoint in-line in non-stop mode, restart all threads. Clear step_over_info before delivering the signal. (keep_going_stepped_thread): Use internal_error instead of gdb_assert. Mark the thread as resumed. (keep_going_pass_signal): Assert the thread isn't already resumed. If some other thread is doing an in-line step-over, defer the resume. If we just started a new in-line step-over, stop all threads. Don't clear step_over_info. (infrun_async_inferior_event_handler): New function. (_initialize_infrun): Create async event handler with infrun_async_inferior_event_handler as callback. (infrun_async): New declaration. * target.c (target_async): New function. * target.h (target_async): Declare macro and readd as function declaration. * target/waitstatus.h (enum target_stop_reason) : New value. * thread.c (new_thread): Clear the new waitstatus field. (set_resumed): New function. commit 2ac7589cfe1df06506adb133e99b2b89212c9a11 Author: Pedro Alves Date: Fri Aug 7 17:23:59 2015 +0100 Factor out code to re-resume stepped thread Just a code refactor, no funcionality change intended. gdb/ChangeLog: 2015-08-07 Pedro Alves * infrun.c (keep_going_stepped_thread): New function, factored out from ... (switch_back_to_stepped_thread): ... here. commit 8b0615634896718c982d367a01ec61120084d3fb Author: Pedro Alves Date: Fri Aug 7 17:23:59 2015 +0100 Add comments to currently_stepping and target_resume Clarify that currently_stepping works at a higher level than target_resume. gdb/ChangeLog: 2015-08-07 Pedro Alves * infrun.c (currently_stepping): Extend intro comment. * target.h (target_resume): Extend intro comment. commit 1afd5965eda86caed3af7f23fd1f8802831360b6 Author: Pedro Alves Date: Fri Aug 7 17:23:58 2015 +0100 Misc switch_back_to_stepped_thread cleanups Several misc cleanups that prepare the tail end of this function, the part that actually re-resumes the stepped thread. The most non-obvious would be the currently_stepping change, I guess. That's because it isn't ever correct to pass step=1 to target_resume on software single-step targets, and currently_stepping works at a conceptual higher level, it returns step=true even on software step targets. It doesn't really matter on hardware step targets, as the breakpoint will be hit immediately, but it's just wrong on software step targets. I tested it against my x86 software single-step branch, and it indeed fixes failed assertions (that catch spurious PTRACE_SINGLESTEP requests) there. gdb/ChangeLog: 2015-08-07 Pedro Alves * infrun.c (switch_back_to_stepped_thread): Use ecs->ptid instead of inferior_ptid. If the stepped thread vanished, return 0 instead of resuming here. Use reset_ecs. Print the prev_pc and the current stop_pc in log message. Clear trap_expected if the thread advanced. Don't pass currently_stepping to do_target_resume. commit 4d9d9d0423ed611fa6d620ca3aa088fc16a0d59e Author: Pedro Alves Date: Fri Aug 7 17:23:58 2015 +0100 Use keep_going in proceed and start_step_over too The main motivation of this patch is sharing more code between the proceed (starting the inferior for the first time) and keep_going (restarting the inferior after handling an event) paths and using the step_over_chain queue now embedded in the thread_info object for pending in-line step-overs too (instead of just for displaced stepping). So this commit: - splits out a new keep_going_pass_signal function out of keep_going that is just like keep_going except for the bits that clear the signal to pass if the signal is set to "handle nopass". - makes proceed use keep_going too. - Makes start_step_over use keep_going_pass_signal instead of lower level displaced stepping things. One user visible change: if inserting breakpoints while trying to proceed fails, we now get: (gdb) si Warning: Could not insert hardware watchpoint 7. Could not insert hardware breakpoints: You may have requested too many hardware breakpoints/watchpoints. Command aborted. (gdb) while before we only saw warnings with no indication that the command was cancelled: (gdb) si Warning: Could not insert hardware watchpoint 7. Could not insert hardware breakpoints: You may have requested too many hardware breakpoints/watchpoints. (gdb) Tested on x86_64-linux-gnu, ppc64-linux-gnu and s390-linux-gnu. gdb/ChangeLog: 2015-08-07 Pedro Alves * gdbthread.h (struct thread_info) : Extend comment. * infrun.c (struct execution_control_state): Move higher up in the file. (reset_ecs): New function. (start_step_over): Now returns int. Rewrite to use keep_going_pass_signal instead of manually starting a displaced step. (resume): Don't call set_running here. If displaced stepping can't start now, clear trap_expected. (find_thread_needs_step_over): Delete function. (proceed): Set up finish_thread_state_cleanup. Call set_running. If the current thread needs a step over, push it in the step-over chain. Don't set insert breakpoints nor call resume directly here. Instead rewrite to use start_step_over and keep_going_pass_signal. (finish_step_over): New function. (handle_signal_stop): Call finish_step_over instead of start_step_over. (switch_back_to_stepped_thread): If the event thread needs another step-over do that first. Use start_step_over. (keep_going_pass_signal): New function, factored out from ... (keep_going): ... here. (_initialize_infrun): Comment moved here. * thread.c (set_running_thread): New function. (set_running, finish_thread_state): Use set_running_thread. commit c2829269f5af8a860b54ceac3596610b1f51fee5 Author: Pedro Alves Date: Fri Aug 7 17:23:57 2015 +0100 Embed the pending step-over chain in thread_info objects In order to teach non-stop mode to do in-line step-overs (pause all threads, remove breakpoint, single-step, reinsert breakpoint, restart threads), we'll need to be able to queue in-line step over requests, much like we queue displaced stepping (out-of-line) requests. Actually, the queue should be the same -- threads wait for their turn to step past something (breakpoint, watchpoint), doesn't matter what technique we end up using when the step over actually starts. I found that the queue management ends up simpler and more efficient if embedded in the thread objects themselves. This commit converts the existing displaced stepping queue to that. Later patches will make the in-line step-overs code paths use it too. gdb/ChangeLog: 2015-08-07 Pedro Alves * gdbthread.h (struct thread_info) : New fields. (thread_step_over_chain_enqueue, thread_step_over_chain_remove) (thread_step_over_chain_next, thread_is_in_step_over_chain): New declarations. * infrun.c (struct displaced_step_request): Delete. (struct displaced_step_inferior_state) : Delete field. (displaced_step_prepare): Assert that trap_expected is set. Use thread_step_over_chain_enqueue. Split starting a new displaced step to ... (start_step_over): ... this new function. (resume): Assert the thread isn't waiting for a step over already. (proceed): Assert the thread isn't waiting for a step over already. (infrun_thread_stop_requested): Adjust to remove threads from the embedded step-over chain. (handle_inferior_event) : Call start_step_over after displaced_step_fixup. (handle_signal_stop): Call start_step_over after displaced_step_fixup. * infrun.h (step_over_queue_head): New declaration. * thread.c (step_over_chain_enqueue, step_over_chain_remove) (thread_step_over_chain_next, thread_is_in_step_over_chain) (thread_step_over_chain_enqueue) (thread_step_over_chain_remove): New functions. (delete_thread_1): Remove thread from the step-over chain. commit 6c4cfb244b408f980be24ea2175bc58baf74a6f9 Author: Pedro Alves Date: Fri Aug 7 17:23:57 2015 +0100 Make thread_still_needs_step_over consider stepping_over_watchpoint too I noticed that even though keep_going knows to start a step over for a watchpoint, thread_still_needs_step_over forgets it. gdb/ChangeLog: 2015-08-07 Pedro Alves * infrun.c (thread_still_needs_step_over): Rename to ... (thread_still_needs_step_over_bp): ... this. (enum step_over_what): New. (thread_still_needs_step_over): Reimplement. commit 567420d10895611e03d5ee65e6b24c16a69a6e99 Author: Pedro Alves Date: Fri Aug 7 17:23:56 2015 +0100 remote.c/all-stop: Implement TARGET_WAITKIND_NO_RESUMED and TARGET_WNOHANG Even though "target remote" supports target-async, the all-stop target_wait implementation ignores TARGET_WNOHANG. If the core happens to poll for events and we've already read the stop reply out of the serial/socket, remote_wait_as hangs forever instead of returning an indication that there are no events to process. This can't happen currently, but later changes will trigger this. gdb/ChangeLog: 2015-08-07 Pedro Alves * remote.c (remote_wait_as): If not waiting for a stop reply, return TARGET_WAITKIND_NO_RESUMED. If TARGET_WNOHANG is requested, don't block waiting forever. commit d8dd4d5fe6d5ab971b731df5f65025a0dbbdb912 Author: Pedro Alves Date: Fri Aug 7 17:23:56 2015 +0100 Change adjust_pc_after_break's prototype Prepare to use it in contexts without an ecs handy. Follow up patches will make use of this. gdb/ChangeLog: 2015-08-07 Pedro Alves * infrun.c (adjust_pc_after_break): Now takes thread_info and waitstatus pointers instead of an ecs. Adjust. (handle_inferior_event): Adjust caller. commit e1316e60d4d1fe406efc6e7536b2bdb43733e9d2 Author: Pedro Alves Date: Fri Aug 7 17:23:55 2015 +0100 Fix and test "checkpoint" in non-stop mode Letting a "checkpoint" run to exit with "set non-stop on" behaves differently compared to the default all-stop mode ("set non-stop off"). Currently, in non-stop mode: (gdb) start Temporary breakpoint 1 at 0x40086b: file src/gdb/testsuite/gdb.base/checkpoint.c, line 28. Starting program: build/gdb/testsuite/gdb.base/checkpoint Temporary breakpoint 1, main () at src/gdb/testsuite/gdb.base/checkpoint.c:28 28 char *tmp = &linebuf[0]; (gdb) checkpoint checkpoint 1: fork returned pid 24948. (gdb) c Continuing. Copy complete. Deleting copy. [Inferior 1 (process 24944) exited normally] [Switching to process 24948] (gdb) info threads Id Target Id Frame 1 process 24948 "checkpoint" (running) No selected thread. See `help thread'. (gdb) c The program is not being run. (gdb) Two issues above: 1. Thread 1 got stuck in "(running)" state (it isn't really running) 2. While checkpoints try to preserve the illusion that the thread is still the same when the process exits, GDB switched to "No thread selected." instead of staying with thread 1 selected. Problem #1 is caused by handle_inferior_event and normal_stop not considering that when a TARGET_WAITKIND_SIGNALLED/TARGET_WAITKIND_EXITED event is reported, and the inferior is mourned, the target may still have execution. Problem #2 is caused by the make_cleanup_restore_current_thread cleanup installed by fetch_inferior_event not being able to find the original thread 1's ptid in the thread list, thus not being able to restore thread 1 as selected thread. The fix is to make the cleanup installed by make_cleanup_restore_current_thread aware of thread ptid changes, by installing a thread_ptid_changed observer that adjusts the cleanup's data. After the patch, we get the same in all-stop and non-stop modes: (gdb) c Continuing. Copy complete. Deleting copy. [Inferior 1 (process 25109) exited normally] [Switching to process 25113] (gdb) info threads Id Target Id Frame * 1 process 25113 "checkpoint" main () at src/gdb/testsuite/gdb.base/checkpoint.c:28 (gdb) Turns out the whole checkpoints.exp file can run in non-stop mode unmodified. I thought of moving most of the test file's contents to a procedure that can be called twice, once in non-stop mode and another in all-stop mode. But then, the test already takes close to 30 seconds to run on my machine, so I thought it'd be nicer to run all-stop and non-stop mode in parallel. Thus I added a new checkpoint-ns.exp file that just appends "set non-stop on" to GDBFLAGS and sources checkpoint.exp. gdb/ChangeLog: 2015-08-07 Pedro Alves * infrun.c (handle_inferior_event): If we get TARGET_WAITKIND_SIGNALLED or TARGET_WAITKIND_EXITED in non-stop mode, mark all threads of the exiting process as not-executing. (normal_stop): If we get TARGET_WAITKIND_SIGNALLED or TARGET_WAITKIND_EXITED in non-stop mode, finish all threads of the exiting process, if inferior_ptid still points at a process. * thread.c (struct current_thread_cleanup) : New field. (current_thread_cleanup_chain): New global. (restore_current_thread_ptid_changed): New function. (restore_current_thread_cleanup_dtor): Remove the cleanup from the current_thread_cleanup_chain list. (make_cleanup_restore_current_thread): Add the cleanup data to the current_thread_cleanup_chain list. (_initialize_thread): Install restore_current_thread_ptid_changed as thread_ptid_changed observer. gdb/testsuite/ChangeLog: 2015-08-07 Pedro Alves * gdb.base/checkpoint-ns.exp: New file. * gdb.base/checkpoint.exp: Pass explicit "checkpoint.c" to standard_testfile. commit 47e9c225c1cb6fb1809218f5f546a70fc85f705c Author: Joel Brobecker Date: Thu Aug 6 22:13:32 2015 +0200 ignore invalid DOF provider sections On x86-solaris 10, we noticed that starting a program would sometimes cause the debugger to crash. For instance: % gdb a (gdb) break adainit Breakpoint 1 at 0x8051f03 (gdb) run Starting program: /[...]/a [Thread debugging using libthread_db enabled] zsh: 24398 segmentation fault (core dumped) /[...]/gdb a The exception occurs in dtrace_process_dof_probe, while trying to process each probe referenced by a DTRACE_DOF_SECT_TYPE_PROVIDER DOF section from /lib/libc.so.1. For reference, the ELF section in that shared library providing the DOF data has the following characteristics: Idx Name Size VMA LMA File off Algn 14 .SUNW_dof 0000109d 000b4398 000b4398 000b4398 2**3 CONTENTS, ALLOC, LOAD, READONLY, DATA The function dtrace_process_dof gets passed the contents of that ELF section, which allows it to determine the location of the table where all DOF sections are described. I dumped the contents of each DOF section as seen by GDB, and it seemed to be plausible, because the offset of each DOF section was pretty much equal to the sum of the offset and size of the previous DOF section. Also, the offset + sum of the last section corresponds to the size of the .SUNW_dof section. Things start to break down when processing one of the DOF sections that has a type of DTRACE_DOF_SECT_TYPE_PROVIDER. It gets the contents of this DOF section via: struct dtrace_dof_provider *provider = (struct dtrace_dof_provider *) DTRACE_DOF_PTR (dof, DOF_UINT (dof, section->dofs_offset)); Said more simply, the struct dtrace_dof_provider data is at section->dofs_offset of the entire DOF contents. Given that the contents of SECTION seemed to make sense, so far so good. However, what SECTION tells us is that our DOF provider section is 40 bytes long: (gdb) print *section $36 = {dofs_type = 15, dofs_align = 4, dofs_flags = 1, dofs_entsize = 0, dofs_offset = 3264, dofs_size = 40} ^^^^^^^^^^^^^^ But on the other hand: (gdb) p sizeof (struct dtrace_dof_provider) $54 = 44 In other words GDB expected a bigger DOF section and when we try to fetch the value of the last field of that DOF section (dofpv_prenoffs)... eoffsets_s = DTRACE_DOF_SECT (dof, DOF_UINT (dof, provider->dofpv_prenoffs)); ... we end up reading data that actually belongs to another DOF section, and therefore irrelevant. This in turn means that the value of eofftab gets incorrectly set, since it depends on eoffsets_s: eofftab = DTRACE_DOF_PTR (dof, DOF_UINT (dof, eoffsets_s->dofs_offset)); This invalid address quickly catches up to us when we pass it to dtrace_process_dof_probe shortly after, where we crash because we try to subscript it: Program received signal SIGSEGV, Segmentation fault. 0x08155bba in dtrace_process_dof_probe ([...]) at [...]/dtrace-probe.c:378 378 = ((uint32_t *) eofftab)[...]; This patch fixes the issue by detecting provider DOF sections that are smaller than expected, and discarding the DOF data. gdb/ChangeLog: * dtrace-probe.c (dtrace_process_dof): Ignore the objfile's DOF data if a DTRACE_DOF_SECT_TYPE_PROVIDER section is found to be smaller than expected. commit 5960642af99c6dc84b28e1bc69a617099b9dee97 Author: H.J. Lu Date: Fri Aug 7 07:51:39 2015 -0700 Sync config.sub and config.guess with GCC Sync with GCC 2015-07-28 Ben Elliston * config.sub, config.guess: Import from upstream. commit 36aed29d3774a156c88ca7110f3c12605d861b9c Author: Amit Pawar Date: Fri Aug 7 19:50:58 2015 +0530 Remove CpuFMA4 support from CPU_ZNVER1_FLAGS. opcodes/ * i386-gen.c: Remove CpuFMA4 from CPU_ZNVER1_FLAGS. * i386-init.h: Regenerated. commit 6e33951edcbed1fd803beabcde2af3b252b92164 Author: H.J. Lu Date: Fri Aug 7 05:04:21 2015 -0700 Properly merge hidden versioned symbol The hidden versioned symbol can only be merged with the versioned symbol with the same symbol version. _bfd_elf_merge_symbol should check the symbol version before merging the new hidden versioned symbol with the existing symbol. _bfd_elf_link_hash_copy_indirect can't copy any references to the hidden versioned symbol. We need to bind a symbol locally when linking executable if it is locally defined, hidden versioned, not referenced by shared library and not exported. bfd/ PR ld/18720 * elflink.c (_bfd_elf_merge_symbol): Add a parameter to indicate if the new symbol matches the existing one. The new hidden versioned symbol matches the existing symbol if they have the same symbol version. Update the existing symbol only if they match. (_bfd_elf_add_default_symbol): Update call to _bfd_elf_merge_symbol. (_bfd_elf_link_assign_sym_version): Don't set the hidden field here. (elf_link_add_object_symbols): Override a definition only if the new symbol matches the existing one. (_bfd_elf_link_hash_copy_indirect): Don't copy any references to the hidden versioned symbol. (elf_link_output_extsym): Bind a symbol locally when linking executable if it is locally defined, hidden versioned, not referenced by shared library and not exported. Turn on VERSYM_HIDDEN only if the hidden vesioned symbol is defined locally. ld/testsuite/ PR ld/18720 * ld-elf/indirect.exp: Run tests for PR ld/18720. * ld-elf/pr18720.out: New file. * ld-elf/pr18720a.c: Likewise. * ld-elf/pr18720b.c: Likewise. * ld-elf/pr18720c.c: Likewise. commit 060967202b8def804d9afccad343d2eaef8a81cf Author: Andrew Burgess Date: Tue Aug 4 15:42:03 2015 +0100 gdb: Move get_frame_language from stack.c to frame.c. The get_frame_language feels like it would be more at home in frame.c rather than in stack.c, while the declaration, that is currently in language.h can be moved into frame.h to match. A couple of new includes are added, but otherwise no substantial change here. gdb/ChangeLog: * stack.c (get_frame_language): Moved ... * frame.c (get_frame_language): ... to here. * language.h (get_frame_language): Declaration moved to frame.h. * frame.h: Add language.h include, for language enum. (get_frame_language): Declaration moved from language.h. * language.c: Add frame.h include. * top.c: Add frame.h include. * symtab.h (struct obj_section): Declare. (struct cmd_list_element): Declare. commit 7ff38b1c898be5db053193f26d6a3a1d8a6074e8 Author: Andrew Burgess Date: Tue Jul 14 15:07:35 2015 +0100 gdb: get_frame_language now takes a frame parameter. As part of a drive to remove deprecated_safe_get_selected_frame, make the get_frame_language function take a frame parameter. Given the name of the function this actually seems to make a lot of sense. The task of fetching a suitable frame is then passed to the calling functions. For get_frame_language there are not many callers, these are updated to get the selected frame in a suitable way. gdb/ChangeLog: * language.c (show_language_command): Find selected frame before asking for the language of that frame. (set_language_command): Likewise. * language.h (get_frame_language): Add frame parameter. * stack.c (get_frame_language): Add frame parameter, assert parameter is not NULL, update comment and reindent. * top.c (check_frame_language_change): Pass the selected frame into get_frame_language. commit 0b45135ec1364f9d0c850a52ce05cf4ffb038021 Author: Andrew Burgess Date: Fri Jul 31 13:48:22 2015 +0100 objcopy: Improve wildcard matching for symbols with '!' prefix. When using options such as --localize-symbol, --globalize-symbol, etc, along with the --wildcard option, prefixing a symbol name with '!' should provide non-matching behaviour, as example the following example is given in the manual: --wildcard --weaken-symbol !foo --weaken-symbol fo* which should weaken all symbols matching the pattern 'fo*', but not the symbol 'foo'. However, this currently does not work, the current logic will waken all symbols matching the pattern 'fo*' AND all symbols that are not 'foo'. The symbol 'foo' is covered by the first condition, and so is weakened, while, other symbols, for example 'bar' will match the second condition, and so be weakened. This patch adjusts the logic so that a pattern prefixed with '!' specifically DOES NOT apply the relevant change to any matching symbols, instead of applying the change to all non-matching symbols. So this: --weaken-symbol !foo will ensure that the symbol 'foo' is not weakened, but says nothing about symbols that are not 'foo'. As a result, a pattern prefixed with '!' now only makes sense when used alongside a more wide ranging wildcard pattern. This change should make the wildcard matching feature more useful, with no overall loss of functionality. The example given in the manual, weaken all symbols matching 'fo*' except 'foo' can now be achieved, but so too can more complex examples, such as weaken all symbols matching 'fo*' except 'foo', 'foa', and 'fob', like this: --wildcard --weaken-symbol !foo \ --weaken-symbol !foa \ --weaken-symbol !fob \ --weaken-symbol fo* Under the previous scheme, something as symbols as, weaken all symbols except 'foo' could have been achieved with this: --weaken-symbol !foo however, this will no longer work. To achieve the same result under the new scheme this is now required: --weaken-symbol !foo --weaken-symbol * binutils/ChangeLog: * objcopy.c (is_specified_symbol_predicate): Don't stop at first match. Non-match rules set found to FALSE. binutils/testsuite/ChangeLog: * binutils-all/objcopy.exp: Run new symbol tests. (objcopy_test_symbol_manipulation): New function. * binutils-all/symbols-1.d: New file. * binutils-all/symbols-2.d: New file. * binutils-all/symbols-3.d: New file. * binutils-all/symbols-4.d: New file. * binutils-all/symbols.s: New file. commit da8c46d2967b6325dcd2cc72eca26d807964c93c Author: Markus Metzger Date: Wed Mar 19 13:49:58 2014 +0100 btrace: indicate speculative execution Indicate speculatively executed instructions with a leading '?'. We use the space that is normally used for the PC prefix. In the case where the instruction at the current PC had been executed speculatively before, the PC prefix will be partially overwritten resulting in "?> ". As a side-effect, the /p modifier to omit the PC prefix in the "record instruction-history" command now uses a 3-space PC prefix " " in order to have enough space for the speculative execution indication. gdb/ * btrace.c (btrace_compute_ftrace_bts): Clear insn flags. (pt_btrace_insn_flags): New. (ftrace_add_pt): Call pt_btrace_insn_flags. * btrace.h (btrace_insn_flag): New. (btrace_insn) : New. * record-btrace.c (btrace_insn_history): Print insn prefix. * NEWS: Announce it. doc/ * gdb.texinfo (Process Record and Replay): Document prefixing of speculatively executed instructions in the "record instruction-history" command. testsuite/ * gdb.btrace/instruction_history.exp: Update. * gdb.btrace/tsx.exp: New. * gdb.btrace/tsx.c: New. * lib/gdb.exp (skip_tsx_tests, skip_btrace_pt_tests): New. commit 5599c404621b2d8ac021c1427aee6e8974572042 Author: Markus Metzger Date: Tue Jul 28 15:47:40 2015 +0200 configure: check for perf_event.h version Intel(R) Processor Trace support requires a recent linux/perf_event.h header. When GDB is built on an older system, Intel(R) Processor Trace will not be available and there is no indication in the configure and build log as to what went wrong. Check for a compatible linux/perf_event.h at configure-time. gdb/ * configure.ac: Check for PERF_ATTR_SIZE_VER5 in linux/perf_event.h * configure: Regenerate. commit 016a3251631341bf4d8fe50966d2b70f8ea69e96 Author: DJ Delorie Date: Thu Aug 6 18:35:26 2015 -0400 Yaakov Selkowitz: fixes for in-tree libiconv * Makefile.def (libiconv): Define bootstrap=true. Mark pdf/html/info as missing. (configure-gcc): Depend on all-libiconv. (all-gcc): Ditto. (configure-libcpp): Ditto. (all-libcpp): Ditto. (configure-intl): Ditto. (all-intl): Ditto. * Makefile.in: Regenerate. binutils/ * configure: Regenerate. gdb/ * Makefile.in (LIBICONV): Define. (CLIBS): Add LIBICONV. * acinclude.m4: Use config/iconv.m4 instead of custom AM_ICONV. * configure: Regenerate. commit 308d9764e1ce02c31882e6d99bbaebe63c7fe830 Author: GDB Administrator Date: Fri Aug 7 00:00:07 2015 +0000 Automatic date update in version.in commit de1c2c52237dd3e8d94df7b4a304ac9df75c8cf3 Author: Pedro Alves Date: Fri Aug 7 00:04:48 2015 +0100 Bump timeouts for a couple gdb.reverse/*-precsave.exp tests The buildbot shows that PPC64 and x86_64 builders, both native and extended-remote gdbserver frequently timeout these tests. until-precsave.exp times out on my x86_64 occasionally as well. Inspecting the logs, we see that if we waited some more, the tests would pass. Simply bump until-precsave.exp timeouts further, and apply the same treatment to step-precsave.exp. gdb/testsuite/ChangeLog: 2015-08-06 Pedro Alves * gdb.reverse/step-precsave.exp: Use with_timeout_factor to increase timeout. * gdb.reverse/until-precsave.exp: Bump timeouts. commit 782e0bf46a84f57139f25c31c2ffc93508f07ef5 Author: Pedro Alves Date: Thu Aug 6 23:38:51 2015 +0100 Fix gdb.base/valgrind-infcall.exp with the native-extended-gdbserver board This test fails with --target_board=native-extended-gdbserver because it misses the usual "disconnect": (gdb) target remote | /usr/lib64/valgrind/../../bin/vgdb --pid=30454 Already connected to a remote target. Disconnect? (y or n) n Still connected. (gdb) FAIL: gdb.base/valgrind-infcall.exp: target remote for vgdb (got interactive prompt) gdb/testsuite/ChangeLog: 2015-08-06 Pedro Alves * gdb.base/valgrind-infcall.exp: Issue a "disconnect". commit aead7601eb0ddc3fa51d43747bdad0e02abda342 Author: Simon Marchi Date: Thu Aug 6 17:21:41 2015 -0400 Add casts for legitimate integer to enum conversions This patch is mostly extracted from Pedro's C++ branch. It adds explicit casts from integer to enum types, where it is really the intention to do so. This could be because we are ... * iterating on enum values (we need to iterate on an equivalent integer) * converting from a value read from bytes (dwarf attribute, agent expression opcode) to the equivalent enum * reading the equivalent integer value from another language (Python/Guile) An exception to that is the casts in regcache.c. It seems to me like struct regcache's register_status field could be a pointer to an array of enum register_status. Doing so would waste a bit of memory (4 bytes used by the enum vs 1 byte used by the current signed char, for each register). If we switch to C++11 one day, we can define the underlying type of an enum type, so we could have the best of both worlds. gdb/ChangeLog: * arm-tdep.c (set_fp_model_sfunc): Add cast from integer to enum. (arm_set_abi): Likewise. * ax-general.c (ax_print): Likewise. * c-exp.y (exp : string_exp): Likewise. * compile/compile-loc2c.c (compute_stack_depth_worker): Likewise. (do_compile_dwarf_expr_to_c): Likewise. * cp-name-parser.y (demangler_special : DEMANGLER_SPECIAL start): Likewise. * dwarf2expr.c (execute_stack_op): Likewise. * dwarf2loc.c (dwarf2_compile_expr_to_ax): Likewise. (disassemble_dwarf_expression): Likewise. * dwarf2read.c (dwarf2_add_member_fn): Likewise. (read_array_order): Likewise. (abbrev_table_read_table): Likewise. (read_attribute_value): Likewise. (skip_unknown_opcode): Likewise. (dwarf_decode_macro_bytes): Likewise. (dwarf_decode_macros): Likewise. * eval.c (value_f90_subarray): Likewise. * guile/scm-param.c (gdbscm_make_parameter): Likewise. * i386-linux-tdep.c (i386_canonicalize_syscall): Likewise. * infrun.c (handle_command): Likewise. * memory-map.c (memory_map_start_memory): Likewise. * osabi.c (set_osabi): Likewise. * parse.c (operator_length_standard): Likewise. * ppc-linux-tdep.c (ppc_canonicalize_syscall): Likewise, and use single return point. * python/py-frame.c (gdbpy_frame_stop_reason_string): Likewise. * python/py-symbol.c (gdbpy_lookup_symbol): Likewise. (gdbpy_lookup_global_symbol): Likewise. * record-full.c (record_full_restore): Likewise. * regcache.c (regcache_register_status): Likewise. (regcache_raw_read): Likewise. (regcache_cooked_read): Likewise. * rs6000-tdep.c (powerpc_set_vector_abi): Likewise. * symtab.c (initialize_ordinary_address_classes): Likewise. * target-debug.h (target_debug_print_signals): Likewise. * utils.c (do_restore_current_language): Likewise. commit 84da3f0cf938f8f74d9fa89f89f228bc950282c6 Author: Simon Marchi Date: Thu Aug 6 15:36:31 2015 -0400 Add missing ChangeLog entry header commit 9d996aba1a365564c18dd939772d379c97c94213 Author: Simon Marchi Date: Thu Aug 6 14:28:00 2015 -0400 Fix ChangeLog formatting Spaces -> Tab. commit 33ebda9d6841e18d9ef18b94c3dcad7d0498ab3d Author: Pedro Alves Date: Mon Mar 9 11:58:10 2015 +0000 gdbserver/tracepoint.c: make exported IPA global int instead of enum Fixes another C++ -fpermissive error: src/gdb/gdbserver/tracepoint.c:4535:21: error: invalid conversion from ‘int’ to ‘eval_result_type’ [-fpermissive] expr_eval_result = ipa_expr_eval_result; gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves * tracepoint.c (expr_eval_result): Now an int. commit a44892be35506471a53e5bc8c2def4ffccf451f9 Author: Pedro Alves Date: Thu Aug 6 17:29:01 2015 +0100 gdbserver: no point in hiding the regcache type nowadays The regcache used to be hidden inside inferiors.c, but since the tracepoints support that it's a first class object. This also fixes a few implicit pointer conversion errors in C++ mode, caused by a few places missing the explicit cast. gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves * gdbthread.h (struct regcache): Forward declare. (struct thread_info) : Now a struct regcache pointer. * inferiors.c (inferior_regcache_data) (set_inferior_regcache_data): Now work with struct regcache pointers. * inferiors.h (struct regcache): Forward declare. (inferior_regcache_data, set_inferior_regcache_data): Now work with struct regcache pointers. * regcache.c (get_thread_regcache, regcache_invalidate_thread) (free_register_cache_thread): Remove struct regcache pointer casts. commit ca0a5f0bd33d0aa17a5cf518e41e47ddfde486ad Author: Clem Dickey Date: Thu Aug 6 09:24:58 2015 -0700 PR python/17136 gdb/ChangeLog: * python/lib/gdb/command/type_printers.py (InfoTypePrinter): Fix typo. commit 608a1e46394e9df951968c9112fbec3065da5fba Author: Pedro Alves Date: Thu Aug 6 17:10:09 2015 +0100 gdbserver: fix silent error exit Running gdb.threads/process-dies-while-handling-bp.exp against gdbserver sometimes FAILs because GDBserver drops the connection, but the logs leave no clue on what the reason could be. Running manually a few times, I saw the same: $ ./gdbserver/gdbserver --multi :9999 testsuite/gdb.threads/process-dies-while-handling-bp Process testsuite/gdb.threads/process-dies-while-handling-bp created; pid = 12766 Listening on port 9999 Remote debugging from host 127.0.0.1 Listening on port 9999 Child exited with status 0 Child exited with status 0 What happened is that an exception escaped and gdbserver reopened the connection, which led to that second "Listening on port 9999" output. The error was a failure to access registers from a now-dead thread. The exception probably shouldn't have escaped here, but meanwhile, this at least makes the issue less mysterious. Tested on x86_64 Fedora 20. gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves * server.c (captured_main): On error, print the exception message to stderr, and if run_once is set, throw a quit. commit 05d999b0896ab6ccd4ce23a715765484c60a967d Author: Simon Marchi Date: Thu Aug 6 12:01:05 2015 -0400 Change type of struct complaints::series Found while processing the C++ enum changes. It seems like series should be of type enum complaint_series, instead of adding a cast. Redundant and out of date comments are also removed. gdb/ChangeLog: * complaints.c (enum complaint_series): Add newlines and remove out of date comment. (struct complaints) : Change type to enum complaint_series and remove out of date comment. (symfile_complaint_hook): Use equivalent enum value ISOLATED_MESSAGE instead of 0. commit f0ce0d3a331129309a46a6a9ac85fce35acae72b Author: Pedro Alves Date: Thu Jul 23 16:01:01 2015 +0100 gdbserver: move_out_of_jump_pad_callback misses switching current thread While hacking on the fix for PR threads/18600 (Threads left stopped after fork+thread spawn), I once saw its test (fork-plus-threads.exp) FAIL against gdbserver because move_out_of_jump_pad_callback has a gdb_breakpoint_here call, and the caller isn't making sure the current thread points to the right thread. In the case I saw, the current thread pointed to the wrong process, so gdb_breakpoint_here returned the wrong answer. Unfortunately I didn't save logs. Still, seems obvious enough and it should fix a potential occasional racy FAIL. Tested on x86_64 Fedora 20. gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves * linux-low.c (move_out_of_jump_pad_callback): Temporarily switch the current thread. commit bf47e2482d3e88580ba5a22db48bc773fa8ced3f Author: Pedro Alves Date: Thu Jul 30 16:15:24 2015 +0100 Fix gdbserver --debug issues caught by Valgrind Running gdbserver --debug under Valgrind shows: ==4803== Invalid read of size 4 ==4803== at 0x432B62: linux_write_memory (linux-low.c:5320) ==4803== by 0x4143F7: write_inferior_memory (target.c:83) ==4803== by 0x415895: remove_memory_breakpoint (mem-break.c:362) ==4803== by 0x432EF5: linux_remove_point (linux-low.c:5460) ==4803== by 0x416319: delete_raw_breakpoint (mem-break.c:802) ==4803== by 0x4163F3: release_breakpoint (mem-break.c:842) ==4803== by 0x416477: delete_breakpoint_1 (mem-break.c:869) ==4803== by 0x4164EF: delete_breakpoint (mem-break.c:891) ==4803== by 0x416843: delete_gdb_breakpoint_1 (mem-break.c:1069) ==4803== by 0x4168D8: delete_gdb_breakpoint (mem-break.c:1098) ==4803== by 0x4134E3: process_serial_event (server.c:4051) ==4803== by 0x4138E4: handle_serial_event (server.c:4196) ==4803== Address 0x4c6b930 is 0 bytes inside a block of size 1 alloc'd ==4803== at 0x4A0645D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==4803== by 0x4240C6: xmalloc (common-utils.c:43) ==4803== by 0x41439C: write_inferior_memory (target.c:80) ==4803== by 0x415895: remove_memory_breakpoint (mem-break.c:362) ==4803== by 0x432EF5: linux_remove_point (linux-low.c:5460) ==4803== by 0x416319: delete_raw_breakpoint (mem-break.c:802) ==4803== by 0x4163F3: release_breakpoint (mem-break.c:842) ==4803== by 0x416477: delete_breakpoint_1 (mem-break.c:869) ==4803== by 0x4164EF: delete_breakpoint (mem-break.c:891) ==4803== by 0x416843: delete_gdb_breakpoint_1 (mem-break.c:1069) ==4803== by 0x4168D8: delete_gdb_breakpoint (mem-break.c:1098) ==4803== by 0x4134E3: process_serial_event (server.c:4051) ==4803== And: ==7272== Conditional jump or move depends on uninitialised value(s) ==7272== at 0x3615E48361: vfprintf (vfprintf.c:1634) ==7272== by 0x414E89: debug_vprintf (debug.c:60) ==7272== by 0x42800A: debug_printf (common-debug.c:35) ==7272== by 0x43937B: my_waitpid (linux-waitpid.c:149) ==7272== by 0x42D740: linux_wait_for_event_filtered (linux-low.c:2441) ==7272== by 0x42DADA: linux_wait_for_event (linux-low.c:2552) ==7272== by 0x42E165: linux_wait_1 (linux-low.c:2860) ==7272== by 0x42F5D8: linux_wait (linux-low.c:3453) ==7272== by 0x4144A4: mywait (target.c:107) ==7272== by 0x413969: handle_target_event (server.c:4214) ==7272== by 0x41A1A6: handle_file_event (event-loop.c:429) ==7272== by 0x41996D: process_event (event-loop.c:184) gdb/ChangeLog: 2015-08-06 Pedro Alves * nat/linux-waitpid.c (my_waitpid): Only print *status if waitpid returned > 0. gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves * linux-low.c (linux_write_memory): Rewrite debug output to avoid reading beyond the passed in buffer length. commit f6a9d9c7db9b6b58e6915869c1bd7c83d96d31ee Author: Pedro Alves Date: Thu Aug 6 12:45:45 2015 +0100 Revert "test slowdown" That was pushed by mistake. commit 83e97ed023e828a7d924b765661374272c7f7eb4 Author: Pedro Alves Date: Thu Aug 6 12:33:20 2015 +0100 Test for PR18749: problems if whole process dies while (ptrace-) stopped This adds a kfailed test that has the whole process exit just while several threads continuously step over a breakpoint. Usually, the process exits just while GDB or GDBserver is handling the breakpoint hit. In other words, the process disappears while the event thread is (ptrace-) stopped. This exposes several issues in GDB and GDBserver. Errors, crashes, etc. I fixed some of these issues recently, but there's a lot more to do. It's a bit like playing whack-a-mole at the moment. You fix an issue, which then exposes several others. E.g., with the native target, you get (among other errors): (...) [New Thread 0x7ffff47b9700 (LWP 18077)] [New Thread 0x7ffff3fb8700 (LWP 18078)] [New Thread 0x7ffff37b7700 (LWP 18079)] Cannot find user-level thread for LWP 18076: generic error (gdb) KFAIL: gdb.threads/process-dies-while-handling-bp.exp: non_stop=on: cond_bp_target=1: inferior 1 exited (prompt) (PRMS: gdb/18749) gdb/testsuite/ChangeLog: 2015-08-06 Pedro Alves PR gdb/18749 * gdb.threads/process-dies-while-handling-bp.c: New file. * gdb.threads/process-dies-while-handling-bp.exp: New file. commit 4807d3f32937bc4d932638fd8f8b3084be82b74a Author: Pedro Alves Date: Thu Aug 6 12:33:19 2015 +0100 test slowdown commit b6b9ffccac04b8729d5206b5a9fefa09ea2510f3 Author: Pierre Langlois Date: Thu Aug 6 12:27:32 2015 +0100 Remove required field in agent's symbols This field was never set nor used. This patch removes it. gdb/ChangeLog: * common/agent.c (symbol_list) : Remove. gdb/gdbserver/ChangeLog: * tracepoint.c (symbol_list) : Remove. commit 863d01bde2725d009c45ab7e9ba1dbf3f5b923f8 Author: Pedro Alves Date: Thu Aug 6 10:30:18 2015 +0100 gdbserver: Fix non-stop / fork / step-over issues Ref: https://sourceware.org/ml/gdb-patches/2015-07/msg00868.html This adds a test that has a multithreaded program have several threads continuously fork, while another thread continuously steps over a breakpoint. This exposes several intertwined issues, which this patch addresses: - When we're stopping and suspending threads, some thread may fork, and we missed setting its suspend count to 1, like we do when a new clone/thread is detected. When we next unsuspend threads, the fork child's suspend count goes below 0, which is bogus and fails an assertion. - If a step-over is cancelled because a signal arrives, but then gdb is not interested in the signal, we pass the signal straight back to the inferior. However, we miss that we need to re-increment the suspend counts of all other threads that had been paused for the step-over. As a result, other threads indefinitely end up stuck stopped. - If a detach request comes in just while gdbserver is handling a step-over (in the test at hand, this is GDB detaching the fork child), gdbserver internal errors in stabilize_thread's helpers, which assert that all thread's suspend counts are 0 (otherwise we wouldn't be able to move threads out of the jump pads). The suspend counts aren't 0 while a step-over is in progress, because all threads but the one stepping past the breakpoint must remain paused until the step-over finishes and the breakpoint can be reinserted. - Occasionally, we see "BAD - reinserting but not stepping." being output (from within linux_resume_one_lwp_throw). That was because GDB pokes memory while gdbserver is busy with a step-over, and that suspends threads, and then re-resumes them with proceed_one_lwp, which missed another reason to tell linux_resume_one_lwp that the thread should be set back to stepping. - In a couple places, we were resuming threads that are meant to be suspended. E.g., when a vCont;c/s request for thread B comes in just while gdbserver is stepping thread A past a breakpoint. The resume for thread B must be deferred until the step-over finishes. - The test runs with both "set detach-on-fork" on and off. When off, it exercises the case of GDB detaching the fork child explicitly. When on, it exercises the case of gdb resuming the child explicitly. In the "off" case, gdb seems to exponentially become slower as new inferiors are created. This is _very_ noticeable as with only 100 inferiors gdb is crawling already, which makes the test take quite a bit to run. For that reason, I've disabled the "off" variant for now. gdb/ChangeLog: 2015-08-06 Pedro Alves * target/waitstatus.h (enum target_stop_reason) : New value. gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves * linux-low.c (handle_extended_wait): Set the fork child's suspend count if stopping and suspending threads. (check_stopped_by_breakpoint): If stopped by trace, set the LWP's stop reason to TARGET_STOPPED_BY_SINGLE_STEP. (linux_detach): Complete an ongoing step-over. (lwp_suspended_inc, lwp_suspended_decr): New functions. Use throughout. (resume_stopped_resumed_lwps): Don't resume a suspended thread. (linux_wait_1): If passing a signal to the inferior after finishing a step-over, unsuspend and re-resume all lwps. If we see a single-step event but the thread should be continuing, don't pass the trap to gdb. (stuck_in_jump_pad_callback, move_out_of_jump_pad_callback): Use internal_error instead of gdb_assert. (enqueue_pending_signal): New function. (check_ptrace_stopped_lwp_gone): Add debug output. (start_step_over): Use internal_error instead of gdb_assert. (complete_ongoing_step_over): New function. (linux_resume_one_thread): Don't resume a suspended thread. (proceed_one_lwp): If the LWP is stepping over a breakpoint, reset it stepping. gdb/testsuite/ChangeLog: 2015-08-06 Pedro Alves * gdb.threads/forking-threads-plus-breakpoint.exp: New file. * gdb.threads/forking-threads-plus-breakpoint.c: New file. commit 00db26facc14ac830adef704bba9b24d0d366ddf Author: Pedro Alves Date: Thu Aug 6 10:30:17 2015 +0100 Linux gdbserver confused when event randomization picks process exit event The tail end of linux_wait_1 isn't expecting that the select_event_lwp machinery can pick a whole-process exit event to report to GDB. When that happens, both gdb and gdbserver end up quite confused: ... (gdb) [Thread 24971.24971] #1 stopped. 0x0000003615a011f0 in ?? () c& Continuing. (gdb) [New Thread 24971.24981] [New Thread 24983.24983] [New Thread 24971.24982] [Thread 24983.24983] #3 stopped. 0x0000003615ebc7cc in __libc_fork () at ../nptl/sysdeps/unix/sysv/linux/fork.c:130 130 pid = ARCH_FORK (); [New Thread 24984.24984] Error in re-setting breakpoint -16: PC register is not available Error in re-setting breakpoint -17: PC register is not available Error in re-setting breakpoint -18: PC register is not available Error in re-setting breakpoint -19: PC register is not available Error in re-setting breakpoint -24: PC register is not available Error in re-setting breakpoint -25: PC register is not available Error in re-setting breakpoint -26: PC register is not available Error in re-setting breakpoint -27: PC register is not available Error in re-setting breakpoint -28: PC register is not available Error in re-setting breakpoint -29: PC register is not available Error in re-setting breakpoint -30: PC register is not available PC register is not available (gdb) gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves * linux-low.c (add_lwp): Set waitstatus to TARGET_WAITKIND_IGNORE. (linux_thread_alive): Use lwp_is_marked_dead. (extended_event_reported): Delete. (linux_wait_1): Check if waitstatus is TARGET_WAITKIND_IGNORE instead of extended_event_reported. (mark_lwp_dead): Don't set the 'dead' flag. Store the waitstatus as well. (lwp_is_marked_dead): New function. (lwp_running): Use lwp_is_marked_dead. * linux-low.h: Delete 'dead' field, and update 'waitstatus's comment. commit ad071a3055b9b47dad340c1a1cb3a9b39529cef0 Author: Pedro Alves Date: Thu Aug 6 10:30:16 2015 +0100 Linux gdbserver fork event debug output The "extended event with waitstatus" debug output is unreachable, as it is guarded by "if (!report_to_gdb)". If extended_event_reported is true, then so is report_to_gdb. Move it to where we print why we're reporting an event to GDB. Also, the debug output currently tries to print the wrong struct target_waitstatus. gdb/gdbserver/ChangeLog: 2015-08-06 Pedro Alves * linux-low.c (linux_wait_1): Move fork event output out of the !report_to_gdb check. Pass event_child->waitstatus to target_waitstatus_to_string instead of ourstatus. commit e0a3af227ee0602ae69320fd6f931c363f14975b Author: Alan Modra Date: Thu Aug 6 15:56:34 2015 +0930 Revert ALIGN changes Reverts a2c59f28 and e474ab13. Since the unary form of ALIGN only references "dot" implicitly, there isn't really a strong argument for making ALIGN use a relative value when inside an output section. * ldexp.c (align_dot_val): Delete. (fold_unary ): Revert 2015-07-10 change. (is_align_conditional): Revert 2015-07-20 change. (exp_fold_tree_1): Likewise, but keep expanded comment. * scripttempl/elf.sc (.ldata, .bss): Revert 2015-07-20 change. * ld.texinfo (): Correct description. commit 0cf003f49ee8bbd5dc5f1ce45193c7ae056c69b8 Author: GDB Administrator Date: Thu Aug 6 00:00:10 2015 +0000 Automatic date update in version.in ----------------------------------------------------------------------- Summary of changes: ChangeLog | 19 + Makefile.def | 11 +- Makefile.in | 647 +++++- bfd/ChangeLog | 137 ++ bfd/bfd-in2.h | 12 + bfd/coff-sh.c | 2 +- bfd/elf-bfd.h | 13 +- bfd/elf.c | 26 +- bfd/elf32-i386.c | 12 +- bfd/elf32-or1k.c | 6 +- bfd/elf64-x86-64.c | 12 +- bfd/elflink.c | 215 ++- bfd/elfnn-aarch64.c | 74 +- bfd/elfxx-aarch64.c | 5 + bfd/libbfd.h | 3 + bfd/peicode.h | 32 + bfd/reloc.c | 15 + bfd/version.h | 2 +- binutils/ChangeLog | 9 + binutils/configure | 93 +- binutils/objcopy.c | 8 +- binutils/testsuite/ChangeLog | 31 + binutils/testsuite/binutils-all/objcopy.exp | 14 + binutils/testsuite/binutils-all/strip-12.d | 7 + binutils/testsuite/binutils-all/strip-12.s | 7 + binutils/testsuite/binutils-all/symbols-1.d | 15 + binutils/testsuite/binutils-all/symbols-2.d | 15 + binutils/testsuite/binutils-all/symbols-3.d | 15 + binutils/testsuite/binutils-all/symbols-4.d | 15 + binutils/testsuite/binutils-all/symbols.s | 14 + config.guess | 6 +- config.sub | 7 +- gas/ChangeLog | 49 + gas/config/tc-aarch64.c | 24 + gas/config/tc-arm.c | 14 +- gas/config/tc-mmix.c | 4 +- gas/config/tc-msp430.c | 20 +- gas/config/tc-tic4x.c | 2 +- gas/config/xtensa-relax.c | 2 +- gas/testsuite/ChangeLog | 28 + gas/testsuite/gas/aarch64/reloc-dtprel_lo12-1.d | 9 + gas/testsuite/gas/aarch64/reloc-dtprel_lo12-1.s | 5 + .../gas/aarch64/reloc-dtprel_lo12-ilp32-1.d | 10 + .../gas/aarch64/reloc-dtprel_lo12-ilp32-1.s | 5 + gas/testsuite/gas/aarch64/reloc-tlsldm-page-1.d | 10 + gas/testsuite/gas/aarch64/reloc-tlsldm-page-1.s | 6 + .../gas/aarch64/reloc-tlsldm-page-ilp32-1.d | 12 + .../gas/aarch64/reloc-tlsldm-page-ilp32-1.s | 6 + gas/testsuite/gas/aarch64/reloc-tlsldm_lo12_nc-1.d | 10 + gas/testsuite/gas/aarch64/reloc-tlsldm_lo12_nc-1.s | 5 + .../gas/aarch64/reloc-tlsldm_lo12_nc-ilp32-1.d | 11 + .../gas/aarch64/reloc-tlsldm_lo12_nc-ilp32-1.s | 5 + gas/testsuite/gas/mips/r6-n32.d | 2 + gas/testsuite/gas/mips/r6-n64.d | 2 + gas/testsuite/gas/mips/r6.d | 2 + gas/testsuite/gas/mips/r6.s | 3 + gdb/ChangeLog | 457 ++++- gdb/Makefile.in | 5 +- gdb/NEWS | 17 + gdb/acinclude.m4 | 127 +-- gdb/arm-tdep.c | 4 +- gdb/ax-general.c | 2 +- gdb/breakpoint.c | 11 +- gdb/btrace.c | 15 + gdb/btrace.h | 10 + gdb/c-exp.y | 2 +- gdb/common/agent.c | 1 - gdb/compile/compile-loc2c.c | 4 +- gdb/complaints.c | 17 +- gdb/configure | 856 ++++++-- gdb/configure.ac | 14 + gdb/cp-name-parser.y | 2 +- gdb/darwin-nat.c | 6 +- gdb/doc/ChangeLog | 11 + gdb/doc/gdb.texinfo | 33 +- gdb/dtrace-probe.c | 8 + gdb/dwarf2expr.c | 2 +- gdb/dwarf2loc.c | 4 +- gdb/dwarf2read.c | 27 +- gdb/eval.c | 3 +- gdb/frame.c | 42 + gdb/frame.h | 7 + gdb/gdbarch.h | 6 +- gdb/gdbarch.sh | 4 + gdb/gdbserver/ChangeLog | 82 + gdb/gdbserver/gdbthread.h | 3 +- gdb/gdbserver/inferiors.c | 4 +- gdb/gdbserver/inferiors.h | 5 +- gdb/gdbserver/linux-low.c | 328 +++- gdb/gdbserver/linux-low.h | 11 +- gdb/gdbserver/regcache.c | 7 +- gdb/gdbserver/server.c | 6 + gdb/gdbserver/tracepoint.c | 6 +- gdb/gdbthread.h | 61 +- gdb/guile/scm-param.c | 2 +- gdb/i386-linux-tdep.c | 2 +- gdb/inf-ptrace.c | 6 +- gdb/infcmd.c | 6 +- gdb/infrun.c | 2234 +++++++++++++++----- gdb/infrun.h | 7 + gdb/language.c | 35 +- gdb/language.h | 2 - gdb/linux-nat.c | 33 +- gdb/memory-map.c | 2 +- gdb/nat/linux-waitpid.c | 2 +- gdb/nto-procfs.c | 16 +- gdb/osabi.c | 16 +- gdb/parse.c | 3 +- gdb/ppc-linux-tdep.c | 31 +- gdb/procfs.c | 6 +- gdb/python/lib/gdb/command/type_printers.py | 2 +- gdb/python/py-frame.c | 2 +- gdb/python/py-symbol.c | 5 +- gdb/record-btrace.c | 25 +- gdb/record-full.c | 2 +- gdb/regcache.c | 6 +- gdb/remote-m32r-sdi.c | 6 +- gdb/remote-sim.c | 20 +- gdb/remote.c | 57 +- gdb/rs6000-tdep.c | 70 +- gdb/s390-linux-tdep.c | 115 +- gdb/source.c | 5 +- gdb/stack.c | 45 - gdb/symtab.c | 40 +- gdb/symtab.h | 2 + gdb/target-debug.h | 5 +- gdb/target-delegates.c | 59 + gdb/target.c | 92 + gdb/target.h | 28 +- gdb/target/waitstatus.h | 5 +- gdb/testsuite/ChangeLog | 66 + gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp | 50 +- gdb/testsuite/gdb.base/checkpoint-ns.exp | 26 + gdb/testsuite/gdb.base/checkpoint.exp | 6 +- gdb/testsuite/gdb.base/completion.exp | 82 + gdb/testsuite/gdb.base/valgrind-disp-step.c | 32 + ...valgrind-infcall.exp => valgrind-disp-step.exp} | 81 +- gdb/testsuite/gdb.base/valgrind-infcall.exp | 5 + gdb/testsuite/gdb.btrace/instruction_history.exp | 20 +- gdb/testsuite/gdb.btrace/tsx.c | 26 + gdb/testsuite/gdb.btrace/tsx.exp | 41 + gdb/testsuite/gdb.btrace/x86-tsx.S | 29 + gdb/testsuite/gdb.reverse/step-precsave.exp | 15 +- gdb/testsuite/gdb.reverse/until-precsave.exp | 4 +- .../gdb.threads/forking-threads-plus-breakpoint.c | 139 ++ .../forking-threads-plus-breakpoint.exp | 117 + .../gdb.threads/process-dies-while-handling-bp.c | 73 + .../gdb.threads/process-dies-while-handling-bp.exp | 147 ++ .../signal-while-stepping-over-bp-other-thread.exp | 2 +- .../gdb.threads/step-over-lands-on-breakpoint.c | 17 +- .../gdb.threads/step-over-lands-on-breakpoint.exp | 6 +- .../gdb.threads/step-over-trips-on-watchpoint.c | 17 +- .../gdb.threads/step-over-trips-on-watchpoint.exp | 9 +- gdb/testsuite/lib/gdb.exp | 124 ++ gdb/thread.c | 197 ++- gdb/top.c | 6 +- gdb/utils.c | 2 +- gdb/windows-nat.c | 6 +- include/elf/ChangeLog | 12 + include/elf/aarch64.h | 3 + intl/ChangeLog | 4 + intl/configure | 824 +++----- ld/ChangeLog | 9 + ld/ld.texinfo | 2 +- ld/ldexp.c | 80 +- ld/scripttempl/elf.sc | 4 +- ld/testsuite/ChangeLog | 39 + ld/testsuite/ld-aarch64/aarch64-elf.exp | 5 + ld/testsuite/ld-aarch64/emit-relocs-529-overflow.d | 4 + ld/testsuite/ld-aarch64/emit-relocs-529-overflow.s | 11 + ld/testsuite/ld-aarch64/emit-relocs-529.d | 7 + ld/testsuite/ld-aarch64/emit-relocs-529.s | 10 + ld/testsuite/ld-aarch64/emit-relocs-86-overflow.d | 5 + ld/testsuite/ld-aarch64/emit-relocs-86-overflow.s | 11 + ld/testsuite/ld-aarch64/emit-relocs-86.d | 8 + ld/testsuite/ld-aarch64/emit-relocs-86.s | 10 + ld/testsuite/ld-aarch64/tls-small-ld.d | 9 + ld/testsuite/ld-aarch64/tls-small-ld.s | 8 + ld/testsuite/ld-elf/indirect.exp | 25 +- ld/testsuite/ld-elf/pr18720.out | 2 + ld/testsuite/ld-elf/pr18720a.c | 27 + ld/testsuite/ld-elf/pr18720b.c | 11 + ld/testsuite/ld-elf/pr18720c.c | 15 + ld/testsuite/ld-ifunc/ifunc.exp | 27 + ld/testsuite/ld-ifunc/pr18808.out | 1 + ld/testsuite/ld-ifunc/pr18808a.c | 9 + ld/testsuite/ld-ifunc/pr18808b.c | 24 + ld/testsuite/lib/ld-lib.exp | 45 + libiberty/ChangeLog | 7 + libiberty/d-demangle.c | 15 +- libiberty/testsuite/d-demangle-expected | 22 +- opcodes/ChangeLog | 15 + opcodes/aarch64-tbl.h | 2 +- opcodes/i386-gen.c | 2 +- opcodes/i386-init.h | 2 +- opcodes/mips-opc.c | 1 + 196 files changed, 7467 insertions(+), 2144 deletions(-) create mode 100644 binutils/testsuite/binutils-all/strip-12.d create mode 100644 binutils/testsuite/binutils-all/strip-12.s create mode 100644 binutils/testsuite/binutils-all/symbols-1.d create mode 100644 binutils/testsuite/binutils-all/symbols-2.d create mode 100644 binutils/testsuite/binutils-all/symbols-3.d create mode 100644 binutils/testsuite/binutils-all/symbols-4.d create mode 100644 binutils/testsuite/binutils-all/symbols.s create mode 100644 gas/testsuite/gas/aarch64/reloc-dtprel_lo12-1.d create mode 100644 gas/testsuite/gas/aarch64/reloc-dtprel_lo12-1.s create mode 100644 gas/testsuite/gas/aarch64/reloc-dtprel_lo12-ilp32-1.d create mode 100644 gas/testsuite/gas/aarch64/reloc-dtprel_lo12-ilp32-1.s create mode 100644 gas/testsuite/gas/aarch64/reloc-tlsldm-page-1.d create mode 100644 gas/testsuite/gas/aarch64/reloc-tlsldm-page-1.s create mode 100644 gas/testsuite/gas/aarch64/reloc-tlsldm-page-ilp32-1.d create mode 100644 gas/testsuite/gas/aarch64/reloc-tlsldm-page-ilp32-1.s create mode 100644 gas/testsuite/gas/aarch64/reloc-tlsldm_lo12_nc-1.d create mode 100644 gas/testsuite/gas/aarch64/reloc-tlsldm_lo12_nc-1.s create mode 100644 gas/testsuite/gas/aarch64/reloc-tlsldm_lo12_nc-ilp32-1.d create mode 100644 gas/testsuite/gas/aarch64/reloc-tlsldm_lo12_nc-ilp32-1.s create mode 100644 gdb/testsuite/gdb.base/checkpoint-ns.exp create mode 100644 gdb/testsuite/gdb.base/valgrind-disp-step.c copy gdb/testsuite/gdb.base/{valgrind-infcall.exp => valgrind-disp-step.exp} (62%) create mode 100644 gdb/testsuite/gdb.btrace/tsx.c create mode 100644 gdb/testsuite/gdb.btrace/tsx.exp create mode 100644 gdb/testsuite/gdb.btrace/x86-tsx.S create mode 100644 gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.c create mode 100644 gdb/testsuite/gdb.threads/forking-threads-plus-breakpoint.exp create mode 100644 gdb/testsuite/gdb.threads/process-dies-while-handling-bp.c create mode 100644 gdb/testsuite/gdb.threads/process-dies-while-handling-bp.exp create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-529-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-529-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-529.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-529.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-86-overflow.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-86-overflow.s create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-86.d create mode 100644 ld/testsuite/ld-aarch64/emit-relocs-86.s create mode 100644 ld/testsuite/ld-aarch64/tls-small-ld.d create mode 100644 ld/testsuite/ld-aarch64/tls-small-ld.s create mode 100644 ld/testsuite/ld-elf/pr18720.out create mode 100644 ld/testsuite/ld-elf/pr18720a.c create mode 100644 ld/testsuite/ld-elf/pr18720b.c create mode 100644 ld/testsuite/ld-elf/pr18720c.c create mode 100644 ld/testsuite/ld-ifunc/pr18808.out create mode 100644 ld/testsuite/ld-ifunc/pr18808a.c create mode 100644 ld/testsuite/ld-ifunc/pr18808b.c First 500 lines of diff: diff --git a/ChangeLog b/ChangeLog index f8690be..1d080fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2015-08-07 H.J. Lu + + Sync with GCC + 2015-07-28 Ben Elliston + + * config.sub, config.guess: Import from upstream. + +2015-08-06 Yaakov Selkowitz + + * Makefile.def (libiconv): Define bootstrap=true. + Mark pdf/html/info as missing. + (configure-gcc): Depend on all-libiconv. + (all-gcc): Ditto. + (configure-libcpp): Ditto. + (all-libcpp): Ditto. + (configure-intl): Ditto. + (all-intl): Ditto. + * Makefile.in: Regenerate. + 2015-07-27 H.J. Lu Sync with GCC diff --git a/Makefile.def b/Makefile.def index 4394188..01445e4 100644 --- a/Makefile.def +++ b/Makefile.def @@ -93,9 +93,12 @@ host_modules= { module= libiberty-linker-plugin; bootstrap=true; extra_make_flags='@extra_linker_plugin_flags@'; }; // We abuse missing to avoid installing anything for libiconv. host_modules= { module= libiconv; + bootstrap=true; extra_configure_flags='--disable-shared'; no_install= true; - missing= install-info; + missing= pdf; + missing= html; + missing= info; missing= install-pdf; missing= install-html; missing= install-info; }; @@ -324,6 +327,7 @@ dependencies = { module=configure-gcc; on=all-gas; }; dependencies = { module=configure-gcc; on=all-ld; }; dependencies = { module=configure-gcc; on=all-gold; }; dependencies = { module=configure-gcc; on=all-libelf; }; +dependencies = { module=configure-gcc; on=all-libiconv; }; dependencies = { module=all-gcc; on=all-libiberty; hard=true; }; dependencies = { module=all-gcc; on=all-intl; }; dependencies = { module=all-gcc; on=all-mpfr; }; @@ -342,6 +346,7 @@ dependencies = { module=all-gcc; on=all-libdecnumber; hard=true; }; dependencies = { module=all-gcc; on=all-libiberty; }; dependencies = { module=all-gcc; on=all-fixincludes; }; dependencies = { module=all-gcc; on=all-lto-plugin; }; +dependencies = { module=all-gcc; on=all-libiconv; }; dependencies = { module=info-gcc; on=all-build-libiberty; }; dependencies = { module=dvi-gcc; on=all-build-libiberty; }; dependencies = { module=pdf-gcc; on=all-build-libiberty; }; @@ -353,8 +358,10 @@ dependencies = { module=install-strip-gcc ; on=install-strip-lto-plugin; }; dependencies = { module=configure-libcpp; on=configure-libiberty; hard=true; }; dependencies = { module=configure-libcpp; on=configure-intl; }; +dependencies = { module=configure-libcpp; on=all-libiconv; }; dependencies = { module=all-libcpp; on=all-libiberty; hard=true; }; dependencies = { module=all-libcpp; on=all-intl; }; +dependencies = { module=all-libcpp; on=all-libiconv; }; dependencies = { module=all-fixincludes; on=all-libiberty; }; @@ -373,9 +380,11 @@ dependencies = { module=all-gotools; on=all-target-libgo; }; dependencies = { module=all-utils; on=all-libiberty; }; +dependencies = { module=configure-intl; on=all-libiconv; }; dependencies = { module=configure-mpfr; on=all-gmp; }; dependencies = { module=configure-mpc; on=all-mpfr; }; dependencies = { module=configure-isl; on=all-gmp; }; +dependencies = { module=all-intl; on=all-libiconv; }; // Host modules specific to gdb. dependencies = { module=configure-gdb; on=all-intl; }; diff --git a/Makefile.in b/Makefile.in index cfc1035..13f3740 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1079,7 +1079,9 @@ all-host: maybe-all-libiberty @if libiberty-linker-plugin-no-bootstrap all-host: maybe-all-libiberty-linker-plugin @endif libiberty-linker-plugin-no-bootstrap +@if libiconv-no-bootstrap all-host: maybe-all-libiconv +@endif libiconv-no-bootstrap all-host: maybe-all-m4 all-host: maybe-all-readline all-host: maybe-all-sid @@ -24134,7 +24136,6 @@ configure-libiconv: stage_current @if libiconv maybe-configure-libiconv: configure-libiconv configure-libiconv: - @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ @@ -24158,6 +24159,211 @@ configure-libiconv: +.PHONY: configure-stage1-libiconv maybe-configure-stage1-libiconv +maybe-configure-stage1-libiconv: +@if libiconv-bootstrap +maybe-configure-stage1-libiconv: configure-stage1-libiconv +configure-stage1-libiconv: + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 1 in $(HOST_SUBDIR)/libiconv; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv; \ + cd $(HOST_SUBDIR)/libiconv || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiconv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + \ + $(STAGE1_CONFIGURE_FLAGS) \ + --disable-shared +@endif libiconv-bootstrap + +.PHONY: configure-stage2-libiconv maybe-configure-stage2-libiconv +maybe-configure-stage2-libiconv: +@if libiconv-bootstrap +maybe-configure-stage2-libiconv: configure-stage2-libiconv +configure-stage2-libiconv: + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 2 in $(HOST_SUBDIR)/libiconv; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv; \ + cd $(HOST_SUBDIR)/libiconv || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiconv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE2_CONFIGURE_FLAGS) \ + --disable-shared +@endif libiconv-bootstrap + +.PHONY: configure-stage3-libiconv maybe-configure-stage3-libiconv +maybe-configure-stage3-libiconv: +@if libiconv-bootstrap +maybe-configure-stage3-libiconv: configure-stage3-libiconv +configure-stage3-libiconv: + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 3 in $(HOST_SUBDIR)/libiconv; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv; \ + cd $(HOST_SUBDIR)/libiconv || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiconv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE3_CONFIGURE_FLAGS) \ + --disable-shared +@endif libiconv-bootstrap + +.PHONY: configure-stage4-libiconv maybe-configure-stage4-libiconv +maybe-configure-stage4-libiconv: +@if libiconv-bootstrap +maybe-configure-stage4-libiconv: configure-stage4-libiconv +configure-stage4-libiconv: + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage 4 in $(HOST_SUBDIR)/libiconv; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv; \ + cd $(HOST_SUBDIR)/libiconv || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiconv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGE4_CONFIGURE_FLAGS) \ + --disable-shared +@endif libiconv-bootstrap + +.PHONY: configure-stageprofile-libiconv maybe-configure-stageprofile-libiconv +maybe-configure-stageprofile-libiconv: +@if libiconv-bootstrap +maybe-configure-stageprofile-libiconv: configure-stageprofile-libiconv +configure-stageprofile-libiconv: + @[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEprofile_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage profile in $(HOST_SUBDIR)/libiconv; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv; \ + cd $(HOST_SUBDIR)/libiconv || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiconv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEprofile_CONFIGURE_FLAGS) \ + --disable-shared +@endif libiconv-bootstrap + +.PHONY: configure-stagefeedback-libiconv maybe-configure-stagefeedback-libiconv +maybe-configure-stagefeedback-libiconv: +@if libiconv-bootstrap +maybe-configure-stagefeedback-libiconv: configure-stagefeedback-libiconv +configure-stagefeedback-libiconv: + @[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start + @$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGEfeedback_TFLAGS)"; \ + test ! -f $(HOST_SUBDIR)/libiconv/Makefile || exit 0; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \ + CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \ + LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS; \ + echo Configuring stage feedback in $(HOST_SUBDIR)/libiconv; \ + $(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libiconv; \ + cd $(HOST_SUBDIR)/libiconv || exit 1; \ + case $(srcdir) in \ + /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ + *) topdir=`echo $(HOST_SUBDIR)/libiconv/ | \ + sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ + esac; \ + module_srcdir=libiconv; \ + $(SHELL) $$s/$$module_srcdir/configure \ + --srcdir=$${topdir}/$$module_srcdir \ + $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \ + --target=${target_alias} \ + --with-build-libsubdir=$(HOST_SUBDIR) \ + $(STAGEfeedback_CONFIGURE_FLAGS) \ + --disable-shared +@endif libiconv-bootstrap + + + .PHONY: all-libiconv maybe-all-libiconv @@ -24169,7 +24375,6 @@ all-libiconv: stage_current TARGET-libiconv=all maybe-all-libiconv: all-libiconv all-libiconv: configure-libiconv - @: $(MAKE); $(unstage) @r=`${PWD_COMMAND}`; export r; \ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ $(HOST_EXPORTS) \ @@ -24180,6 +24385,255 @@ all-libiconv: configure-libiconv +.PHONY: all-stage1-libiconv maybe-all-stage1-libiconv +.PHONY: clean-stage1-libiconv maybe-clean-stage1-libiconv +maybe-all-stage1-libiconv: +maybe-clean-stage1-libiconv: +@if libiconv-bootstrap +maybe-all-stage1-libiconv: all-stage1-libiconv +all-stage1: all-stage1-libiconv +TARGET-stage1-libiconv = $(TARGET-libiconv) +all-stage1-libiconv: configure-stage1-libiconv + @[ $(current_stage) = stage1 ] || $(MAKE) stage1-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE1_TFLAGS)"; \ + $(HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libiconv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE1_CFLAGS)" \ + CXXFLAGS="$(STAGE1_CXXFLAGS)" \ + LIBCFLAGS="$(LIBCFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) \ + $(STAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE1_TFLAGS)" \ + $(TARGET-stage1-libiconv) + +maybe-clean-stage1-libiconv: clean-stage1-libiconv +clean-stage1: clean-stage1-libiconv +clean-stage1-libiconv: + @if [ $(current_stage) = stage1 ]; then \ + [ -f $(HOST_SUBDIR)/libiconv/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage1-libiconv/Makefile ] || exit 0; \ + $(MAKE) stage1-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiconv && \ + $(MAKE) $(EXTRA_HOST_FLAGS) \ + $(STAGE1_FLAGS_TO_PASS) clean +@endif libiconv-bootstrap + + +.PHONY: all-stage2-libiconv maybe-all-stage2-libiconv +.PHONY: clean-stage2-libiconv maybe-clean-stage2-libiconv +maybe-all-stage2-libiconv: +maybe-clean-stage2-libiconv: +@if libiconv-bootstrap +maybe-all-stage2-libiconv: all-stage2-libiconv +all-stage2: all-stage2-libiconv +TARGET-stage2-libiconv = $(TARGET-libiconv) +all-stage2-libiconv: configure-stage2-libiconv + @[ $(current_stage) = stage2 ] || $(MAKE) stage2-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE2_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libiconv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE2_CFLAGS)" \ + CXXFLAGS="$(STAGE2_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE2_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE2_TFLAGS)" \ + $(TARGET-stage2-libiconv) + +maybe-clean-stage2-libiconv: clean-stage2-libiconv +clean-stage2: clean-stage2-libiconv +clean-stage2-libiconv: + @if [ $(current_stage) = stage2 ]; then \ + [ -f $(HOST_SUBDIR)/libiconv/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage2-libiconv/Makefile ] || exit 0; \ + $(MAKE) stage2-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiconv && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean +@endif libiconv-bootstrap + + +.PHONY: all-stage3-libiconv maybe-all-stage3-libiconv +.PHONY: clean-stage3-libiconv maybe-clean-stage3-libiconv +maybe-all-stage3-libiconv: +maybe-clean-stage3-libiconv: +@if libiconv-bootstrap +maybe-all-stage3-libiconv: all-stage3-libiconv +all-stage3: all-stage3-libiconv +TARGET-stage3-libiconv = $(TARGET-libiconv) +all-stage3-libiconv: configure-stage3-libiconv + @[ $(current_stage) = stage3 ] || $(MAKE) stage3-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE3_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libiconv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE3_CFLAGS)" \ + CXXFLAGS="$(STAGE3_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE3_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE3_TFLAGS)" \ + $(TARGET-stage3-libiconv) + +maybe-clean-stage3-libiconv: clean-stage3-libiconv +clean-stage3: clean-stage3-libiconv +clean-stage3-libiconv: + @if [ $(current_stage) = stage3 ]; then \ + [ -f $(HOST_SUBDIR)/libiconv/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage3-libiconv/Makefile ] || exit 0; \ + $(MAKE) stage3-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiconv && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean +@endif libiconv-bootstrap + + +.PHONY: all-stage4-libiconv maybe-all-stage4-libiconv +.PHONY: clean-stage4-libiconv maybe-clean-stage4-libiconv +maybe-all-stage4-libiconv: +maybe-clean-stage4-libiconv: +@if libiconv-bootstrap +maybe-all-stage4-libiconv: all-stage4-libiconv +all-stage4: all-stage4-libiconv +TARGET-stage4-libiconv = $(TARGET-libiconv) +all-stage4-libiconv: configure-stage4-libiconv + @[ $(current_stage) = stage4 ] || $(MAKE) stage4-start + @r=`${PWD_COMMAND}`; export r; \ + s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ + TFLAGS="$(STAGE4_TFLAGS)"; \ + $(HOST_EXPORTS) \ + $(POSTSTAGE1_HOST_EXPORTS) \ + cd $(HOST_SUBDIR)/libiconv && \ + $(MAKE) $(BASE_FLAGS_TO_PASS) \ + CFLAGS="$(STAGE4_CFLAGS)" \ + CXXFLAGS="$(STAGE4_CXXFLAGS)" \ + LIBCFLAGS="$(STAGE4_CFLAGS)" \ + CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \ + CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \ + LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \ + $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) \ + TFLAGS="$(STAGE4_TFLAGS)" \ + $(TARGET-stage4-libiconv) + +maybe-clean-stage4-libiconv: clean-stage4-libiconv +clean-stage4: clean-stage4-libiconv +clean-stage4-libiconv: + @if [ $(current_stage) = stage4 ]; then \ + [ -f $(HOST_SUBDIR)/libiconv/Makefile ] || exit 0; \ + else \ + [ -f $(HOST_SUBDIR)/stage4-libiconv/Makefile ] || exit 0; \ + $(MAKE) stage4-start; \ + fi; \ + cd $(HOST_SUBDIR)/libiconv && \ + $(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS) clean +@endif libiconv-bootstrap + + +.PHONY: all-stageprofile-libiconv maybe-all-stageprofile-libiconv +.PHONY: clean-stageprofile-libiconv maybe-clean-stageprofile-libiconv +maybe-all-stageprofile-libiconv: +maybe-clean-stageprofile-libiconv: +@if libiconv-bootstrap hooks/post-receive -- Repository for Project Archer.