From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 124387 invoked by alias); 18 Jun 2017 19:30:52 -0000 Mailing-List: contact archer-commits-help@sourceware.org; run by ezmlm Sender: Precedence: bulk List-Post: List-Help: List-Subscribe: Received: (qmail 110734 invoked by uid 9674); 18 Jun 2017 19:30:42 -0000 Date: Sun, 18 Jun 2017 19:30:00 -0000 Message-ID: <20170618193040.107727.qmail@sourceware.org> From: jkratoch@sourceware.org To: archer-commits@sourceware.org Subject: [SCM] users/jkratoch/index: DWARF-5: .debug_names index consumer X-Git-Refname: refs/heads/users/jkratoch/index X-Git-Reftype: branch X-Git-Oldrev: 0b088180e930a5337b7d01a67e08fe62c5fea441 X-Git-Newrev: b137841b37b6247aa63d8270e5820c8c605d9093 X-SW-Source: 2017-q2/txt/msg00041.txt.bz2 List-Id: The branch, users/jkratoch/index has been updated discards 0b088180e930a5337b7d01a67e08fe62c5fea441 (commit) discards b94ba00665671b17f8c105efc314ca8b11b31ded (commit) discards 67ac1f63c84b6f0b39ba16f92222cba2a40ecb7c (commit) discards 4926bfc3e33a2149a5d1fe9760f2e017757a3264 (commit) discards d5d9b4e3e29fb119a61138a11c93634eae865e68 (commit) discards 65ca64ea7b6404e263a3a788abc5b3340e26b7a6 (commit) discards 08ea9dc56e39f68f3f0b6ee73e24f8b853e8c6a1 (commit) discards 4d073453abaa58cdce67b5f5dccd991190a182fa (commit) via b137841b37b6247aa63d8270e5820c8c605d9093 (commit) via 5229437ae3de0f997b264835433697889d9c94b6 (commit) via 14f14266282cc676c6424a78d8f84d82a8502773 (commit) via 4be4f2b35cd1d2313268c1cb77687d4e1968c231 (commit) via e39de6c1d1c9ede6e08c98e99e0db418a7ce974b (commit) via 426b46fa0c561ae485b9b09c4972f269a0632103 (commit) via 16c6cfce5fe4f039e3dfe7829bfe8686bd6d4f14 (commit) via bdd32e03c5e87bd38e63e9cc3fd35375241db58f (commit) via 99149362b110c0b243eecff05cdbda0d7260b412 (commit) via 1d4fbac99e05c2d2ea98984f9bc6f7d7f1a183b7 (commit) via ae3e2ccfe75e5c62749c15ead5c95e052aad21ca (commit) via 8465943af6a6f756c3d4b077eb1081ade927b26b (commit) via 3e019bdc20eb81b91ab5bc774386201b874c0bac (commit) via cf0dd6f02cd45d6dbb6bd87dde25dd3ed74eb7d0 (commit) via 291e62953900e0f4998224127bc56239e421cda9 (commit) via 6f98355cda4ac718855d247fd942553b1706549b (commit) via e197589b72e7b7b2db95c63acd58abb574b4249c (commit) via 4b48e2f6a50e85e5acc316289c4a6af693ad98f0 (commit) via 7dba9362c172f1073487536eb137feb2da30b0ff (commit) via d68f19767dfbb33c1813563d5a4af0731a1855c5 (commit) via a87dc45adc983a8e6ec3db8d18cd31c35abd2048 (commit) via c092b67bf0adb0fc1e179612b161e19938929e66 (commit) via 00fd923b247530bd30f695b5bd899467536ad4f8 (commit) via 75e06f9753af16bd8a4d864431ceb1a4cdd13f58 (commit) via 6353d82b8fa825c2143f41e84b0d5d4446c6e99a (commit) via 8cac017d35ef374e65acc98818a17cf8a652cbd0 (commit) via 0d96e4df4812c3bad77c229dfef47a9bc115ac12 (commit) via cd3ea7c69acc5045eb28f9bf80d923116e15e4f5 (commit) via 62b76e4b6e0b4cb5b3e0053d1de4097b32577049 (commit) via 63634bb4a107877dd08b6282e28e11cfd1a1649e (commit) via 63323b5b23bd83fa7b04ea00dff593c933e9b0e3 (commit) via 76800cba595efc3fe95a446c2d664e42ae4ee869 (commit) via 08c7881b814c546efc3996fd1decdf0877f7a779 (commit) via 37de058ab2e9619fbb6dea52ec2773a5d65619c4 (commit) via 45159d6ad394fe7db840b2b92eaa69508b8a8fe7 (commit) via 6e89f899896fd596527d24de6a8a98bc633805fb (commit) via f7e16c2a9cc405707e646e951397938d2b4eea48 (commit) via b46c4cf0908b05ab493d4f30e9a52a887ee118fd (commit) via e64519d1ed7fd8f990f05a5562d5b5c0c44b7d7e (commit) via f461bbd847f15657f3dd2f317c30c75a7520da1f (commit) via ae87f7e73eba29bd38b3a9684a10b948ed715612 (commit) via 6394c606997f88acfc80de4dff33a4ae2de987b4 (commit) via 99031bafd6e81a41553803886c6b245cb0ab89d9 (commit) via 8eca1095d96c215409371c5687573aac89a0a980 (commit) via f78d1b3ae1cee2bc1a2be4b3c30df9627e13fdc1 (commit) via b6947a7f08011375120186688bf2efd866f7d148 (commit) via db5fa770268baf8cc82cf9b141d69799fd485fe2 (commit) via 5524b5250e319f41933605420e9526fb74cfb9ae (commit) via 4c0b797e0d2005780d8f0300f0ccc14b9d7c13b5 (commit) via c53d2e6d744da000aaafe0237bced090aab62818 (commit) via d5722aa2fe9e1d76d98865a9ab77a7b9388743c9 (commit) via 05c966f3c98d6126404f1cd7f233148a89810b5d (commit) via 04f963fd489cae724a60140e13984415c205f4ac (commit) via 319c2dbe240a797c6f9436bfd64f5c16045ad5a1 (commit) via f9a36b297d470a72ead64ed07cd5f313d9d7a502 (commit) via b27685f2016c510d03ac9a64f7b04ce8efcf95c4 (commit) via 01ec7a272201de84be1ca2c557e58d97891f288c (commit) via 848d907446d738604d11ab4061f3b0a8b23d4504 (commit) via 3b912944f4257dd935c91b77a51bc2e4baa1018e (commit) via da614360f520b84a9c87506eb0c880f7a056468b (commit) via cbd0eecf261c2447781f8c89b0d955ee66fae7e9 (commit) via 6490dc678bc35f2204afb38449de5127ef8bcca0 (commit) via dc74becf498f60c842d81eb6e98cfcbc3f167c22 (commit) via 8569cfa78c2cc8b5ef66b0bebddcc0e63231fb51 (commit) via 55acdf2242372ae52abb25c80db8e75df5578b23 (commit) via f65e204425b5b46a5927d9501c42f25d98a866ce (commit) via 23f945bf8cebf348154aff43782de2e1977e9230 (commit) via f236533e3c6a2693bea879b2a4d24d1229864ac9 (commit) via 65d84b76164dc8ec1a1f0f0e0fd41667065ffd4e (commit) via 242d31ab7c3901e02bd68c1824d1d3610e02562b (commit) via 03c8af18d1a8f359fd023696848bda488119da60 (commit) via 840989c113433c069f54872d7e051e1572202326 (commit) via 3bf310110722b03d9ff9c4f34f5920a9be2878d0 (commit) via 359b19bb24d048750aa5367ad56a33267300d1a8 (commit) via 07c9ca3bd8e6f83bcec49c922b52422c538f60f7 (commit) via f1cc987420d9d2489eb453bd1c87139666cbe7fd (commit) via cdaac320fd62bff75562aaa3e466494dc72dd175 (commit) via af547a9614969e1d1ea6fcec6b59cd77a606380f (commit) via 805acca042afed8e8431c92ab031167b03475676 (commit) via ddd7882a582637d86a321c1ab835f6cdbeb6d017 (commit) via e93523245b704bc126705620969b4736b00350c5 (commit) via d5d1163eff2415a01895f1cff8bbee32b3f0ab66 (commit) via 0567c9861e113a573cc905002a59cb1bc3d78450 (commit) via 10bbbc1d790836122c417fe4fef7233604bb3982 (commit) via 032bb6eae8a0166f9b5d2eac6960383c532ef6d1 (commit) via a0688fac4b1662e34a9a08e233112beb7403f642 (commit) via 973e9aab63a70311dffa2993dac52bd63ea461ec (commit) via f12f6bad7d4e8de1d1f4c9c1811757571149c8f1 (commit) via d9109c8080ac0a2caeaa5f3d51e8a3b4891a68a8 (commit) via 4ac0cb1cf04f105586746a6cce5b0f93d76f2b33 (commit) via 30a254669b16b86166fed1f9a4c4f9cc55a07fdc (commit) via b3464d0316235899d9facf81896d7a427d5cd6d0 (commit) via 4b76cda9938e4cb200bccffb6e020268c6a51b89 (commit) via e8f8bcb35f22965c8e4309c4aa4227241c485fe7 (commit) via 70a1152bee7cb959ab0c6c13bada03190125022f (commit) via c2f134ac418eafca850e7095d789a01ec1142fc4 (commit) via a81e6d4d261b7471428408f4ebba1b8113c16ccf (commit) via 6fd931f2d66af8398b2fae3ab5f5afe091b8362f (commit) via bc8f2430e08cc2a520db49a42686e0529be4a3bc (commit) via 5c3ce2bc8adea307917d3bfeef53114795764db6 (commit) via 3704e3589d3d187fbf76e688388b1a92fd627c8d (commit) via fd0219988dada5b4ddb04b691f71c9acdd87b739 (commit) via c4dcb155c446cee135101d72172b47e3fc99caf9 (commit) via 9b97dfbf8049bed3b2f79c6c785afaf18206dad3 (commit) via c7198f97e026f2a2d53de8dda090c04619355a36 (commit) via 561bf3e950e410fbcac06523d43039f1f58150ca (commit) via 6d45d4b42b5b360c0b80259e101c01d650d0be23 (commit) via 9845682bda4149b5b3648f2d49a041aef5bc1af5 (commit) via 654f3b6a2af84ba0f9c6a4c011364b8f650d66a6 (commit) via dbb2bcd0059f8d91de5a792f8684c8908c316720 (commit) via fe7bb2d5ab1f47163f38d2070dc1e62c1920bb44 (commit) via 2f91880f3afb3cc521111dfcc99b214c77aa97a1 (commit) via e3d1d4088ad3b4d0fed39df62ad295ed60707807 (commit) via 64aa8e030360ba68e32ca15fa5aa426160a2efb1 (commit) via a0abe74332bd25aeb68acfadd74280c0f117c493 (commit) via f4e6805f98d2b3eae305f66ba26ab25aae1485f2 (commit) via cd6402916febae6d8a4e62c572ea6fd487eebb61 (commit) via 7ef0acc15ec011371a3901a997c867165bf7a733 (commit) via cc89d0b3344614ae97456df84034096b698e5790 (commit) via 9d5c718b7a9c46132940f899f40556a77ca462a0 (commit) via be9e3704f91190c1e1c5d253494423b13c982d93 (commit) via b8b6e72f3db1f798680742c02f3dc220175d0757 (commit) via 5369082e7b786dee2c185f768b126a9a18cb2915 (commit) via 4ec192e6abe86319b9e9af6f2ae4cf0614b1e2b3 (commit) via ff4ca5ac6a2e85177dc7efe5cbda7b956bb71fd5 (commit) via 6322e5c5cb7ffe1c26c50f117765503717b0431c (commit) via 51fa2693add9ead8288f475d380f4aec7372fe5a (commit) via bc327528fd2ccdc6c29ab6ae608085dddbad5cc8 (commit) via 81b6fe3bf9f3be2b6b81d05d08ac58d2a6dcb760 (commit) via 3030551ec55042d7c87bd55fd29db2b06fe06df9 (commit) via aefd8b33d97bded58e51d75271f99e1eaec9fb28 (commit) via 2090129c36c7e582943b7d300968d19b46160d84 (commit) via 043a49349c713dc329a2dfc413b082c3826ecdb8 (commit) via 156525114c1cbbace0dec223494b842ffc60d52e (commit) via 2d7cc5c7973b6d1bdd9205288863bedadeaf8b41 (commit) via 62e20ed45e3da5f3ba695e4ee109317668180fe6 (commit) via 50d6adef3b8509c4e7e37b4b708e0593d43ed347 (commit) via 4a8a33c843681410eeba4e05aa749abda8a8341b (commit) via d1be909e7fbf753fd3aa18681089e3bcacbcf51c (commit) via 4936f23592b910d65cc9f077115559366f9c4662 (commit) via 58f59b7616851b2f3737e385ec9095765eeeffa3 (commit) via 78e8a2ff5f01799874be41fdc919d34c670496c6 (commit) via f4a6504277d861057aedd2b88369493d644935c6 (commit) via 9f7fb0aa2b6eb9fb185c1c2ae4159d783acadc0e (commit) via e1e01040aa83ddef0bb5c60a8b187f769b2b1ec3 (commit) via fbe654c8bc78eb06b6d7ee4fcec64e9e34e7a9ac (commit) via 9949827bea788753c29b7bb503d6d5dda6ea21ff (commit) via 5c8ed6a4a1d197658086e9175f820227ebffebec (commit) via d24b756188bd63a422671a73e31af718007264ca (commit) via 0ee3a6dbd06b88a4e02f3f46c3ec036fd951400b (commit) via ae0d01d663a2bac65afb8b94bbf1a91d95298f68 (commit) via 670b1a13351f34c38ea1abb6cb20e247fb002015 (commit) via 7bdf4127c38081c7764c0bf1db55d0b2e56391dc (commit) via 458ad2b83ecf4d764703767bccf19723ca741f00 (commit) via fbebaf4a56dd03251bc2e12fa6834d90555aa82a (commit) via 056bafd472efccfb2d7f44f6469dfa08cdf7414b (commit) via 61756f84eedc470c975f8bafe6ddf10acaca6942 (commit) via a6ba6751c9cf5ef909e47d09609c28ad1509dfa9 (commit) via d9409498813c75c1a9e9287ac6e5100ed3130390 (commit) via af54f0eb968ba8cb3862fd3cad097a3f3363467b (commit) via 91001320a22466d1580e169bcb023d3b822226b4 (commit) via 6734f10ae9af6cfd47e70baa2cd3e326afabe5ed (commit) via 3ea0007c8ca3ec851df6ab5391a98467b4021f92 (commit) via 49cf576c221b1d45d222f8cddaddbddf29336461 (commit) via 923ca33982401c5700421a592d2b0ee083cbefa1 (commit) via 26b6a6aba5567143ed0f59388663b8f50e5cfcab (commit) via 22827c51338ce25574ed7b204a2e5bd40f45bdad (commit) via 0af6b29b9dcd8ff2c34d07a76e3416acf3758bfc (commit) via 4a4a4a27ba5c731044d3d3594545e6f06b0ec0e5 (commit) via 0e05cf3a61e1996829359e1c32eedb6820930331 (commit) via c1fc2657206188767cb66813d07b9ecbb5e9ec51 (commit) via 3b0871f44a3402f4e1e811ae81c8ba1293c1c7be (commit) via a5e364af4a3d745bb79cfc9a1d533632d4d04b57 (commit) via e7cd2680e089327e7fefaf1cf5a58ec09e379f0d (commit) via 0efdc7237e8eb2c75b9c74bc60175ef50719b8b8 (commit) via 6cf3bf8875d84aff854fe5fe5a04141033d5ee6f (commit) via b5430a3ced5fe5ba484bd9b3215b9ae19ced0160 (commit) via f378ab099d535f5540f292fed07fcf4b1fabd314 (commit) via 19fb31c0060f646a9f84be1a84ed1bea04e7ed57 (commit) via 580dfe9d4cb936535927fb954bdc96a2320c6244 (commit) via ae3b3f34ed96f121af37018b8ff3a78810881ad8 (commit) via ab12fca3906c9c76ec25a9de52f5142f5736413f (commit) via 13ace07792fa75aa276e2d7c3cb03cec117d63a4 (commit) via c56ccc05b2c98510f360d7f454f38169eb3bdb06 (commit) via 5b4a1ff337973732ff9a5ad9b1cb84d74a7e6185 (commit) via 90b4491842980d57a0e572167a168e04a476bca5 (commit) via b9c6833008dfb3c45354f4e810e631a77f3c9cb3 (commit) via 1b1810b5e01968cdfc16d537b4d5c27adab8a173 (commit) via 8c65b54f18c03ffb844e1cbaa3b46b43444ff9e7 (commit) via 10045478d984f9924cb945423388ba25b7dd3ffe (commit) via 940171d08654a9ff5bf9b8886f76e8189a02cf09 (commit) via 64984c22f7045d53590f816e7ba0b9b9fa1dbbe7 (commit) via 37cd38778dfb73d28e533fd1ddabb88b4b3a5771 (commit) via 8e2f54bcee7e3e8315d4a39a302eaf8e4389e07d (commit) via 08c3f6d234761d92b50d3c56d3cb4b82fdd58c77 (commit) via 8ffd39f2e42151b383616923ae922e697273ec8e (commit) via 4aeb0dfcc42acfc108d3f870384d1719adc9569b (commit) via eb8f2b9c44619eecdb3b77da01da910fcf05abed (commit) via 42bfe59e3a3fef26be6809168756f40740fac1d0 (commit) via b54b03bd874936ab3c91f23e5dff3a87153c4e36 (commit) via 8286623c113daf97a45cde5fc8ef9587b85c898b (commit) via a0f1b963327b9cc349a1e6b4c543a29fbee68fba (commit) via f158f208759703b94dbfc6de2222ae7740420faf (commit) via 521103fd00e593c08a6bedb619c5a9f8f7cc5a91 (commit) via 17b89b34b8d7a5a8b713c92a9ebe689c6edd6798 (commit) via 2b51eddc5503ea84d48c5b3b3ec3388eba440451 (commit) via 70c16c04ac76a90f18e920aaea1026bde90c493c (commit) via db6be0d5e31f11c10004f1f2ef2de05d213da1f4 (commit) via 8e86a419d7f8753f4e77cf23aa53bc02ac6febf1 (commit) via ca87ae741fe9c8aad9db1afbf109dc070d0168cf (commit) via 67aa8be4cb43cd94bc322fed8bdba48b3c8719c4 (commit) via ffc61c5de1a5a89e3e37fb9376725c32a839c34d (commit) via a09f2586017aeed82fa07c8bfea6c75859295bd9 (commit) via bfcfbe611b4d7e650236f8b8ba7d0706cfe6a0b7 (commit) via 6813cafe52236a95289accb138032c1d6dd3272e (commit) via 146c3d9d5993289ae0af7c1c872eebaa8662d2fc (commit) via b40889f2c860d768fa72662d8a3ce7e81ea79aac (commit) via 2153e1dc0512822ed070de220e33a1a03ea7a4eb (commit) via b057297ab63a9124aae1773566815cd8c4bde8e9 (commit) via 22e7d2933103f1384c1d54dff6188cd57cbe171a (commit) via 64aaf98419a0485fe3490dfb53417ac9958c7327 (commit) via b77b02a5ca5a021ee8b5e5453e8843447d1132b2 (commit) via e521e87e8514b9d3497208b70bcd067f132c58ed (commit) via d8e07dda92366be0f6fc2e7128620d3dd53494e3 (commit) via 8c8f9122ce6e6c00f72914479af57a7b87244554 (commit) via 68fce50f04f495980f4ea81746339a9de5b52ebb (commit) via 88954b49e47574cdd048a23ca391a85fb6f77f47 (commit) via e3ec9b69cde4e07d95eaadee75566fd4a8091df5 (commit) via cdd238daf949385bd6ef188e24b40d9fcb83a0e8 (commit) via 7a3929c417b1388c689a0cd6b0b2f6579d85ec78 (commit) from 0b088180e930a5337b7d01a67e08fe62c5fea441 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit b137841b37b6247aa63d8270e5820c8c605d9093 Author: Jan Kratochvil Date: Sun Jun 18 12:01:54 2017 +0200 DWARF-5: .debug_names index consumer Hi, it is not regression-free against no-index but it is regression-free against .gdb_index. That is because .gdb_index is not regression-free against no-index. Some testcases needed to be updated as they were missing .debug_aranges. While that does not matter for no-index (as GDB builds the mapping internally during dwarf2_build_psymtabs_hard) and neither for .gdb_index (as GDB uses that internally built mapping which it stores into .gdb_index) it does matter for .debug_names as that simply assumes existing .debug_aranges from GCC. I tried some performance checking but the index handling speed is negligible compared to the CU expansion associated with it. .debug_names looked even as a bit faster to me than .gdb_index which rather surprised me but I did not investigate it more. Jan gdb/ChangeLog 2017-05-26 Jan Kratochvil * defs.h (elf_sym_fns_debug_names): New declaration. * dwarf2read.c (mapped_debug_names): New. (struct dwarf2_per_objfile): Add debug_names, debug_aranges and debug_names_table. (dwarf2_elf_names): Add debug_names and debug_aranges. (struct dwz_file): Add debug_names. (dwarf2_locate_sections): Add debug_names and debug_aranges. (locate_dwz_sections): Add debug_names. (create_signatured_type_table_from_debug_names) (create_addrmap_from_aranges): New. (dwarf2_read_index): Update function comment. (read_debug_names_from_section, create_cus_from_debug_names_list) (create_cus_from_debug_names, dwarf2_read_debug_names): New. (dwarf5_djb_hash): Function renamed from DebugNamesNameTable::djb_hash. (dw2_debug_names_iterator): New. (read_indirect_string_at_offset): New declaration. (mapped_debug_names::namei_to_name) (dw2_debug_names_iterator::find_vec_in_debug_names) (dw2_debug_names_iterator::find_vec_in_debug_names) (dw2_debug_names_iterator::next, dw2_debug_names_lookup_symbol) (dw2_debug_names_dump, dw2_debug_names_expand_symtabs_for_function) (dw2_debug_names_expand_symtabs_matching, dwarf2_debug_names_functions): New. (dwarf2_initialize_objfile): Return also elf_sym_fns_debug_names. (dwarf2_free_objfile): Delete also debug_names_table; (debug_names::djb_hash): Rename it to dwarf5_djb_hash. (debug_names::build): Update djb_hash caller. * elfread.c (elf_sym_fns_debug_names): New. * psymtab.h (dwarf2_debug_names_functions): New declaration. * symfile.h (struct dwarf2_debug_sections): Add debug_names and debug_aranges. * xcoffread.c (dwarf2_xcoff_names): Add debug_names and debug_aranges. gdb/testsuite/ChangeLog 2017-05-26 Jan Kratochvil * gdb.base/maint.exp (check for .gdb_index): Check also for .debug_names. * gdb.dlang/watch-loc.c (.debug_aranges): New. * gdb.dwarf2/dw2-case-insensitive-debug.S: Likewise. * gdb.dwarf2/gdb-index.exp (check if index present, .gdb_index used) (.gdb_index used after symbol reloading): Support also .debug_names. * gdb.mi/dw2-ref-missing-frame-func.c (.debug_aranges): New. commit 5229437ae3de0f997b264835433697889d9c94b6 Author: Jan Kratochvil Date: Sun Jun 18 12:01:53 2017 +0200 Refactor: Move some generic code out of .gdb_index code Hi, just for the next patch. Jan gdb/ChangeLog 2017-05-26 Jan Kratochvil * dwarf2read.c (create_cu_from_index_list): New from ... (create_cus_from_index_list): ... this function, use it. (dw_expand_symtabs_matching_file_matcher) (dw2_expand_symtabs_matching_one): New from ... (dw2_expand_symtabs_matching): ... this function, use them. commit 14f14266282cc676c6424a78d8f84d82a8502773 Author: Jan Kratochvil Date: Sun Jun 18 12:01:53 2017 +0200 Code cleanup: dwarf2_initialize_objfile return value Hi, dwarf2_initialize_objfile was returning boolean whether it is psymtabs or .gdb_index while now it needs to return also whether it is .debug_names. Jan gdb/ChangeLog 2017-05-26 Jan Kratochvil * defs.h (elf_sym_fns_lazy_psyms, elf_sym_fns_gdb_index): Move here declarations from elfread.c. (dwarf2_initialize_objfile): Change return value. * elfread.c (elf_sym_fns_lazy_psyms, elf_sym_fns_gdb_index): Move these declarations to defs.h. (elf_symfile_read): Adjust dwarf2_initialize_objfile caller. * symfile.h (dwarf2_initialize_objfile): Change return type. commit 4be4f2b35cd1d2313268c1cb77687d4e1968c231 Author: Jan Kratochvil Date: Sun Jun 18 12:01:53 2017 +0200 DWARF-5: .debug_names index producer Hi, there are two FIXME lines I do not have a real answer for. Also I am not sure if the -dwarf-4 option for former .gdb_index should be named that way. And contrib/gdb-add-index.sh (incl. cc-with-tweaks.sh) has no commandline option for that -dwarf-4 GDB option. Jan gdb/ChangeLog 2017-05-26 Jan Kratochvil * contrib/gdb-add-index.sh (index): Rename to ... (index4): ... here. (index5, debugstr, debugstrmerge, debugstrerr): New variables. Support also .debug_names and .debug_str. * dwarf2read.c: Include cmath, locale, set, list. (INDEX_SUFFIX): Rename to ... (INDEX4_SUFFIX): ... here. (INDEX5_SUFFIX, DEBUG_STR_SUFFIX): New. (data_buf::append_unsigned_leb128, data_buf::empty) (data_buf::operator const char *, debug_names, check_dwarf64_offsets): New. (write_gdbindex): New from write_psymtabs_to_index code. (write_debug_names): New. (write_psymtabs_to_index): New parameter is_dwarf5. Support filename_str and out_file_str. Move code to write_gdbindex, possibly call write_debug_names. (save_gdb_index_command): New parameter -dwarf-4. (_initialize_dwarf2_read): Document the new parameter -dwarf-4. gdb/doc/ChangeLog 2017-05-26 Jan Kratochvil * gdb.texinfo (Index Files): Document .debug_names and -dwarf-4. (Index Section Format): Mention .debug_names. commit e39de6c1d1c9ede6e08c98e99e0db418a7ce974b Author: Jan Kratochvil Date: Sun Jun 18 12:01:53 2017 +0200 cc-with-tweaks.sh: Use gdb-add-index.sh Hi, currently contrib/cc-with-tweaks.sh is calling for its -i option objcopy itself instead of using contrib/gdb-add-index.sh which does the same. With DWARF-5 .debug_names the commands are more complicated (as now also .debug_str needs to be modified) and so I have decided to rather reuse contrib/gdb-add-index.sh instead of duplicating its code in contrib/cc-with-tweaks.sh. The problem is when no index is produced whether contrib/cc-with-tweaks.sh should fail or not. As originally contrib/cc-with-tweaks.sh was more quiet (=successful) than contrib/gdb-add-index.sh and so after this patch the testsuite runs with an index would "regress". I have tried to keep the behavior unchanged. Some cases still error with: Ada is not currently supported by the index But some cases (such as some trivial gdb.dwarf2/ testcases with no DWARF data to index) produce no index while the testcases still PASS now instead of: -PASS: gdb.arch/i386-bp_permanent.exp: stack pointer value matches +gdb compile failed, gdb-add-index.sh: No index was created for /quadgdb/testsuite.unix.-m64/outputs/gdb.arch/i386-bp_permanent/i386-bp_permanent +gdb-add-index.sh: [Was there no debuginfo? Was there already an index?] +UNTESTED: gdb.arch/i386-bp_permanent.exp: failed to compile Jan gdb/ChangeLog 2017-05-26 Jan Kratochvil * contrib/cc-with-tweaks.sh (t, GDB_ADD_INDEX): New variables. <$want_index>: Call $GDB_ADD_INDEX. commit 426b46fa0c561ae485b9b09c4972f269a0632103 Author: Jan Kratochvil Date: Sun Jun 18 12:01:52 2017 +0200 binutils commit 16c6cfce5fe4f039e3dfe7829bfe8686bd6d4f14 Author: Jan Kratochvil Date: Sun Jun 18 12:01:52 2017 +0200 gccidx commit bdd32e03c5e87bd38e63e9cc3fd35375241db58f Author: Alan Modra Date: Sun Jun 18 09:19:34 2017 +0930 is_underscore_target for ld-elf tests and correct targ_underscore in config.bfd bfd/ * config.bfd: Correct targ_underscore for epiphany, ip2k, m32c, mn10200, pru, rl78, rx, crisv32 and v850. ld/ * testsuite/lib/ld-lib.exp (is_underscore_target): New. * testsuite/ld-elf/elf.exp (ASFLAGS): Define UNDERSCORE. * testsuite/ld-elf/pr21562a.s: If UNDERSCORE defined, reference sym with prefix. * testsuite/ld-elf/pr21562b.s: Likewise. * testsuite/ld-elf/sizeof.s: Likewise. * testsuite/ld-elf/startof.s: Likewise. * testsuite/ld-elf/pr14156a.d: Adjust for extra symbols. * testsuite/ld-elf/pr21562a.d: Remove underscore target from xfails, and match prefixed symbol. * testsuite/ld-elf/pr21562b.d: Likewise. * testsuite/ld-elf/pr21562c.d: Likewise. * testsuite/ld-elf/pr21562d.d: Likewise. * testsuite/ld-elf/pr21562e.d: Likewise. * testsuite/ld-elf/pr21562f.d: Likewise. * testsuite/ld-elf/pr21562g.d: Likewise. * testsuite/ld-elf/pr21562h.d: Likewise. * testsuite/ld-elf/pr21562i.d: Likewise. * testsuite/ld-elf/pr21562j.d: Likewise. * testsuite/ld-elf/pr21562k.d: Likewise. * testsuite/ld-elf/pr21562l.d: Likewise. * testsuite/ld-elf/pr21562m.d: Likewise. * testsuite/ld-elf/pr21562n.d: Likewise. * testsuite/ld-elf/sizeofa.d: Likewise. * testsuite/ld-elf/sizeofb.d: Likewise. * testsuite/ld-elf/sizeofc.d: Likewise. * testsuite/ld-elf/startofa.d: Likewise. * testsuite/ld-elf/startofb.d: Likewise. * testsuite/ld-elf/startofc.d: Likewise. commit 99149362b110c0b243eecff05cdbda0d7260b412 Author: GDB Administrator Date: Sun Jun 18 00:00:37 2017 +0000 Automatic date update in version.in commit 1d4fbac99e05c2d2ea98984f9bc6f7d7f1a183b7 Author: Simon Marchi Date: Sat Jun 17 23:19:25 2017 +0200 Add ATTRIBUTE_PRINTF to trace_start_error clang complains that the fmt passed to vwarning in trace_start_error is not a literal. This looks like a fair warning, which can be removed by adding ATTRIBUTE_PRINTF to the declaration of trace_start_error. gdb/ChangeLog: * nat/fork-inferior.h (trace_start_error): Add ATTRIBUTE_PRINTF. commit ae3e2ccfe75e5c62749c15ead5c95e052aad21ca Author: Simon Marchi Date: Sat Jun 17 23:19:08 2017 +0200 linux-low: Remove usage of "register" keyword AFAIK, the register keyword is not relevant today, and clang complains about it: /home/emaisin/src/binutils-gdb/gdb/gdbserver/linux-low.c:5873:3: error: 'register' storage class specifier is deprecated and incompatible with C++1z [-Werror,-Wdeprecated-register] register PTRACE_XFER_TYPE *buffer; ^~~~~~~~~ I think we can safely remove it. gdb/gdbserver/ChangeLog: * linux-low.c (linux_read_memory, linux_write_memory): Remove usage of "register" keyword. commit 8465943af6a6f756c3d4b077eb1081ade927b26b Author: Simon Marchi Date: Sat Jun 17 23:18:49 2017 +0200 gdb: Add -Wno-mismatched-tags clang complains that for some types, we use both the class and struct keywords in different places. It's not really a problem, so I think we can safely turn this warning off. gdb/ChangeLog: * configure: Re-generate. * warning.m4 (build_warnings): Add -Wno-mismatched-tags. gdb/gdbserver/ChangeLog: * configure: Re-generate. commit 3e019bdc20eb81b91ab5bc774386201b874c0bac Author: Simon Marchi Date: Sat Jun 17 23:18:20 2017 +0200 gdb: Use -Werror when checking for (un)supported warning flags In warning.m4, we pass all the warning flags one by one to the compiler to test if they are supported by this particular compiler. If the compiler exits with an error, we conclude that this warning flag is not supported and exclude it. This allows us to use warning flags without having to worry about which versions of which compilers support each flag. clang, by default, only emits a warning if an unknown flag is passed: warning: unknown warning option '-Wfoo' [-Wunknown-warning-option] The result is that we think that all the warning flags we use are supported by clang (they are not), and the compilation fails later when building with -Werror, since the aforementioned warning becomes an error. The fix is to also pass -Werror when probing for supported flags, then we'll correctly get an error when using an unknown warning, and we'll exclude it: error: unknown warning option '-Wfoo' [-Werror,-Wunknown-warning-option] I am not sure why there is a change in a random comment in gdbserver/configure, but I suppose it's a leftfover from a previous patch, so I included it. gdb/ChangeLog: * configure: Re-generate. * warning.m4: Pass -Werror to compiler when checking for supported warning flags. gdb/gdbserver/ChangeLog: * configure: Re-generate. commit cf0dd6f02cd45d6dbb6bd87dde25dd3ed74eb7d0 Author: Simon Marchi Date: Sat Jun 17 23:17:00 2017 +0200 gdb: Pass -x c++ to the compiler Because we are compiling .c files containing C++ code, clang++ complains with: clang: error: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated If renaming all the source files to .cpp is out of the question, an alternative is to pass "-x c++" to convince the compiler that we are really compiling C++. It works fine with GCC too. gdb/ChangeLog: * Makefile.in (COMPILE.pre): Add "-x c++". gdb/gdbserver/ChangeLog: * Makefile.in (COMPILE.pre): Add "-x c++". commit 291e62953900e0f4998224127bc56239e421cda9 Author: GDB Administrator Date: Sat Jun 17 00:00:41 2017 +0000 Automatic date update in version.in commit 6f98355cda4ac718855d247fd942553b1706549b Author: Yao Qi Date: Fri Jun 16 15:38:42 2017 +0100 extract/store integer function template This patch converts functions extract_{unsigned,signed}_integer to a function template extract_integer, which has two instantiations. It also does the similar changes to store__{unsigned,signed}_integer, regcache::raw_read_{unsigned,signed}, regcache::raw_write_{unsigned,signed}, regcache::cooked_read_{unsigned,signed}, regcache::cooked_write_{unsigned,signed}. This patch was posted here https://sourceware.org/ml/gdb-patches/2017-05/msg00492.html but the problem was fixed in a different way. However, I think the patch is still useful to shorten the code. gdb: 2017-06-16 Alan Hayward Pedro Alves Yao Qi * defs.h (RequireLongest): New. (extract_integer): Declare function template. (extract_signed_integer): Remove the declaration, but define it static inline. (extract_unsigned_integer): Likewise. (store_integer): Declare function template. (store_signed_integer): Remove the declaration, but define it static inline. (store_unsigned_integer): Likewise. * findvar.c (extract_integer): New function template. (extract_signed_integer): Remove. (extract_unsigned_integer): Remove. (extract_integer, extract_integer): Explicit instantiations. (store_integer): New function template. (store_signed_integer): Remove. (store_unsigned_integer): Remove. (store_integer): Explicit instantiations. * regcache.c (regcache_raw_read_signed): Update. (regcache::raw_read): New function. (regcache::raw_read_signed): Remove. (regcache::raw_read_unsigned): Remove. (regcache_raw_read_unsigned): Update. (regcache_raw_write_unsigned): Update. (regcache::raw_write_signed): Remove. (regcache::raw_write): New function. (regcache_cooked_read_signed): Update. (regcache::raw_write_unsigned): Remove. (regcache::cooked_read_signed): Remove. (regcache_cooked_read_unsigned): Update. (regcache::cooked_read_unsigned): Remove. (regcache_cooked_write_signed): Update. (regcache_cooked_write_unsigned): Update. * regcache.h (regcache) : Remove. : Remove. : New. : Remove. : Remove. : New. * sh64-tdep.c (sh64_pseudo_register_read): Update. (sh64_pseudo_register_write): Update. commit e197589b72e7b7b2db95c63acd58abb574b4249c Author: Alan Modra Date: Fri Jun 16 21:50:43 2017 +0930 Regen rx-decode.c opcodes/ * rx-decode.c: Regenerate. commit 4b48e2f6a50e85e5acc316289c4a6af693ad98f0 Author: Nick Clifton Date: Fri Jun 16 15:16:19 2017 +0100 Fixing linking configure generated tests of ifunc support. * elflink.c (bfd_elf_size_dynsym_hash_dynstr): Do not fail if the bucketlist is empty because there are no symbols to add to the list. commit 7dba9362c172f1073487536eb137feb2da30b0ff Author: Alan Modra Date: Fri Jun 16 19:41:41 2017 +0930 Rewrite __start and __stop symbol handling This arranges for __start and __stop symbols to be defined before garbage collection, for all target formats. That should allow the COFF and PE --gc-sections to keep a singleton orphan input section, a feature lost by 2017-06-13 commit cbd0eecf26. The fancier ELF treatment of keeping all input sections associated with a __start or __stop symbol, from 2015-10-23 commit 1cce69b9dc, is retained. .startof. and .sizeof. symbols are deliberately not defined before garbage collection, so these won't affect garbage collection of sections. The patch also ensures __start, __stop, .startof. and .sizeof. symbols are defined before target size_dynamic_sections is called, albeit with a preliminary value, so that target code doesn't need to cope with a symbol changing from undefined at size_dynamic_sections to defined at relocate_section. Also, a number of problems with the testcases have been fixed. PR ld/20022 PR ld/21557 PR ld/21562 PR ld/21571 include/ * bfdlink.h (struct bfd_link_hash_entry): Delete undef.section. bfd/ * targets.c (struct bfd_target): Add _bfd_define_start_stop. (BFD_JUMP_TABLE_LINK): Likewise. * elf-bfd.h (bfd_elf_define_start_stop): Declare. * elflink.c (_bfd_elf_gc_mark_rsec): Update comment. (bfd_elf_define_start_stop): New function. * linker.c (bfd_generic_define_start_stop): New function. * coff64-rs6000.c (rs6000_xcoff64_vec, rs6000_xcoff64_aix_vec): Init new field. * aout-adobe.c (aout_32_bfd_define_start_stop): Define. * aout-target.h (MY_bfd_define_start_stop): Define. * aout-tic30.c (MY_bfd_define_start_stop): Define. * binary.c (binary_bfd_define_start_stop): Define. * bout.c (b_out_bfd_define_start_stop): Define. * coff-alpha.c (_bfd_ecoff_bfd_define_start_stop): Define. * coff-mips.c (_bfd_ecoff_bfd_define_start_stop): Define. * coff-rs6000.c (_bfd_xcoff_bfd_define_start_stop): Define. * coffcode.h (coff_bfd_define_start_stop): Define. * elfxx-target.h (bfd_elfNN_bfd_define_start_stop): Define. * i386msdos.c (msdos_bfd_define_start_stop): Define. * i386os9k.c (os9k_bfd_define_start_stop): Define. * ieee.c (ieee_bfd_define_start_stop): Define. * ihex.c (ihex_bfd_define_start_stop): Define. * libbfd-in.h (_bfd_nolink_bfd_define_start_stop): Define. * mach-o-target.c (bfd_mach_o_bfd_define_start_stop): Define. * mmo.c (mmo_bfd_define_start_stop): Define. * nlm-target.h (nlm_bfd_define_start_stop): Define. * oasys.c (oasys_bfd_define_start_stop): Define. * pef.c (bfd_pef_bfd_define_start_stop): Define. * plugin.c (bfd_plugin_bfd_define_start_stop): Define. * ppcboot.c (ppcboot_bfd_define_start_stop): Define. * som.c (som_bfd_define_start_stop): Define. * srec.c (srec_bfd_define_start_stop): Define. * tekhex.c (tekhex_bfd_define_start_stop): Define. * versados.c (versados_bfd_define_start_stop): Define. * vms-alpha.c (vms_bfd_define_start_stop): Define. (alpha_vms_bfd_define_start_stop): Define. * xsym.c (bfd_sym_bfd_define_start_stop): Define. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. ld/ * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Don't set __start/__stop syms here. * ldlang.c (lang_set_startof): Delete. (start_stop_syms, start_stop_count, start_stop_alloc): New vars. (lang_define_start_stop, lang_init_start_stop, foreach_start_stop, undef_start_stop, lang_undef_start_stop, lang_init_startof_sizeof, set_start_stop, lang_finalize_start_stop): New functions. (lang_process): Call _start_stop functions. * testsuite/ld-elf/pr21562a.d: Use xfail rather than notarget. Correct typos and list of xfail targets. * testsuite/ld-elf/pr21562b.d: Likewise. * testsuite/ld-elf/pr21562c.d: Likewise. * testsuite/ld-elf/pr21562d.d: Likewise. * testsuite/ld-elf/pr21562e.d: Likewise. * testsuite/ld-elf/pr21562f.d: Likewise. * testsuite/ld-elf/pr21562g.d: Likewise. * testsuite/ld-elf/pr21562h.d: Likewise. * testsuite/ld-elf/pr21562i.d: Likewise. * testsuite/ld-elf/pr21562j.d: Likewise. * testsuite/ld-elf/pr21562k.d: Likewise. * testsuite/ld-elf/pr21562l.d: Likewise. * testsuite/ld-elf/pr21562m.d: Likewise. * testsuite/ld-elf/pr21562n.d: Likewise. * testsuite/ld-elf/sizeofa.d: Likewise. Adjust to pass for generic ELF. * testsuite/ld-elf/sizeofb.d: Likewise. * testsuite/ld-elf/startofa.d: Likewise. * testsuite/ld-elf/startofb.d: Likewise. commit d68f19767dfbb33c1813563d5a4af0731a1855c5 Author: Jiong Wang Date: Fri Jun 16 14:20:38 2017 +0100 [AArch64] Use SYMBOL_REFERENCES_LOCAL in one symbol check For some pc-relative relocations we want to allow them under PIC mode while a normal global symbol defined in the same dynamic object can still bind externally through copy relocation. So, we should not allow pc-relative relocation against such symbol. SYMBOL_REFERENCES_LOCAL should be used and is more accurate than the original individual checks. bfd/ * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use SYMBOL_REFERENCES_LOCAL. ld/ * testsuite/ld-aarch64/aarch64-elf.exp: Update test name * testsuite/ld-aarch64/pcrel.s: Add new testcases. * testsuite/ld-aarch64/pcrel_pic_undefined.d: Update the expected warnings. * testsuite/ld-aarch64/pcrel_pic_defined_local.d: Rename ... * testsuite/ld-aarch64/pcrel_pic_defined.d: ... to this. Update expected warnings. commit a87dc45adc983a8e6ec3db8d18cd31c35abd2048 Author: Anton Kolesov Date: Fri Feb 10 14:11:55 2017 +0300 arc: Select CPU model properly before disassembling Enforce CPU model for disassembler via its options, if it was specified in XML target description, otherwise use default method of determining CPU implemented in disassembler - scanning ELF private header. The latter requires disassemble_info->section to be properly initialized. To make sure that info->section is set in all cases this patch partially reverts [1] for ARC: it reinstates arc_delayed_print_insn as a "print_insn" function for ARC, but now this function only sets disassemble_info->section and then calls default_print_insn to do the rest of the job. Support for CPU in disassembler options for ARC has been added in [2]. [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=39503f82427e22ed8e04d986ccdc8562091ec62e [2] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=10045478d984f9924cb945423388ba25b7dd3ffe gdb/ChangeLog: yyyy-mm-dd Anton Kolesov * arc-tdep.c (arc_disassembler_options): New variable. (arc_gdbarch_init): Set and use it. Use arc_delayed_print_insn instead of default_print_insn. (arc_delayed_print_insn): Set info->section when needed, use default_print_insn to retrieve a disassembler. commit c092b67bf0adb0fc1e179612b161e19938929e66 Author: Eric Christopher Date: Thu Jun 15 18:46:17 2017 -0700 2017-06-15 Eric Christopher * aarch64.cc: Fix a few typos and grammar-os. commit 00fd923b247530bd30f695b5bd899467536ad4f8 Author: GDB Administrator Date: Fri Jun 16 00:00:27 2017 +0000 Automatic date update in version.in commit 75e06f9753af16bd8a4d864431ceb1a4cdd13f58 Author: H.J. Lu Date: Thu Jun 15 12:30:53 2017 -0700 Correct "ld --help" to display "-z stack-size=SIZE" ELF Linker command line option to set stack size is "-z stack-size=SIZE", not "-z stacksize=SIZE". * exsup.c (elf_shlib_list_options): Display "-z stack-size=SIZE" instead of "-z stacksize=SIZE". commit 6353d82b8fa825c2143f41e84b0d5d4446c6e99a Author: Jiong Wang Date: Thu Jun 15 16:51:01 2017 +0100 [AArch64] Allow COPY relocation elimination As discussed at the PR, this patch tries to avoid COPY relocation generation and propagate the original relocation into runtime if it was relocating on writable section. The ELIMINATE_COPY_RELOCS has been set to true and it's underlying infrastructure has been improved so that the COPY reloc elimination at least working on absoluate relocations (ABS64) on AArch64. BFD linker copy relocation elimination framwork requires the backend to always allocate dynrelocs for all those relocation types that are possible to introduce copy relocations. This is for adjust_dynamic_symbol hook to be able to get all symbol reference information. Should one symbol is referenced by more than one relocations, if there is any of them needs copy relocation then linker should generate it. bfd/ PR ld/21532 * elfnn-aarch64.c (ELIMINATE_COPY_RELOCS): Set to 1. (elfNN_aarch64_final_link_relocate): Also propagate relocations to runtime for if there needs copy relocation elimination. (need_copy_relocation_p): New function. Return true for symbol with pc-relative references and if it's against read-only sections. (elfNN_aarch64_adjust_dynamic_symbol): Use need_copy_relocation_p. (elfNN_aarch64_check_relocs): Allocate dynrelocs for relocation types that are related with accessing external objects. (elfNN_aarch64_gc_sweep_hook): Sync the relocation types with the change in elfNN_aarch64_check_relocs. ld/ * testsuite/ld-aarch64/copy-reloc-exe-2.s: New test source file. * testsuite/ld-aarch64/copy-reloc-2.d: New test. * testsuite/ld-aarch64/copy-reloc-exe-eliminate.s: New test source file. * testsuite/ld-aarch64/copy-reloc-eliminate.d: New test. * testsuite/ld-aarch64/copy-reloc-so.s: Define new global objects. * testsuite/ld-aarch64/aarch64-elf.exp: Run new tests. commit 8cac017d35ef374e65acc98818a17cf8a652cbd0 Author: H.J. Lu Date: Thu Jun 15 08:21:48 2017 -0700 i386-dis: Add 2 tests with invalid bnd register PR binutils/21594 * testsuite/gas/i386/mpx.s: Add 2 tests with invalid bnd register. * testsuite/gas/i386/x86-64-mpx.s: Likewise. * testsuite/gas/i386/mpx.d: Updated. * testsuite/gas/i386/x86-64-mpx.d: Likewise. commit 0d96e4df4812c3bad77c229dfef47a9bc115ac12 Author: H.J. Lu Date: Thu Jun 15 06:40:17 2017 -0700 i386-dis: Check valid bnd register Since there are only 4 bnd registers, return "(bad)" for register number > 3. PR binutils/21594 * i386-dis.c (OP_E_register): Check valid bnd register. (OP_G): Likewise. commit cd3ea7c69acc5045eb28f9bf80d923116e15e4f5 Author: Nick Clifton Date: Thu Jun 15 13:26:54 2017 +0100 Prevent address violation problem when disassembling corrupt aarch64 binary. PR binutils/21595 * aarch64-dis.c (aarch64_ext_ldst_reglist): Check for an out of range value. commit 62b76e4b6e0b4cb5b3e0053d1de4097b32577049 Author: Nick Clifton Date: Thu Jun 15 13:08:47 2017 +0100 Fix address violation parsing a corrupt ieee binary. PR binutils/21581 (ieee_archive_p): Use a static buffer to avoid compiler bugs. commit 63634bb4a107877dd08b6282e28e11cfd1a1649e Author: Nick Clifton Date: Thu Jun 15 12:44:23 2017 +0100 Avoid a possible compiler bug by using a static buffer instead of a stack local buffer. PR binutils/21582 * ieee.c (ieee_object_p): Use a static buffer to avoid compiler bugs. commit 63323b5b23bd83fa7b04ea00dff593c933e9b0e3 Author: Nick Clifton Date: Thu Jun 15 12:37:01 2017 +0100 Fix address violation when disassembling a corrupt RL78 binary. PR binutils/21588 * rl78-decode.opc (OP_BUF_LEN): Define. (GETBYTE): Check for the index exceeding OP_BUF_LEN. (rl78_decode_opcode): Use OP_BUF_LEN as the length of the op_buf array. * rl78-decode.c: Regenerate. commit 76800cba595efc3fe95a446c2d664e42ae4ee869 Author: Nick Clifton Date: Thu Jun 15 12:08:57 2017 +0100 Handle EITR records in VMS Alpha binaries with overlarge command length parameters. PR binutils/21579 * vms-alpha.c (_bfd_vms_slurp_etir): Extend check of cmd_length. commit 08c7881b814c546efc3996fd1decdf0877f7a779 Author: Nick Clifton Date: Thu Jun 15 11:52:02 2017 +0100 Prevent invalid array accesses when disassembling a corrupt bfin binary. PR binutils/21586 * bfin-dis.c (gregs): Clip index to prevent overflow. (regs): Likewise. (regs_lo): Likewise. (regs_hi): Likewise. commit 37de058ab2e9619fbb6dea52ec2773a5d65619c4 Author: Jiong Wang Date: Thu Jun 15 10:35:28 2017 +0100 [GOLD] Don't install branch-to-stub for TLS relaxed ERRATUM 843419 sequences on AArch64 TLS relaxation may change erratum 843419 sequences that those offending ADRP instructions actually transformed into other instructions in which case there is erratum 843419 risk anymore that we should avoid installing unnecessary branch-to-stub. gold/ * aarch64.cc (Insn_utilities::is_mrs_tpidr_el0): New method. (AArch64_relobj::try_fix_erratum_843419_optimized): Return ture for some TLS relaxed sequences. commit 45159d6ad394fe7db840b2b92eaa69508b8a8fe7 Author: Sergio Durigan Junior Date: Wed Jun 14 16:45:20 2017 -0400 PR gdb/21574: Mention $SHELL and startup-with-shell on "help run" This simple patch updates the documentation of "help run" in order to mention that the shell used to start the inferior comes from the $SHELL environment variable. It also mentions that this behaviour can be disabled by using the "set startup-with-shell off" command. gdb/ChangeLog: 2017-06-14 Sergio Durigan Junior PR gdb/21574 * infcmd.c (_initialize_infcmd): Expand "help run" documentation to mention $SHELL and startup-with-shell. commit 6e89f899896fd596527d24de6a8a98bc633805fb Author: GDB Administrator Date: Thu Jun 15 00:00:48 2017 +0000 Automatic date update in version.in commit f7e16c2a9cc405707e646e951397938d2b4eea48 Author: Max Filippov Date: Wed May 17 02:09:14 2017 -0700 xtensa: don't expect XCHAL_* macros to be constant Get rid of the assumption that XCHAL_* macros are preprocessor constants: don't use them in preprocessor conditionals or in static variable initializers. 2017-06-14 Max Filippov bfd/ * elf32-xtensa.c (elf_xtensa_be_plt_entry, elf_xtensa_le_plt_entry): Add dimension for the ABI to arrays, keep both windowed and call0 ABI PLT definitions. (elf_xtensa_create_plt_entry): Use selected ABI to choose upper elf_xtensa_*_plt_entry endex. (ELF_MAXPAGESIZE): Fix at minimal supported MMU page size. gas/ * config/tc-xtensa.c (density_supported, xtensa_fetch_width, absolute_literals_supported): Leave definitions uninitialized. (directive_state): Leave entries for directive_density and directive_absolute_literals initialized to false. (xg_init_global_config, xtensa_init): New functions. * config/tc-xtensa.h (TARGET_BYTES_BIG_ENDIAN): Define as 0. (HOST_SPECIAL_INIT): New definition. (xtensa_init): New declaration. commit b46c4cf0908b05ab493d4f30e9a52a887ee118fd Author: Max Filippov Date: Tue Jun 13 10:26:55 2017 -0700 Maxim Grigoriev stepping down as Xtensa maintainer gdb/ 2017-06-14 Max Filippov * MAINTAINERS: Move Maxim Grigoriev to the Past Maintainers. commit e64519d1ed7fd8f990f05a5562d5b5c0c44b7d7e Author: Nick Clifton Date: Wed Jun 14 17:10:28 2017 +0100 Fix seg-fault when trying to disassemble a corrupt score binary. PR binutils/21576 * score7-dis.c (score_opcodes): Add sentinel. commit f461bbd847f15657f3dd2f317c30c75a7520da1f Author: Nick Clifton Date: Wed Jun 14 17:01:54 2017 +0100 Fix address violation bug when disassembling a corrupt SH binary. PR binutils/21578 * elf32-sh.c (sh_elf_set_mach_from_flags): Fix check for invalid flag value. commit ae87f7e73eba29bd38b3a9684a10b948ed715612 Author: Nick Clifton Date: Wed Jun 14 16:50:03 2017 +0100 Fix address violation when disassembling a corrupt binary. PR binutils/21580 binutils * objdump.c (disassemble_bytes): Check for buffer overrun when printing out rae insns. ld * testsuite/ld-nds32/diff.d: Adjust expected output. commit 6394c606997f88acfc80de4dff33a4ae2de987b4 Author: Yao Qi Date: Wed Jun 14 16:28:30 2017 +0100 Don't use print_insn_XXX in GDB This is a follow-up to [PATCH 0/6] Unify the disassembler selection in gdb and objdump https://sourceware.org/ml/binutils/2017-05/msg00192.html that is, opcodes is able to select the right disassembler, so gdb doesn't have to select them. Instead, gdb can just use default_print_insn. As a result, these print_insn_XXX are not used out of opcodes, so this patch also moves their declarations from include/dis-asm.h to opcodes/disassemble.h. With this change, GDB doesn't use any print_insn_XXX directly any more. gdb: 2017-06-14 Yao Qi * aarch64-tdep.c (aarch64_gdb_print_insn): Call default_print_insn instead of print_insn_aarch64. * arm-tdep.c (gdb_print_insn_arm): Call default_print_insn instead of print_insn_big_arm and print_insn_little_arm. * i386-tdep.c (i386_print_insn): Call default_print_insn instead of print_insn_i386. * ia64-tdep.c (ia64_print_insn): Call default_print_insn instead of print_insn_ia64. * mips-tdep.c (gdb_print_insn_mips): Call default_print_insn instead of print_insn_big_mips and print_insn_little_mips. * spu-tdep.c (gdb_print_insn_spu): Call default_print_insn instead of print_insn_spu. include: 2017-06-14 Yao Qi * dis-asm.h (print_insn_aarch64): Move it to opcodes/disassemble.h. (print_insn_big_arm, print_insn_big_mips): Likewise. (print_insn_i386, print_insn_ia64): Likewise. (print_insn_little_arm, print_insn_little_mips): Likewise. (print_insn_spu): Likewise. opcodes: 2017-06-14 Yao Qi * aarch64-dis.c: Include disassemble.h instead of dis-asm.h. * arm-dis.c: Likewise. * ia64-dis.c: Likewise. * mips-dis.c: Likewise. * spu-dis.c: Likewise. * disassemble.h (print_insn_aarch64): New declaration, moved from include/dis-asm.h. (print_insn_big_arm, print_insn_big_mips): Likewise. (print_insn_i386, print_insn_ia64): Likewise. (print_insn_little_arm, print_insn_little_mips): Likewise. commit 99031bafd6e81a41553803886c6b245cb0ab89d9 Author: H.J. Lu Date: Wed Jun 14 06:11:48 2017 -0700 xfail pr20022.d on targets without dynamic relocs in .text ld-gc/pr20022.d requires support for dynamic relocations in .text section. PR ld/20022 * testsuite/ld-gc/pr20022.d: Skip on targets without dynamic relocations in .text section. commit 8eca1095d96c215409371c5687573aac89a0a980 Author: H.J. Lu Date: Wed Jun 14 04:36:17 2017 -0700 Skip PR ld/21562 tests on targets with leading char or without --gc-sections Symbol lookup in linker will always fail on targets with leading char in symbol name since __start_SECNAME and __stop_SECNAME in C may be ___start_SECNAME and ___stop_SECNAME in assembly. Also tests with --gc-sections always fails on targets without --gc-sections support. * testsuite/ld-elf/pr21562a.d: Skip on targets with leading char in in symbol name or without --gc-sections. * testsuite/ld-elf/pr21562b.d: Likewise. * testsuite/ld-elf/pr21562c.d: Likewise. * testsuite/ld-elf/pr21562d.d: Likewise. * testsuite/ld-elf/pr21562i.d: Likewise. * testsuite/ld-elf/pr21562j.d: Likewise. * testsuite/ld-elf/pr21562k.d: Likewise. * testsuite/ld-elf/pr21562l.d: Likewise. * testsuite/ld-elf/pr21562m.d: Likewise. * testsuite/ld-elf/pr21562n.d: Likewise. * testsuite/ld-elf/pr21562e.d: Skip on targets with leading char in symbol name. * testsuite/ld-elf/pr21562f.d: Likewise. * testsuite/ld-elf/pr21562g.d: Likewise. * testsuite/ld-elf/pr21562h.d: Likewise. commit f78d1b3ae1cee2bc1a2be4b3c30df9627e13fdc1 Author: H.J. Lu Date: Wed Jun 14 05:51:59 2017 -0700 Add size to bar in ld-gc/pr20022a.s Some linker backends require size info on dynamic symbols. * testsuite/ld-gc/pr20022a.s: Add size to bar. commit b6947a7f08011375120186688bf2efd866f7d148 Author: H.J. Lu Date: Wed Jun 14 05:49:02 2017 -0700 Skip sizeof/startof tests on targets with leading char Symbol lookup in linker will always fail on targets with leading char in symbol name since __start_SECNAME and __stop_SECNAME in C may be ___start_SECNAME and ___stop_SECNAME in assembly. * testsuite/ld-elf/sizeofa.d: Skip on targets with leading char in symbol name. * testsuite/ld-elf/sizeofb.d: Likewise. * testsuite/ld-elf/startofa.d: Likewise. * testsuite/ld-elf/startofb.d: Likewise. commit db5fa770268baf8cc82cf9b141d69799fd485fe2 Author: Nick Clifton Date: Wed Jun 14 13:35:06 2017 +0100 Fix address violation problems when disassembling a corrupt RX binary. PR binutils/21587 * rx-decode.opc: Include libiberty.h (GET_SCALE): New macro - validates access to SCALE array. (GET_PSCALE): New macro - validates access to PSCALE array. (DIs, SIs, S2Is, rx_disp): Use new macros. * rx-decode.c: Regenerate. commit 5524b5250e319f41933605420e9526fb74cfb9ae Author: Andreas Arnez Date: Wed Jun 14 14:24:03 2017 +0200 Fix register selection in var-access.exp The new test var-access.exp causes FAILs on i686. This is because the test chooses the wrong name for DWARF register number 1: It uses "edx" (which corresponds to DWARF register number 2), but should have used "ecx" instead. Also, the current logic in var-access.exp does not correctly distinguish between a 64-bit and a 32-bit program on an x86-64 target. It uses the 64-bit register names for both. These problems are fixed. In order to address the latter, the convenience macros is_*_target are exploited where appropriate. gdb/testsuite/ChangeLog: * gdb.dwarf2/var-access.exp: Use register name ecx instead of edx on 32-bit x86 targets. Exploit is_*_target macros where appropriate. commit 4c0b797e0d2005780d8f0300f0ccc14b9d7c13b5 Author: Georg-Johann Lay Date: Wed Jun 14 12:23:39 2017 +0100 Move location of .jumptables section and add .hightext section to AVR linker script. PR ld/21583 * scripttempl/avr.sc (.jumptables): Move down in text section. (.hightext): New in text. commit c53d2e6d744da000aaafe0237bced090aab62818 Author: Nick Clifton Date: Wed Jun 14 11:27:15 2017 +0100 Fix potential address violations when processing a corrupt Alpha VMA binary. PR binutils/21589 * vms-alpha.c (_bfd_vms_get_value): Add an extra parameter - the maximum value for the ascic pointer. Check that name processing does not read beyond this value. (_bfd_vms_slurp_etir): Add checks for attempts to read beyond the end of etir record. commit d5722aa2fe9e1d76d98865a9ab77a7b9388743c9 Author: Pedro Alves Date: Wed Jun 14 11:08:52 2017 +0100 Introduce gdb::byte_vector, add allocator that default-initializes In some cases we've been replacing heap-allocated gdb_byte buffers managed with xmalloc/make_cleanup(xfree) with gdb::vector. That usually pessimizes the code a little bit because std::vector value-initializes elements (which for gdb_byte means zero-initialization), while if you're creating a temporary buffer, you're most certaintly going to fill it in with some data. An alternative is to use unique_ptr buf (new gdb_byte[size]); but it looks like that's not very popular. Recently, a use of obstacks in dwarf2read.c was replaced with std::vector and that as well introduced a pessimization for always memsetting the buffer when it's garanteed that the zeros will be overwritten immediately. (see dwarf2read.c change in this patch to find it.) So here's a different take at addressing this issue "by design": #1 - Introduce default_init_allocator I.e., a custom allocator that does default construction using default initialization, meaning, no more zero initialization. That's the default_init_allocation class added in this patch. See "Notes" at . #2 - Introduce def_vector I.e., a convenience typedef, because typing the allocator is annoying: using def_vector = std::vector>; #3 - Introduce byte_vector Because gdb_byte vectors will be the common thing, add a convenience "byte_vector" typedef: using byte_vector = def_vector; which is really the same as: std::vector>; The intent then is to make "gdb::byte_vector" be the go-to for dynamic byte buffers. So the less friction, the better. #4 - Adjust current code to use it. To set the example going forward. Replace std::vector uses and also unique_ptr uses. One nice thing is that with this allocator, for changes like these: -std::unique_ptr buf (new gdb_byte[some_size]); +gdb::byte_vector buf (some_size); fill_with_data (buf.data (), buf.size ()); the generated code is the same as before. I.e., the compiler de-structures the vector and gets rid of the unused "reserved vs size" related fields. The other nice thing is that it's easier to write gdb::byte_vector buf (size); than std::unique_ptr buf (new gdb_byte[size]); or even (C++14): auto buf = std::make_unique (size); // zero-initializes... #5 - Suggest s/std::vector/gdb::byte_vector/ going forward. Note that this commit actually fixes a couple of bugs where the current code is incorrectly using "std::vector::reserve(new_size)" and then accessing the vector's internal buffer beyond the vector's size: see dwarf2loc.c and charset.c. That's undefined behavior and may trigger debug mode assertion failures. With default_init_allocator, "resize()" behaves like "reserve()" performance wise, in that it leaves new elements with unspecified values, but, it does that safely without triggering undefined behavior when you access those values. gdb/ChangeLog: 2017-06-14 Pedro Alves * ada-lang.c: Include "common/byte-vector.h". (ada_value_primitive_packed_val): Use gdb::byte_vector. * charset.c (wchar_iterator::iterate): Resize the vector instead of reserving it. * common/byte-vector.h: Include "common/def-vector.h". (wchar_iterator::m_out): Now a gdb::def_vector. * cli/cli-dump.c: Include "common/byte-vector.h". (dump_memory_to_file, restore_binary_file): Use gdb::byte_vector. * common/byte-vector.h: New file. * common/def-vector.h: New file. * common/default-init-alloc.h: New file. * dwarf2loc.c: Include "common/byte-vector.h". (rw_pieced_value): Use gdb::byte_vector, and resize the vector instead of reserving it. * dwarf2read.c: Include "common/byte-vector.h". (data_buf::m_vec): Now a gdb::byte_vector. * gdb_regex.c: Include "common/def-vector.h". (compiled_regex::compiled_regex): Use gdb::def_vector. * mi/mi-main.c: Include "common/byte-vector.h". (mi_cmd_data_read_memory): Use gdb::byte_vector. * printcmd.c: Include "common/byte-vector.h". (print_scalar_formatted): Use gdb::byte_vector. * valprint.c: Include "common/byte-vector.h". (maybe_negate_by_bytes, print_decimal_chars): Use gdb::byte_vector. commit 05c966f3c98d6126404f1cd7f233148a89810b5d Author: Andre Vieira Date: Wed Jun 14 10:52:40 2017 +0100 [opcodes][arm] Remove bogus entry added by accident in former patch 2017-07-14 Andre Vieira * arm-dis.c (print_insn_arm): Remove bogus entry for bx. commit 04f963fd489cae724a60140e13984415c205f4ac Author: Nick Clifton Date: Wed Jun 14 10:35:16 2017 +0100 Fix seg-faults in objdump when disassembling a corrupt versados binary. PR binutils/21591 * versados.c (versados_mkobject): Zero the allocated tdata structure. (process_otr): Check for an invalid offset in the otr structure. commit 319c2dbe240a797c6f9436bfd64f5c16045ad5a1 Author: Sebastian Huber Date: Tue Jun 13 07:48:40 2017 +0200 Accept more epiphany targets In particular this adds support for the epiphany-rtems target. bfd/ * config.bfd (epiphany-*-elf): Accept epiphany-*-*. ld/ * configure.tgt (epiphany-*-elf): Accept epiphany-*-*. commit f9a36b297d470a72ead64ed07cd5f313d9d7a502 Author: GDB Administrator Date: Wed Jun 14 00:00:25 2017 +0000 Automatic date update in version.in commit b27685f2016c510d03ac9a64f7b04ce8efcf95c4 Author: H.J. Lu Date: Tue Jun 13 13:04:56 2017 -0700 ld: Don't define __start_SECNAME/__stop_SECNAME for -r __start_SECNAME and __stop_SECNAME shouldn't be defined for "ld -r". * ldlang.c (lang_set_startof): Skip if config.build_constructors is FALSE. * testsuite/ld-elf/sizeofc.d: New file. * testsuite/ld-elf/startofc.d: Likewise. commit 01ec7a272201de84be1ca2c557e58d97891f288c Author: Simon Marchi Date: Tue Jun 13 21:14:50 2017 +0200 darwin-nat: Add missing include I forgot this one, which is kind of related. The function trace_start_error_with_name has moved in commit "Share fork_inferior et al with gdbserver", so this additional include is needed. Fixes: darwin-nat.c:1735:5: error: use of undeclared identifier 'trace_start_error_with_name' trace_start_error_with_name ("close"); gdb/ChangeLog: * darwin-nat.c: Include "nat/fork-inferior.h". commit 848d907446d738604d11ab4061f3b0a8b23d4504 Author: Simon Marchi Date: Tue Jun 13 21:14:35 2017 +0200 darwin: Add fork-inferior.o to NATDEPFILES I happened to be build-testing on macOS and found this: Undefined symbols for architecture x86_64: "fork_inferior(char const*, std::__1::basic_string, std::__1::allocator > const&, char**, void (*)(), void (*)(int), void (*)(), char const*, void (*)(char const*, char* const*, char* const*))", referenced from: darwin_create_inferior(target_ops*, char const*, std::__1::basic_string, std::__1::allocator > const&, char**, int) in darwin-nat.o "startup_inferior(int, int, target_waitstatus*, ptid_t*)", referenced from: gdb_startup_inferior(int, int) in fork-child.o "trace_start_error(char const*, ...)", referenced from: darwin_ptrace_me() in darwin-nat.o "trace_start_error_with_name(char const*)", referenced from: darwin_ptrace_me() in darwin-nat.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) Adding fork-inferior.o fixes it. I factored out the Darwin bits that are no architecture-specific in the section meant for that at the top. I only built-tested this using Travis-CI, since I don't have access to this platform. gdb/ChangeLog: * configure.nat: Factor out Darwin bits that are not architecture-specific. Add fork-inferior.o. commit 3b912944f4257dd935c91b77a51bc2e4baa1018e Author: Simon Marchi Date: Tue Jun 13 21:14:25 2017 +0200 aix: Add fork-inferior.o to NATDEPFILES Trying to build on AIX gives: ld: 0711-317 ERROR: Undefined symbol: .trace_start_error_with_name(char const*) ld: 0711-317 ERROR: Undefined symbol: .fork_inferior(char const*, std::basic_string, std::allocator > const&, char**, void (*)(), void (*)(int), void (*)(), char const*, void (*)(char const*, char* const*, char* const*)) ld: 0711-317 ERROR: Undefined symbol: .startup_inferior(int, int, target_waitstatus*, ptid_t*) Including fork-inferior.o in the build should help. I also factored out the AIX bits that are not architecture-specific to be consistent with the other OSes. gdb/ChangeLog: * configure.nat: Factor out AIX bits that are not architecture-specific. Add fork-inferior.o. commit da614360f520b84a9c87506eb0c880f7a056468b Author: H.J. Lu Date: Tue Jun 13 12:03:40 2017 -0700 ld: Add tests for .startof.SECNAME/.sizeof.SECNAME * testsuite/ld-elf/sizeof.d: Renamed to ... * testsuite/ld-elf/sizeofa.d: This. Updated. * testsuite/ld-elf/startof.d: Renamed to ... * testsuite/ld-elf/startofa.d: This. Updated. * testsuite/ld-elf/sizeofb.d: New file. * testsuite/ld-elf/startofb.d: Likewise. commit cbd0eecf261c2447781f8c89b0d955ee66fae7e9 Author: H.J. Lu Date: Tue Jun 13 08:53:22 2017 -0700 Always define referenced __start_SECNAME/__stop_SECNAME Currently, linker will define __start_SECNAME and __stop_SECNAME symbols only for orphaned sections. However, during garbage collection, ELF linker marks all sections with references to __start_SECNAME and __stop_SECNAME symbols as used even when section SECNAME isn't an orphaned section and linker won't define __start_SECNAME nor __stop_SECNAME. And ELF linker stores the first input section whose name matches __start_SECNAME or __stop_SECNAME in u.undef.section for garbage collection. If these symbols are provided in linker script, u.undef.section is set to the section where they will defined by linker script, which leads to the incorrect output. This patch changes linker to always define referenced __start_SECNAME and __stop_SECNAME if the input section name is the same as the output section name, which is always true for orphaned sections, and SECNAME is a C identifier. Also __start_SECNAME and __stop_SECNAME symbols are marked as hidden by ELF linker so that __start_SECNAME and __stop_SECNAME symbols for section SECNAME in different modules are unique. For garbage collection, ELF linker stores the first matched input section in the unused vtable field. bfd/ PR ld/20022 PR ld/21557 PR ld/21562 PR ld/21571 * elf-bfd.h (elf_link_hash_entry): Add start_stop. Change the vtable field to a union. (_bfd_elf_is_start_stop): Removed. * elf32-i386.c (elf_i386_convert_load_reloc): Also check for __start_SECNAME and __stop_SECNAME symbols. * elf64-x86-64.c (elf_x86_64_convert_load_reloc): Likewise. * elflink.c (_bfd_elf_is_start_stop): Removed. (_bfd_elf_gc_mark_rsec): Check start_stop instead of calling _bfd_elf_is_start_stop. (elf_gc_propagate_vtable_entries_used): Skip __start_SECNAME and __stop_SECNAME symbols. Updated. (elf_gc_smash_unused_vtentry_relocs): Likewise. (bfd_elf_gc_record_vtinherit): Likewise. (bfd_elf_gc_record_vtentry): Likewise. ld/ PR ld/20022 PR ld/21557 PR ld/21562 PR ld/21571 * ld.texinfo: Update __start_SECNAME/__stop_SECNAME symbols. * ldlang.c (lang_insert_orphan): Move handling of __start_SECNAME and __stop_SECNAME symbols to ... (lang_set_startof): Here. Also define __start_SECNAME and __stop_SECNAME for -Ur. * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Mark referenced __start_SECNAME and __stop_SECNAME symbols as hidden and set start_stop for garbage collection. * testsuite/ld-elf/pr21562a.d: New file. * testsuite/ld-elf/pr21562a.s: Likewise. * testsuite/ld-elf/pr21562a.t: Likewise. * testsuite/ld-elf/pr21562b.d: Likewise. * testsuite/ld-elf/pr21562b.s: Likewise. * testsuite/ld-elf/pr21562b.t: Likewise. * testsuite/ld-elf/pr21562c.d: Likewise. * testsuite/ld-elf/pr21562c.t: Likewise. * testsuite/ld-elf/pr21562d.d: Likewise. * testsuite/ld-elf/pr21562d.t: Likewise. * testsuite/ld-elf/pr21562e.d: Likewise. * testsuite/ld-elf/pr21562f.d: Likewise. * testsuite/ld-elf/pr21562g.d: Likewise. * testsuite/ld-elf/pr21562h.d: Likewise. * testsuite/ld-elf/pr21562i.d: Likewise. * testsuite/ld-elf/pr21562j.d: Likewise. * testsuite/ld-elf/pr21562k.d: Likewise. * testsuite/ld-elf/pr21562l.d: Likewise. * testsuite/ld-elf/pr21562m.d: Likewise. * testsuite/ld-elf/pr21562n.d: Likewise. * testsuite/ld-gc/pr20022.d: Likewise. * testsuite/ld-gc/pr20022a.s: Likewise. * testsuite/ld-gc/pr20022b.s: Likewise. * testsuite/ld-gc/gc.exp: Run PR ld/20022 tests. * testsuite/ld-gc/pr19161.d: Also accept local __start_SECNAME symbol. * testsuite/ld-gc/start.d: Likewise. * testsuite/ld-x86-64/lea1a.d: Updated. * testsuite/ld-x86-64/lea1b.d: Updated. * testsuite/ld-x86-64/lea1d.d: Updated. * testsuite/ld-x86-64/lea1e.d: Likewise. commit 6490dc678bc35f2204afb38449de5127ef8bcca0 Author: Georg-Johann Lay Date: Tue Jun 13 16:50:26 2017 +0100 Replace multiple AVR scripts with a single, customizable linker script. PR ld/21569 * scripttempl/avrtiny.sc: Remove file. * Makefile.am (eavrtiny.c): Depend on avr.sc, no more on avrtiny.sc. * Makefile.in: Regenerate. * emulparams/avrtiny.sh (SCRIPT_NAME): Set var to "avr". (TEXT_ORIGIN): Remove var. (FUSE_NAME, FUSE_LENGTH, LOCK_LENGTH, SIGNATURE_LENGTH) (RODATA_PM_OFFSET): Set new vars. * emulparams/avr1.sh (FUSE_NAME, EEPROM_LENGTH, FUSE_LENGTH) (LOCK_LENGTH, SIGNATURE_LENGTH, USER_SIGNATURE_LENGTH): Set new vars. * emulparams/avr2.sh: Same. * emulparams/avr25.sh: Same. * emulparams/avr3.sh: Same. * emulparams/avr31.sh: Same. * emulparams/avr35.sh: Same. * emulparams/avr4.sh: Same. * emulparams/avr5.sh: Same. * emulparams/avr51.sh: Same. * emulparams/avr6.sh: Same. * emulparams/avrxmega1.sh: Same. * emulparams/avrxmega2.sh: Same. * emulparams/avrxmega3.sh: Same. * emulparams/avrxmega4.sh: Same. * emulparams/avrxmega5.sh: Same. * emulparams/avrxmega6.sh: Same. * emulparams/avrxmega7.sh: Same. * scripttempl/avr.sc (__EEPROM_REGION_LENGTH__): Only define if EEPROM_LENGTH is set. (MEMORY) [eeprom]: Same. (SECTIONS) [.eeprom]: Same for output section. (__USER_SIGNATURE_REGION_LENGTH__): Only define if USER_SIGNATURE_LENGTH is set. (MEMORY) [user_signatures]: Same. (SECTIONS) [.fuse]: Only define output section if FUSE_NAME = fuse. (SECTIONS) [.config]: Only define output section if FUSE_NAME = config. commit dc74becf498f60c842d81eb6e98cfcbc3f167c22 Author: H.J. Lu Date: Tue Jun 13 08:18:19 2017 -0700 ld: Add tests for -Ur Test -Ur with __start_SECNAME, __stop_SECNAME, .startof.SECNAME and .sizeof.SECNAME. __start_SECNAME and __stop_SECNAME should be defined to the start and the end of section SECNAME. .startof.SECNAME and .sizeof.SECNAME should be undefined. * testsuite/ld-elf/sizeof.d: New file. * testsuite/ld-elf/sizeof.s: Likewise. * testsuite/ld-elf/startof.d: Likewise. * testsuite/ld-elf/startof.s: Likewise. commit 8569cfa78c2cc8b5ef66b0bebddcc0e63231fb51 Author: Renlin Li Date: Tue Jun 13 14:03:47 2017 +0100 [LD][Testsuite] Add --no-dynamic-linker option to dynamic-1 rdynamic-1 test case. arm-none-eabi-ld supports shared libraries. However, the toolchain may be configured to generate statically linked executable by default. It is required to have --no-dynamic-linker option before adding dynamic symbol to static executable. For dynamically linked executable, the behavior won't change. ld/ChangeLog 2017-06-13 Renlin Li * testsuite/ld-elf/shared.exp (build_tests): Add --no-dynamic-linker option to rdynamic-1 and dynamic-1 tests. commit 55acdf2242372ae52abb25c80db8e75df5578b23 Author: Andreas Arnez Date: Tue Jun 13 15:20:32 2017 +0200 read/write_pieced_value: Merge into one function Since read_pieced_value and write_pieced_value share significant logic, this patch merges them into a single function rw_pieced_value. gdb/ChangeLog: * dwarf2loc.c (rw_pieced_value): New. Merge logic from... (read_pieced_value, write_pieced_value): ...here. Reduce to wrappers that just call rw_pieced_value. commit f65e204425b5b46a5927d9501c42f25d98a866ce Author: Andreas Arnez Date: Tue Jun 13 15:20:32 2017 +0200 write_pieced_value: Notify memory_changed observers So far write_pieced_value uses write_memory when writing memory pieces to the target. However, this is a case where GDB potentially overwrites a watchpoint value. In such a case write_memory_with_notification should be used instead, so that memory_changed observers get notified. gdb/ChangeLog: * dwarf2loc.c (write_pieced_value): When writing the data for a memory piece, use write_memory_with_notification instead of write_memory. commit 23f945bf8cebf348154aff43782de2e1977e9230 Author: Andreas Arnez Date: Tue Jun 13 15:20:31 2017 +0200 Fix bit-/byte-offset mismatch in parameter to read_value_memory The function read_value_memory accepts a parameter embedded_offset and expects it to represent the byte offset into the given value. However, the only invocation with a possibly non-zero embedded_offset happens in read_pieced_value, where a bit offset is passed instead. Adjust the implementation of read_value_memory to meet the caller's expectation. This implicitly fixes the invocation in read_pieced_value. gdb/ChangeLog: * valops.c (read_value_memory): Change embedded_offset to represent a bit offset instead of a byte offset. * value.h (read_value_memory): Adjust comment. commit f236533e3c6a2693bea879b2a4d24d1229864ac9 Author: Andreas Arnez Date: Tue Jun 13 15:20:31 2017 +0200 read/write_pieced_value: Remove unnecessary variable copies In read_pieced_value's main loop, the variables `dest_offset_bits' and `source_offset_bits' are basically just copies of `offset' and `bits_to_skip', respectively. In write_pieced_value the copies are reversed. This is not very helpful when trying to keep the logic between these functions in sync. Since the copies are unnecessary, this patch just removes them. gdb/ChangeLog: * dwarf2loc.c (read_pieced_value): Remove unnecessary variables dest_offset_bits and source_offset_bits. (write_pieced_value): Likewise. commit 65d84b76164dc8ec1a1f0f0e0fd41667065ffd4e Author: Andreas Arnez Date: Tue Jun 13 15:20:31 2017 +0200 Respect piece offset for DW_OP_bit_piece So far GDB ignores the piece offset of all kinds of DWARF bit pieces (DW_OP_bit_piece) and treats such pieces as if the offset was zero. This is fixed, and an appropriate test is added. gdb/ChangeLog: * dwarf2loc.c (read_pieced_value): Respect the piece offset, as given by DW_OP_bit_piece. (write_pieced_value): Likewise. Andreas Arnez * gdb.dwarf2/var-access.exp: Add test for composite location with nonzero piece offsets. commit 242d31ab7c3901e02bd68c1824d1d3610e02562b Author: Andreas Arnez Date: Tue Jun 13 15:20:30 2017 +0200 read/write_pieced_value: Improve logic for buffer allocation So far the main loop in read_pieced_value and write_pieced_value is structured like this: (1) Prepare a buffer and some variables we may need; (2) depending on the DWARF piece type to be handled, use the buffer and the prepared variables, ignore them, or even recalculate them. This approach reduces readability and may also lead to unnecessary copying of data. This patch moves the preparations to the places where sufficient information is available and removes some of the variables involved. gdb/ChangeLog: * dwarf2loc.c (read_pieced_value): Move the buffer allocation and some other preparations to the places where sufficient information is available. (write_pieced_value): Likewise. commit 03c8af18d1a8f359fd023696848bda488119da60 Author: Andreas Arnez Date: Tue Jun 13 15:20:30 2017 +0200 Fix handling of DWARF register pieces on big-endian targets For big-endian targets the logic in read/write_pieced_value tries to take a register piece from the LSB end. This requires offsets and sizes to be adjusted accordingly, and that's where the current implementation has some issues: * The formulas for recalculating the bit- and byte-offsets into the register are wrong. They just happen to yield correct results if everything is byte-aligned and the piece's last byte belongs to the given value. * After recalculating the bit offset into the register, the number of bytes to be copied from the register is not recalculated. Of course this does not matter if everything (particularly the piece size) is byte-aligned. These issues are fixed. The size calculation is performed with a new helper function bits_to_bytes(). gdb/ChangeLog: * dwarf2loc.c (bits_to_bytes): New function. (read_pieced_value): Fix offset calculations for register pieces on big-endian targets. (write_pieced_value): Likewise. gdb/testsuite/ChangeLog: * gdb.dwarf2/var-access.exp: Add test for non-byte-aligned register pieces. commit 840989c113433c069f54872d7e051e1572202326 Author: Andreas Arnez Date: Tue Jun 13 15:20:30 2017 +0200 read/write_pieced_value: Drop 'buffer_size' variable When the variable 'buffer_size' in read_pieced_value and write_pieced_value was introduced, it was needed for tracking the buffer's allocated size. Now that the buffer's data type has been changed to a std::vector, the variable is no longer necessary; so remove it. gdb/ChangeLog: * dwarf2loc.c (read_pieced_value): Remove buffer_size variable. (write_pieced_value): Likewise. commit 3bf310110722b03d9ff9c4f34f5920a9be2878d0 Author: Andreas Arnez Date: Tue Jun 13 15:20:29 2017 +0200 Add DWARF piece test cases for bit-field access This verifies some of the previous fixes to the logic in write_pieced_value when accessing bit-fields. gdb/testsuite/ChangeLog: * gdb.dwarf2/var-access.exp: Add tests for accessing bit-fields located in one or more DWARF pieces. commit 359b19bb24d048750aa5367ad56a33267300d1a8 Author: Andreas Arnez Date: Tue Jun 13 15:20:28 2017 +0200 write_pieced_value: Transfer least significant bits into bit-field On big-endian targets, when targeting a bit-field, write_pieced_value currently transfers the source value's *most* significant bits to the target value, instead of its least significant bits. This is fixed. In particular the fix adjusts the initial value of 'offset', which can now potentially be nonzero. Thus the variable 'type_len' is renamed to 'max_offset', to avoid confusion. And for consistency, the affected logic that was mirrored in read_pieced_value is changed there in the same way. gdb/ChangeLog: * dwarf2loc.c (write_pieced_value): When writing to a bit-field, transfer the source value's least significant bits, instead of its lowest-addressed ones. Rename type_len to max_offset. (read_pieced_value): Mirror above changes to write_pieced_value as applicable. commit 07c9ca3bd8e6f83bcec49c922b52422c538f60f7 Author: Andreas Arnez Date: Tue Jun 13 15:20:28 2017 +0200 write_pieced_value: Fix buffer offset for memory pieces In write_pieced_value, when transferring the data to target memory via a buffer, the bit offset within the target value is not reduced to its sub-byte fraction before using it as a bit offset into the buffer. This is fixed. gdb/ChangeLog: * dwarf2loc.c (write_pieced_value): In DWARF_VALUE_MEMORY, truncate full bytes from dest_offset_bits before using it as an offset into the buffer. commit f1cc987420d9d2489eb453bd1c87139666cbe7fd Author: Andreas Arnez Date: Tue Jun 13 15:20:27 2017 +0200 write_pieced_value: Include transfer size in byte-wise check In write_pieced_value, when checking whether the data can be transferred byte-wise, the current logic verifies the source- and destination offsets to be byte-aligned, but not the transfer size. This is fixed. gdb/ChangeLog: * dwarf2loc.c (write_pieced_value): Include transfer size in byte-wise check. commit cdaac320fd62bff75562aaa3e466494dc72dd175 Author: Andreas Arnez Date: Tue Jun 13 15:20:27 2017 +0200 write_pieced_value: Fix copy/paste error in size calculation In write_pieced_value, the number of bytes containing a portion of the bit-field in a given piece is calculated with the wrong starting offset; thus the result may be off by one. This bug was probably introduced when copying this logic from read_pieced_value. Fix it. gdb/ChangeLog: * dwarf2loc.c (write_pieced_value): Fix copy/paste error in the calculation of this_size. commit af547a9614969e1d1ea6fcec6b59cd77a606380f Author: Andreas Arnez Date: Tue Jun 13 15:20:27 2017 +0200 read/write_pieced_value: Respect value parent's offset In the case of targeting a bit-field, read_pieced_value and write_pieced_value calculate the number of bits preceding the bit-field without considering the relative offset of the value's parent. This is relevant for a structure variable like this: struct s { uint64_t foo; struct { uint32_t bar; uint32_t bf : 10; /* <-- target bit-field */ } baz; } s; In this scenario, if 'val' is a GDB value representing s.baz.bf, val->parent represents the whole s.baz structure, and the following holds: - value_offset (val) == sizeof s.baz.bar == 4 - value_offset (val->parent) == sizeof s.foo == 8 The current logic would only use value_offset(val), resulting in the wrong offset into the target value. This is fixed. gdb/ChangeLog: * dwarf2loc.c (read_pieced_value): Respect parent value's offset when targeting a bit-field. (write_pieced_value): Likewise. commit 805acca042afed8e8431c92ab031167b03475676 Author: Andreas Arnez Date: Tue Jun 13 15:20:26 2017 +0200 gdb/testsuite: Add "get_endianness" convenience proc The test suite contains multiple instances of determining the target's endianness with GDB's "show endian" command. This patch replaces these by an invocation of a new convenience proc 'get_endianness'. gdb/testsuite/ChangeLog: * lib/gdb.exp (get_endianness): New proc. * gdb.arch/aarch64-fp.exp: Use it. * gdb.arch/altivec-regs.exp: Likewise. * gdb.arch/e500-regs.exp: Likewise. * gdb.arch/vsx-regs.exp: Likewise. * gdb.base/dump.exp: Likewise. * gdb.base/funcargs.exp: Likewise. * gdb.base/gnu_vector.exp: Likewise. * gdb.dwarf2/formdata16.exp: Likewise. * gdb.dwarf2/implptrpiece.exp: Likewise. * gdb.dwarf2/nonvar-access.exp: Likewise. * gdb.python/py-inferior.exp: Likewise. * gdb.trace/unavailable-dwarf-piece.exp: Likewise. commit ddd7882a582637d86a321c1ab835f6cdbeb6d017 Author: Andreas Arnez Date: Tue Jun 13 15:20:26 2017 +0200 Remove addr_size field from struct piece_closure The addr_size field in the piece_closure data structure is a relic from before introducing the typed DWARF stack. It is obsolete now. This patch removes it. gdb/ChangeLog: * dwarf2loc.c (struct piece_closure) : Remove field. (allocate_piece_closure): Drop addr_size parameter. (dwarf2_evaluate_loc_desc_full): Adjust call to allocate_piece_closure. commit e93523245b704bc126705620969b4736b00350c5 Author: Andreas Arnez Date: Tue Jun 13 15:20:26 2017 +0200 PR gdb/21226: Take DWARF stack value pieces from LSB end When taking a DW_OP_piece or DW_OP_bit_piece from a DW_OP_stack_value, the existing logic always takes the piece from the lowest-addressed end, which is wrong on big-endian targets. The DWARF standard states that the "DW_OP_bit_piece operation describes a sequence of bits using the least significant bits of that value", and this also matches the current logic in GCC. For instance, the GCC guality test case pr54970.c fails on s390x because of this. This fix adjusts the piece accordingly on big-endian targets. It is assumed that: * DW_OP_piece shall take the piece from the LSB end as well; * pieces reaching outside the stack value bits are considered undefined, and a zero value can be used instead. gdb/ChangeLog: PR gdb/21226 * dwarf2loc.c (read_pieced_value): Anchor stack value pieces at the LSB end, independent of endianness. gdb/testsuite/ChangeLog: PR gdb/21226 * gdb.dwarf2/nonvar-access.exp: Add checks for verifying that stack value pieces are taken from the LSB end. commit d5d1163eff2415a01895f1cff8bbee32b3f0ab66 Author: Andreas Arnez Date: Tue Jun 13 15:20:26 2017 +0200 write_pieced_value: Fix size capping logic A field f in a structure composed of DWARF pieces may be located in multiple pieces, where the first and last of those may contain bits from other fields as well. So when writing to f, the beginning of the first and the end of the last of those pieces may have to be skipped. But the logic in write_pieced_value for handling one of those pieces is flawed when the first and last piece are the same, i.e., f is contained in a single piece: < - - - - - - - - - piece_size - - - - - - - - - -> +-------------------------------------------------+ | skipped_bits | f_bits | / / / / / / / / / / | +-------------------------------------------------+ The current logic determines the size of the sub-piece to operate on by limiting the piece size to the bit size of f and then subtracting the skipped bits: min (piece_size, f_bits) - skipped_bits Instead of: min (piece_size - skipped_bits, f_bits) So the resulting sub-piece size is corrupted, leading to wrong handling of this piece in write_pieced_value. Note that the same bug was already found in read_pieced_value and fixed there (but not in write_pieced_value), see PR 15391. This patch swaps the calculations, bringing them into the same (correct) order as in read_pieced_value. gdb/ChangeLog: * dwarf2loc.c (write_pieced_value): Fix order of calculations for size capping. gdb/testsuite/ChangeLog: * gdb.dwarf2/var-pieces.exp: Add test case for modifying a variable at nonzero offset. commit 0567c9861e113a573cc905002a59cb1bc3d78450 Author: Andreas Arnez Date: Tue Jun 13 15:20:25 2017 +0200 Add test for modifiable DWARF locations This adds a test for read/write access to variables with various types of DWARF locations. It uses register- and memory locations and composite locations with register- and memory pieces. Since the new test calls gdb_test_no_output with commands that contain braces, it is necessary for string_to_regexp to quote braces as well. This was not done before. gdb/testsuite/ChangeLog: * gdb.dwarf2/var-access.c: New file. * gdb.dwarf2/var-access.exp: New test. * lib/gdb-utils.exp (string_to_regexp): Quote braces as well. commit 10bbbc1d790836122c417fe4fef7233604bb3982 Author: Nick Clifton Date: Tue Jun 13 14:03:16 2017 +0100 Prevent a call to abort when a relocatable link encounters a relocation against a symbol in a section removed by garbage collection. PR ld/21524 * elflink.c (elf_link_adjust_relocs): Generate an error when encountering a reloc against a symbol removed by garbage collection. commit 032bb6eae8a0166f9b5d2eac6960383c532ef6d1 Author: Yao Qi Date: Tue Jun 13 09:05:04 2017 +0100 Move initialize_tdesc_mips* calls from mips-linux-nat.c to mips-linux-tdep.c All target descriptions except mips initialization are called in -tdep.c, instead of -nat.c, so this patch moves mips target descriptions initialization to -tdep.c. Secondly, I want to change the target descriptions from pre-generated to dynamical creation, so I want to test that these pre-generated target descriptions equal to these dynamically created ones. Move target descriptions initialization to -tdep.c files so we can test them in any hosts (if they are still -nat.c, we can only test them on mips-linux host.). gdb: 2017-06-13 Yao Qi * mips-linux-nat.c: Move include features/mips*-linux.c to mips-linux-tdep.c. (_initialize_mips_linux_nat): Move initialize_tdesc_mips* calls to mips-linux-tdep.c. * mips-linux-tdep.c: Include features/mips*-linux.c (_initialize_mips_linux_tdep): Call initialize_tdesc_mips* functions. * mips-linux-tdep.h (tdesc_mips_linux): Declare. (tdesc_mips_dsp_linux, tdesc_mips64_linux): Declare. (tdesc_mips64_dsp_linux): Declare. commit a0688fac4b1662e34a9a08e233112beb7403f642 Author: GDB Administrator Date: Tue Jun 13 00:00:43 2017 +0000 Automatic date update in version.in commit 973e9aab63a70311dffa2993dac52bd63ea461ec Author: Tom Tromey Date: Fri Jun 2 06:54:06 2017 -0600 Add some 128-bit integer tests This adds some tests for printing 128-bit integers. 2017-06-12 Tom Tromey * gdb.dwarf2/formdata16.exp: Add tests. commit f12f6bad7d4e8de1d1f4c9c1811757571149c8f1 Author: Tom Tromey Date: Mon May 22 16:55:18 2017 -0600 Remove val_print_type_code_int Now that print_scalar_formatted is more capable, there's no need for val_print_type_code_int. This patch removes it in favor of val_print_scalar_formatted. 2017-06-12 Tom Tromey * valprint.h (val_print_type_code_int): Remove. * valprint.c (generic_val_print_int): Always call val_print_scalar_formatted. (val_print_type_code_int): Remove. * printcmd.c (print_scalar_formatted): Handle options->format==0. * f-valprint.c (f_val_print): Use val_print_scalar_formatted. * c-valprint.c (c_val_print_int): Use val_print_scalar_formatted. * ada-valprint.c (ada_val_print_num): Use val_print_scalar_formatted. commit d9109c8080ac0a2caeaa5f3d51e8a3b4891a68a8 Author: Tom Tromey Date: Mon May 22 18:43:59 2017 -0600 Simplify print_scalar_formatted This unifies the two switches in print_scalar_formatted, removing some now-redundant code. Now scalar types are never converted to LONGEST, instead printing is done using print_*_chars, operating on the byte representation. ChangeLog 2017-06-12 Tom Tromey * printcmd.c (print_scalar_formatted): Unify the two switches. Don't convert scalars to LONGEST. 2017-06-12 Tom Tromey * gdb.arch/altivec-regs.exp: Expect decimal results for uint128. commit 4ac0cb1cf04f105586746a6cce5b0f93d76f2b33 Author: Tom Tromey Date: Mon May 22 16:32:25 2017 -0600 Let print_decimal_chars handle signed values This changes print_decimal_chars to handle signed values. gdb/ChangeLog 2017-06-12 Tom Tromey PR exp/16225: * valprint.h (print_decimal_chars): Update. * valprint.c (maybe_negate_by_bytes): New function. (print_decimal_chars): Add "is_signed" argument. * printcmd.c (print_scalar_formatted): Update. commit 30a254669b16b86166fed1f9a4c4f9cc55a07fdc Author: Tom Tromey Date: Mon May 22 03:55:58 2017 -0600 Don't always zero pad in print_*_chars This changes print_octal_chars and print_decimal_chars to never zero pad, and changes print_binary_chars and print_hex_chars to only optionally zero-pad, based on a flag. ChangeLog 2017-06-12 Tom Tromey PR exp/16225: * valprint.h (print_binary_chars, print_hex_chars): Update. * valprint.c (val_print_type_code_int): Update. (print_binary_chars): Add "zero_pad" argument. (emit_octal_digit): New function. (print_octal_chars): Don't zero-pad. (print_decimal_chars): Likewise. (print_hex_chars): Add "zero_pad" argument. * sh64-tdep.c (sh64_do_fp_register): Update. * regcache.c (regcache::dump): Update. * printcmd.c (print_scalar_formatted): Update. * infcmd.c (default_print_one_register_info): Update. 2017-06-12 Tom Tromey PR exp/16225: * gdb.reverse/i386-sse-reverse.exp: Update tests. * gdb.arch/vsx-regs.exp: Update tests. * gdb.arch/s390-vregs.exp (hex128): New proc. Update test. * gdb.arch/altivec-regs.exp: Update tests. commit b3464d0316235899d9facf81896d7a427d5cd6d0 Author: Pedro Alves Date: Mon Jun 12 19:04:52 2017 +0100 mips-tdep.c: Remove MAX_REGISTER_SIZE usage mips_eabi_push_dummy_call is storing the address of a struct in a buffer that must have the same of the confisued/set ABI register size. Add a define for the maximum ABI size and use it to size the local buffer. Also rename the 'regsize' local to 'abi_regsize' for clarity. Tested that --enable-targets=all still builds. gdb/ChangeLog: 2017-06-12 Pedro Alves Alan Hayward * mips-tdep.c (MAX_MIPS_ABI_REGSIZE): New. (mips_eabi_push_dummy_call): Rename local 'regsize' to 'abi_regsize'. Rename local array 'valbuf' to 'ref_valbuf', and use MAX_MIPS_ABI_REGSIZE instead of MAX_REGISTER_SIZE to size it. Assert that abi_regsize bytes fit in 'ref_valbuf'. commit 4b76cda9938e4cb200bccffb6e020268c6a51b89 Author: Pedro Alves Date: Mon Jun 12 02:51:52 2017 +0100 .gdb_index prod perf regression: mapped_symtab now vector of values ... instead of vector of pointers There's no real reason for having mapped_symtab::data be a vector of heap-allocated symtab_index_entries. symtab_index_entries is not that large, it's movable, and it's cheap to move. Making the vector hold values instead improves cache locality and eliminates many roundtrips to the heap. Using the same test as in the previous patch, against the same gdb inferior, timing improves ~13% further: ~6.0s => ~5.2s (average of 5 runs). Note that before the .gdb_index C++ifycation patch, we were at ~5.7s. We're now consistenly better than before. gdb/ChangeLog 2017-06-12 Pedro Alves * dwarf2read.c (mapped_symtab::data): Now a vector of symtab_index_entry instead of vector of std::unique_ptr. All users adjusted to check whether an element's name is NULL instead of checking whether the element itself is NULL. (find_slot): Change return type. Adjust. (hash_expand, , add_index_entry, uniquify_cu_indices) (write_hash_table): Adjust. commit e8f8bcb35f22965c8e4309c4aa4227241c485fe7 Author: Pedro Alves Date: Mon Jun 12 02:40:18 2017 +0100 .gdb_index prod perf regression: Estimate size of psyms_seen Using the same test as the previous patch, perf shows GDB spending over 7% in "free". A substantial number of those calls comes from insertions in the psyms_seen unordered_set causing lots of rehashing and recreating buckets. Fix this by computing an estimate of the size of the set upfront. Using the same test as in the previous patch, against the same gdb inferior, timing improves ~8% further: ~6.5s => ~6.0s (average of 5 runs). gdb/ChangeLog: 2017-06-12 Pedro Alves * dwarf2read.c (recursively_count_psymbols): New function. (write_psymtabs_to_index): Call it to compute number of psyms and pass estimate size of psyms_seen to unordered_set's ctor. commit 70a1152bee7cb959ab0c6c13bada03190125022f Author: Pedro Alves Date: Mon Jun 12 00:49:51 2017 +0100 .gdb_index prod perf regression: find before insert in unordered_map "perf" shows the unordered_map::emplace call in write_hash_table a bit high up on profiles. Fix this using the find + insert idiom instead of going straight to insert. I tried doing the same to the other unordered_maps::emplace calls in the file, but saw no performance improvement, so left them be. With a '-g3 -O2' build of gdb, and: $ cat save-index.cmd set $i = 0 while $i < 100 save gdb-index . set $i = $i + 1 end $ time ./gdb -data-directory=data-directory -nx --batch -q -x save-index.cmd ./gdb.pristine I get an improvement of ~7%: ~7.0s => ~6.5s (average of 5 runs). gdb/ChangeLog: 2017-06-12 Pedro Alves * dwarf2read.c (write_hash_table): Check if key already exists before emplacing. commit c2f134ac418eafca850e7095d789a01ec1142fc4 Author: Pedro Alves Date: Sat Jun 10 16:51:14 2017 +0100 Code cleanup: dwarf2read.c: Add data_buf::append_uint This avoids having to specify the integer size twice in the same line. gdb/ChangeLog: 2017-06-12 Pedro Alves * dwarf2read.c (data_buf::append_space): Rename to... (data_buf::grow): ... this, and make private. Adjust all callers. (data_buf::append_uint): New method. (add_address_entry, write_one_signatured_type) (write_psymtabs_to_index): Use it. commit a81e6d4d261b7471428408f4ebba1b8113c16ccf Author: Pedro Alves Date: Sat Jun 10 00:53:00 2017 +0100 Code cleanup: dwarf2read.c: Eliminate ::file_write There's no real need for all this indirection. gdb/ChangeLog: 2017-06-12 Pedro Alves * dwarf2read.c (file_write(FILE *, const void *, size_t)): Delete. (file_write (FILE *, const std::vector&)): Delete. (data_buf::file_write): Call ::fwrite directly. commit 6fd931f2d66af8398b2fae3ab5f5afe091b8362f Author: Pedro Alves Date: Mon Jun 12 00:43:55 2017 +0100 Code cleanup: dwarf2read.c:uniquify_cu_indices: Use std::unique gdb/ChangeLog: 2017-06-12 Pedro Alves * dwarf2read.c (uniquify_cu_indices): Use std::unique and std::vector::erase. commit bc8f2430e08cc2a520db49a42686e0529be4a3bc Author: Jan Kratochvil Date: Mon Jun 12 16:29:53 2017 +0100 Code cleanup: C++ify .gdb_index producer gdb/ChangeLog 2017-06-12 Jan Kratochvil Code cleanup: C++ify .gdb_index producer. * dwarf2read.c: Include and . (MAYBE_SWAP) [WORDS_BIGENDIAN]: Cast to offset_type. (struct strtab_entry, hash_strtab_entry, eq_strtab_entry) (create_strtab, add_string): Remove. (file_write, data_buf): New. (struct symtab_index_entry): Use std::vector for cu_indices. (struct mapped_symtab): Use std::vector for data. (hash_symtab_entry, eq_symtab_entry, delete_symtab_entry) (create_symbol_hash_table, create_mapped_symtab, cleanup_mapped_symtab): Remove. (find_slot): Change return type. Update it to the new data structures. (hash_expand, add_index_entry): Update it to the new data structures. (offset_type_compare): Remove. (uniquify_cu_indices): Update it to the new data structures. (c_str_view, c_str_view_hasher, vector_hasher): New. (add_indices_to_cpool): Remove. (write_hash_table): Update it to the new data structures. (struct psymtab_cu_index_map, hash_psymtab_cu_index) (eq_psymtab_cu_index): Remove. (psym_index_map): New typedef. (struct addrmap_index_data): Change addr_obstack pointer to data_buf reference and std::unordered_map for cu_index_htab. (add_address_entry, add_address_entry_worker, write_address_map) (write_psymbols): Update it to the new data structures. (write_obstack): Remove. (struct signatured_type_index_data): Change types_list to a data_buf reference and psyms_seen to a std::unordered_set reference. (write_one_signatured_type, recursively_write_psymbols) (write_psymtabs_to_index): Update it to the new data structures. commit 5c3ce2bc8adea307917d3bfeef53114795764db6 Author: H.J. Lu Date: Mon Jun 12 07:37:15 2017 -0700 ELF: Pass bfd_link_info to merge_gnu_properties Pass struct bfd_link_info * to merge_gnu_properties to give backend control of how GNU properties are merged based on linker command line options. * elf-bfd.h (elf_backend_data): Add struct bfd_link_info * to merge_gnu_properties. * elf-properties.c (elf_merge_gnu_properties): Add struct bfd_link_info * and pass it to merge_gnu_properties. (elf_merge_gnu_property_list): Add struct bfd_link_info * and pass it to elf_merge_gnu_properties. (_bfd_elf_link_setup_gnu_properties): Pass info to elf_merge_gnu_property_list. * elf32-i386.c (elf_i386_merge_gnu_properties): Add struct bfd_link_info *. * elf64-x86-64.c (elf_x86_64_merge_gnu_properties): Likewise. commit 3704e3589d3d187fbf76e688388b1a92fd627c8d Author: Andreas Krebbel Date: Fri Jun 9 11:19:01 2017 +0200 S/390: Return with an error for broken tls rewrites bfd/ChangeLog: 2017-06-12 Andreas Krebbel * elf32-s390.c (elf_s390_relocate_section): Return false in case the rewriting fails. * elf64-s390.c (elf_s390_relocate_section): Likewise. commit fd0219988dada5b4ddb04b691f71c9acdd87b739 Author: GDB Administrator Date: Mon Jun 12 00:00:38 2017 +0000 Automatic date update in version.in commit c4dcb155c446cee135101d72172b47e3fc99caf9 Author: Simon Marchi Date: Sun Jun 11 23:16:01 2017 +0200 Introduce "set debug separate-debug-file" I helped someone figure out why their separate debug info (debug link-based) was not found by gdb. It turns out that the debug file was not named properly. It made me realize that it is quite difficult to diagnose this kind of problems. This patch adds some debug output to show where GDB looks for those files, so that it should be (more) obvious to find what's wrong. Here's an example of the result, first with an example of unsuccessful lookup, and then a successful one. (gdb) set debug separate-debug-file on (gdb) file /usr/bin/gnome-calculator Reading symbols from /usr/bin/gnome-calculator... Looking for separate debug info (build-id) for /usr/bin/gnome-calculator Trying /usr/local/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Looking for separate debug info (debug link) for /usr/bin/gnome-calculator Trying /usr/bin/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Trying /usr/bin/.debug/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Trying /usr/local/lib/debug//usr/bin/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug (no debugging symbols found)...done. (gdb) set debug-file-directory /usr/lib/debug (gdb) file /usr/bin/gnome-calculator Reading symbols from /usr/bin/gnome-calculator... Looking for separate debug info by build-id for /usr/bin/gnome-calculator Trying /usr/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug Reading symbols from /usr/lib/debug/.build-id/0d/5c5e8c86dbe4f4f95f7a13de04f91d377f3c6a.debug...done. done. Note: here, the debug link happens to be named like the build-id, but it doesn't have to be this way. It puzzled me for a minute. gdb/ChangeLog: * NEWS (Changes since GDB 8.0): Announce {set,show} debug separate-debug-file commands. * symfile.h (separate_debug_file_debug): New global. * symfile.c (separate_debug_file_debug): New global. (separate_debug_file_exists, find_separate_debug_file): Add debug output. (_initialize_symfile): Add "set debug separate-debug-file" command. * build-id.c (build_id_to_debug_bfd, find_separate_debug_file_by_buildid): Add debug output. gdb/doc/ChangeLog: * gdb.texinfo (Optional Messages about Internal Happenings): Document {set,show} debug separate-debug-file commands. commit 9b97dfbf8049bed3b2f79c6c785afaf18206dad3 Author: Alan Modra Date: Sun Jun 11 13:34:13 2017 +0930 PR 21564, Section start in binary output file incorrect PR 21564 * binary.c (binary_set_section_contents): Scale lma by octets per byte to set filepos. commit c7198f97e026f2a2d53de8dda090c04619355a36 Author: GDB Administrator Date: Sun Jun 11 00:00:44 2017 +0000 Automatic date update in version.in commit 561bf3e950e410fbcac06523d43039f1f58150ca Author: GDB Administrator Date: Sat Jun 10 00:00:43 2017 +0000 Automatic date update in version.in commit 6d45d4b42b5b360c0b80259e101c01d650d0be23 Author: Simon Marchi Date: Sat Jun 10 00:24:05 2017 +0200 gdbarch: Remove displaced_step_free_closure The displaced_step_free_closure gdbarch hook allows architectures to free data they might have allocated to complete a displaced step. However, all architectures using that hook use the simple_displaced_step_free_closure provided in arch-utils.{c,h}, which does a simple xfree. We can remove it and do an xfree directly instead of calling the hook. gdb/ChangeLog: * gdbarch.sh (displaced_step_free_closure): Remove. * gdbarch.h, gdbarch.c: Re-generate. * aarch64-linux-tdep.c (aarch64_linux_init_abi): Don't set displaced_step_free_closure. * amd64-linux-tdep.c (amd64_linux_init_abi_common): Likewise. * arm-linux-tdep.c (arm_linux_init_abi): Likewise. * i386-linux-tdep.c (i386_linux_init_abi): Likewise. * rs6000-aix-tdep.c (rs6000_aix_init_osabi): Likewise. * rs6000-tdep.c (rs6000_gdbarch_init): Likewise. * s390-linux-tdep.c (s390_gdbarch_init): Likewise. * arch-utils.h (simple_displaced_step_free_closure): Remove. * arch-utils.c (simple_displaced_step_free_closure): Remove. * infrun.c (displaced_step_clear): Call xfree instead of gdbarch_displaced_step_free_closure. commit 9845682bda4149b5b3648f2d49a041aef5bc1af5 Author: Sergio Durigan Junior Date: Fri Jun 9 18:16:19 2017 -0400 Include on gdbserver/fork-child.c (and fix regressions) Hi, This is another obvious patch that fixes a thinko from my previous startup-with-shell series. We should conditionally include on gdb/gdbserver/fork-child.c because gdbserver will be putting the inferior's terminal on the correct mode after the call to fork_inferior, and for that it needs to ignore SIGTTOU. This patch fixes a bunch of regressions happening on AArch64 that were reported by Yao. gdb/gdbserver/ChangeLog: 2017-06-09 Sergio Durigan Junior * fork-child.c: Conditionally include . commit 654f3b6a2af84ba0f9c6a4c011364b8f650d66a6 Author: H.J. Lu Date: Fri Jun 9 10:43:43 2017 -0700 x86-64: Add some x32 ELF property tests * testsuite/ld-x86-64/property-x86-3-x32.d: New file. * testsuite/ld-x86-64/property-x86-4a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-4b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-3.d: Also pass -defsym __64_bit__=1 to asssembler. * testsuite/ld-x86-64/property-x86-4a.d: Likewise. * testsuite/ld-x86-64/property-x86-4b.d: Likewise. * testsuite/ld-x86-64/property-x86-3.s: Align to 4 bytes if __64_bit__ isn't defined. * testsuite/ld-x86-64/property-x86-4a.s: Likewise. * testsuite/ld-x86-64/property-x86-4b.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run property-x86-3-x32, property-x86-4a-x32 and property-x86-4b-x32. commit dbb2bcd0059f8d91de5a792f8684c8908c316720 Author: Jiong Wang Date: Fri Jun 9 12:02:05 2017 +0100 Revert "[AArch64] Allow COPY relocation elimination" This reverts commit bc327528fd2ccdc6c29ab6ae608085dddbad5cc8. This patch can only be committed after PC-relative relocation types support on copy relocation elimination is also completed. commit fe7bb2d5ab1f47163f38d2070dc1e62c1920bb44 Author: GDB Administrator Date: Fri Jun 9 00:00:44 2017 +0000 Automatic date update in version.in commit 2f91880f3afb3cc521111dfcc99b214c77aa97a1 Author: Sergio Durigan Junior Date: Thu Jun 8 16:58:25 2017 -0400 Fix possible bug when no args have been provided to the executable Hi, This bug is related to: On stringify_argv, we have to check if args[0] is not NULL before stringifying anything, otherwise we might do the wrong thing when trimming the "ret" string in the end. args[0] will be NULL when no arguments are passed to the inferior that will be started. Checked in as obvious. gdb/ChangeLog: 2017-06-08 Sergio Durigan Junior * common/common-utils.c (stringify_argv): Check for "arg[0] != NULL". commit e3d1d4088ad3b4d0fed39df62ad295ed60707807 Author: Cupertino Miranda Date: Tue May 23 13:36:33 2017 +0200 [ARC] Corrected conditions for dynamic sections creation. Fixed conditions to create the dynamic sections. Previously there would be times where the dynamic sections would not be created although they were actually required for linking to work. Issue found through OpenADK build, more precisely the ublicb testsuite package. bfd/ChangeLog: Cupertino Miranda elf32-arc.c (elf_arc_check_relocs): Fixed conditions to generate dynamic sections. commit 64aa8e030360ba68e32ca15fa5aa426160a2efb1 Author: Cupertino Miranda Date: Wed Apr 5 23:22:07 2017 +0200 [ARC] Fixed condition to generate TEXTREL. TEXTREL was being generated even when relocatable .o files had the .rela.text section. Now it is limitted only to dynamic object files that still have them. Nevertheless, our target aborts in those cases due to architecture limitations where icache is not coherent with dcache, and to force this coherence expensive kernel level support would be needed. bfd/ChangeLog: Cupertino Miranda * elf32-arc.c (elf_arc_size_dynamic_sections): Changed condition to require TEXTREL. commit a0abe74332bd25aeb68acfadd74280c0f117c493 Author: Cupertino Miranda Date: Thu Dec 29 17:10:01 2016 +0100 [ARC] Fixed TLS for IE model. In the case of static relocation, the GOT entries are fixed at link time and are set by the linker. In order to compute the right TLS offset it is necessary to add TCB_SIZE to the offset, just in case the dynamic linker is not expected to be executed (static linked case). This problem does appear in dynamic linked applications, as the dynamic linker is adding this TCB_SIZE by operating the TCB block structure. Problem revealed in GLIBC with static linking. bfd/ChangeLog: Cupertino Miranda arc-got.h (relocate_fix_got_relocs_for_got_info): Added TCB_SIZE to patched section contents for TLS IE reloc. elf32-arc.c: Remove TCB_SIZE preprocessor macro. Rebase to 0006 commit f4e6805f98d2b3eae305f66ba26ab25aae1485f2 Author: Cupertino Miranda Date: Wed Nov 30 20:23:21 2016 +0100 [ARC] Add RELOC_FOR_GLOBAL_SYMBOL in ARC target code. This miss was identified in the context of openssh building for ARC. bfd/ChangeLog: Cupertino Miranda elf32-arc.c (elf_arc_relocate_section): Added "call" to RELOC_FOR_GLOBAL_SYMBOL macro. commit cd6402916febae6d8a4e62c572ea6fd487eebb61 Author: Cupertino Miranda Date: Wed Nov 30 14:07:20 2016 +0100 [ARC] ARC_PC32 dynamic reloc incorrectly generated. Fixed issue related to the generation of ARC_PC32 dynamic relocs when symbol is dynamic but still defined in a non shared object. bfd/ChangeLog: Cupertino Miranda elf32-arc.c (elf_arc_relocate_section): Small refactor and condition changes. commit 7ef0acc15ec011371a3901a997c867165bf7a733 Author: Vineet Gupta Date: Mon May 30 15:19:22 2016 +0530 [ARC] Don't convert _DYNAMIC@ to _GLOBAL_OFFSET_TABLE_ Historically the arc abi demanded that a GOT[0] should be referencible as [pc+_DYNAMIC@gotpc]. Hence we convert a _DYNAMIC@gotpc to a GOTPC reference to _GLOBAL_OFFSET_TABLE_. This is no longer the case and uClibc and upcomming GNU libc don't expect this to happen. gas/ChangeLog: Vineet Gupta Cupertino Miranda * config/tc-arc.c (md_undefined_symbol): Changed. * config/tc-arc.h (DYNAMIC_STRUCT_NAME): Removed. commit cc89d0b3344614ae97456df84034096b698e5790 Author: Cupertino Miranda Date: Mon Oct 24 22:19:48 2016 +0200 [ARC] Reassign the symbol got information to actual symbol when indirect. GOT information would not be reassign to symbol when it became a indect symbol. bfd/ChangeLog: Cupertino Miranda * elf32-arc.c (elf_arc_relocate_section): Fixed reassign of indirect symbols. commit 9d5c718b7a9c46132940f899f40556a77ca462a0 Author: Cupertino Miranda Date: Mon Oct 24 12:52:04 2016 +0200 [ARC] Disable warning on absolute relocs when symbol is local. R_ARC_32 and R_ARC_32_ME cannot be generated as dynamic relocs. However, a warning message and check_relocs was aborting when this type of reloc was being resolved to a local symbol. This is wrong as local symbols are resolvable at link time. bfd/ChangeLog: Cupertino Miranda * elf32-arc.c (elf_arc_check_relocs): Added condition to disable warning and "Bad value" for local symbols ARC_32 or ARC_32_ME relocs. commit be9e3704f91190c1e1c5d253494423b13c982d93 Author: Cupertino Miranda Date: Wed Dec 7 14:22:54 2016 +0100 [ARC] Avoid creating dynamic relocs when static linked is requested. bfd/Changelog: Cupertino Miranda * elf32-arc.c (ADD_RELA): Changed to only work when dynamic object is created. commit b8b6e72f3db1f798680742c02f3dc220175d0757 Author: Alan Hayward Date: Thu Jun 8 16:05:24 2017 +0100 Add MN10300_MAX_REGISTER_SIZE gdb/ * mn10300-tdep.c (MN10300_MAX_REGISTER_SIZE): Add. (mn10300_extract_return_value): Use MN10300_MAX_REGISTER_SIZE. (mn10300_push_dummy_call): Likewise. commit 5369082e7b786dee2c185f768b126a9a18cb2915 Author: Alan Hayward Date: Thu Jun 8 15:57:12 2017 +0100 Update ff4ca5ac6a2e8 to the correct version. gdb/ * mi/mi-main.c (register_changed_p): Use value_contents_eq. commit 4ec192e6abe86319b9e9af6f2ae4cf0614b1e2b3 Author: Richard Earnshaw Date: Thu Jun 8 15:11:44 2017 +0100 [bfd][arm] Don't assert on suspicious build attributes in input file It's generally a bad idea to use assertions to validate our idea of what an input file looks like. We need to be as liberal as possible in what we accept with respect to standards and conservative with what we produce. Currently, if gcc is used to produce an assembler file which contains only data, but the FPU is set to fpv4-sp-d16 and mfloat-abi=hard, then the following attributes will be set in the output: .cpu arm7tdmi .eabi_attribute 27, 1 @ Tag_ABI_HardFP_use .eabi_attribute 28, 1 @ Tag_ABI_VFP_args .eabi_attribute 20, 1 @ Tag_ABI_FP_denormal .eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions .eabi_attribute 23, 3 @ Tag_ABI_FP_number_model .eabi_attribute 24, 1 @ Tag_ABI_align8_needed .eabi_attribute 25, 1 @ Tag_ABI_align8_preserved .eabi_attribute 26, 2 @ Tag_ABI_enum_size .eabi_attribute 30, 6 @ Tag_ABI_optimization_goals .eabi_attribute 34, 0 @ Tag_CPU_unaligned_access .eabi_attribute 18, 4 @ Tag_ABI_PCS_wchar_t There is then no .fpu directive to cause Tag_FP_arch to be set, because there are no functions containing code in the object file. If this object file is assembled by hand, but without -mfpu on the invocation of the assembler, then the build attributes produced will trigger an assertion during linking. Thinking about the build attributes, the combination of a single-precision only implementation of no floating-point architecture is still no floating-point architecture. Hence the assertion on the input BFD in the linker makes no real sense. We should, however, be more conservative in what we generate, so I've left the assertion on the output bfd in place; I don't think we can trigger it with this change since we never merge the problematic tags from a perversely generated input file. * elf32-arm.c (elf32_arm_merge_eabi_attributes): Remove assertion that the input bfd has Tag_FP_ARCH non-zero if Tag_ABI_HardFP_use is non-zero. Add clarifying comments. commit ff4ca5ac6a2e85177dc7efe5cbda7b956bb71fd5 Author: Alan Hayward Date: Thu Jun 8 14:02:59 2017 +0100 Remove MAX_REGISTER_SIZE from mi/mi-main.c gdb/ * mi/mi-main.c (register_changed_p): Use cooked_read_value. commit 6322e5c5cb7ffe1c26c50f117765503717b0431c Author: H.J. Lu Date: Wed Jun 7 21:18:01 2017 -0700 x86: Dump local IFUNC functions in the map file Dump local IFUNC functions in the map file when generating IRELATIVE relocations if -Map is used. bfd/ * elf32-i386.c (elf_i386_check_relocs): Set local IFUNC symbol name. Use local IFUNC symbol name string to report unsupported non-PIC call to IFUNC function. (elf_i386_relocate_section): Dump local IFUNC name with minfo when generating R_386_IRELATIVE relocation. (elf_i386_finish_dynamic_symbol): Likewise. * elf_x86_64_check_relocs (elf_x86_64_check_relocs): Set local IFUNC symbol name. (elf_x86_64_relocate_section): Dump local IFUNC name with minfo when generating R_X86_64_IRELATIVE relocation. (elf_x86_64_finish_dynamic_symbol): Likewise. ld/ * testsuite/ld-ifunc/ifunc-1-local-x86.d: Pass "-Map tmpdir/ifunc-1-local-x86.map" to ld and check ifunc-1-local-x86.map. * testsuite/ld-ifunc/ifunc-1-x86.d: Pass "-Map tmpdir/ifunc-1-x86.map" to ld and check ifunc-1-x86.map. * testsuite/ld-ifunc/ifunc-1-local-x86.map: New file. * testsuite/ld-ifunc/ifunc-1-x86.map: Likewise. commit 51fa2693add9ead8288f475d380f4aec7372fe5a Author: H.J. Lu Date: Thu Jun 8 03:48:04 2017 -0700 cl commit bc327528fd2ccdc6c29ab6ae608085dddbad5cc8 Author: Jiong Wang Date: Wed Jun 7 12:05:39 2017 +0100 [AArch64] Allow COPY relocation elimination As discussed at the PR, this patch tries to avoid COPY relocation generation and propagate the original relocation into runtime if it was relocating on writable section. The ELIMINATE_COPY_RELOCS has been set to true and it's underlying infrastructure has been improved so that the COPY reloc elimination at least working on absoluate relocations (ABS64) after this patch. bfd/ PR ld/21532 * elfnn-aarch64.c (ELIMINATE_COPY_RELOCS): Set to 1. (elfNN_aarch64_final_link_relocate): Also propagate relocations to runtime for copy relocation elimination cases. (alias_readonly_dynrelocs): New function. (elfNN_aarch64_adjust_dynamic_symbol): Keep the dynamic relocs instead of generating copy relocation if it is not against read-only sections. (elfNN_aarch64_check_relocs): Likewise. ld/ * testsuite/ld-aarch64/copy-reloc-eliminate.d: New test. * testsuite/ld-aarch64/copy-reloc-exe-eliminate.s: New test source file. * testsuite/ld-aarch64/aarch64-elf.exp: Run new testcase. commit 81b6fe3bf9f3be2b6b81d05d08ac58d2a6dcb760 Author: Eric Christopher Date: Wed Jun 7 17:49:35 2017 -0700 2017-06-07 Eric Christopher * aarch64.cc (maybe_apply_stub): Add debug logging for looking up stubs to undefined symbols and early return rather than fail to look them up. (scan_reloc_for_stub): Add debug logging for no stub creation for undefined symbols. commit 3030551ec55042d7c87bd55fd29db2b06fe06df9 Author: GDB Administrator Date: Thu Jun 8 00:00:39 2017 +0000 Automatic date update in version.in commit aefd8b33d97bded58e51d75271f99e1eaec9fb28 Author: Sergio Durigan Junior Date: Thu Dec 22 22:14:02 2016 -0500 Implement proper "startup-with-shell" support on gdbserver This patch implements the proper support for the "startup-with-shell" feature on gdbserver. A new packet is added, QStartupWithShell, and it is sent on initialization. If the host sends a "QStartupWithShell:1", it means the inferior shall be started using a shell. If the host sends a "QStartupWithShell:0", it means the inferior shall be started without using a shell. Any other value is considered an error. There is no way to remotely set the shell that will be used by the target to start the inferior. In order to do that, the user must start gdbserver while providing a shell via the $SHELL environment variable. The same is true for the host side. The "set startup-with-shell" setting from the host side is used to decide whether to start the remote inferior using a shell. This same setting is also used to decide whether to use a shell to start the host inferior; this means that it is not really possible to start the inferior using different mechanisms on target and host. A documentation patch is included, along with a new testcase for the feature. gdb/ChangeLog: 2017-06-07 Sergio Durigan Junior * NEWS (Changes since GDB 8.0): Announce that GDBserver is now able to start inferiors using a shell. (New remote packets): Announce new packet "QStartupWithShell". * remote.c: Add PACKET_QStartupWithShell. (extended_remote_create_inferior): Handle new PACKET_QStartupWithShell. (remote_protocol_features) : New entry for PACKET_QStartupWithShell. (_initialize_remote): Call "add_packet_config_cmd" for QStartupShell. gdb/gdbserver/ChangeLog: 2017-06-07 Sergio Durigan Junior * server.c (handle_general_set): Handle new packet "QStartupWithShell". (handle_query): Add "QStartupWithShell" to the list of supported packets. (gdbserver_usage): Add help text explaining the new "--startup-with-shell" and "--no-startup-with-shell" CLI options. (captured_main): Recognize and act upon the presence of the new CLI options. gdb/testsuite/ChangeLog: 2017-06-07 Sergio Durigan Junior * gdb.base/startup-with-shell.c: New file. * gdb.base/startup-with-shell.exp: Likewise. gdb/doc/ChangeLog: 2017-06-07 Sergio Durigan Junior * gdb.texinfo (Starting) : Add @anchor. (Connecting) : Add "startup-with-shell" and "QStartupWithShell" to the table. (Remote Protocol) : New item, explaining the packet. commit 2090129c36c7e582943b7d300968d19b46160d84 Author: Sergio Durigan Junior Date: Thu Dec 22 21:11:11 2016 -0500 Share fork_inferior et al with gdbserver This is the most important (and the biggest, sorry) patch of the series. It moves fork_inferior from gdb/fork-child.c to nat/fork-inferior.c and makes all the necessary adjustments to both GDB and gdbserver to make sure everything works OK. There is no "most important change" with this patch; all changes are made in a progressive way, making sure that gdbserver had the necessary features while not breaking GDB at the same time. I decided to go ahead and implement a partial support for starting the inferior with a shell on gdbserver, although the full feature comes in the next patch. The user won't have the option to disable the startup-with-shell, and also won't be able to change which shell gdbserver will use (other than setting the $SHELL environment variable, that is). Everything is working as expected, and no regressions were present during the tests. gdb/ChangeLog: 2017-06-07 Sergio Durigan Junior Pedro Alves * Makefile.in (HFILES_NO_SRCDIR): Add "common/common-inferior.h" and "nat/fork-inferior.h". * common/common-inferior.h: New file, with contents from "gdb/inferior.h". * commom/common-utils.c: Include "common-utils.h". (stringify_argv): New function. * common/common-utils.h (stringify_argv): New prototype. * configure.nat: Add "fork-inferior.o" as a dependency for "*linux*", "fbsd*" and "nbsd*" hosts. * corefile.c (get_exec_file): Update comment. * darwin-nat.c (darwin_ptrace_him): Call "gdb_startup_inferior" instead of "startup_inferior". (darwin_create_inferior): Call "add_thread_silent" after "fork_inferior". * fork-child.c: Cleanup unnecessary includes. (SHELL_FILE): Move to "common/common-fork-child.c". (environ): Likewise. (exec_wrapper): Initialize. (get_exec_wrapper): New function. (breakup_args): Move to "common/common-fork-child.c"; rename to "breakup_args_for_exec". (escape_bang_in_quoted_argument): Move to "common/common-fork-child.c". (saved_ui): New variable. (prefork_hook): New function. (postfork_hook): Likewise. (postfork_child_hook): Likewise. (gdb_startup_inferior): Likewise. (fork_inferior): Move to "common/common-fork-child.c". Update function to support gdbserver. (startup_inferior): Likewise. * gdbcore.h (get_exec_file): Remove declaration. * gnu-nat.c (gnu_create_inferior): Call "gdb_startup_inferior" instead of "startup_inferior". Call "add_thread_silent" after "fork_inferior". * inf-ptrace.c: Include "nat/fork-inferior.h" and "utils.h". (inf_ptrace_create_inferior): Call "gdb_startup_inferior" instead of "startup_inferior". Call "add_thread_silent" after "fork_inferior". * inferior.h: Include "common-inferior.h". (trace_start_error): Move to "common/common-utils.h". (trace_start_error_with_name): Likewise. (fork_inferior): Move prototype to "nat/fork-inferior.h". (startup_inferior): Likewise. (gdb_startup_inferior): New prototype. * nat/fork-inferior.c: New file, with contents from "fork-child.c". * nat/fork-inferior.h: New file. * procfs.c (procfs_init_inferior): Call "gdb_startup_inferior" instead of "startup_inferior". Call "add_thread_silent" after "fork_inferior". * target.h (target_terminal_init): Move prototype to "target/target.h". (target_terminal_inferior): Likewise. (target_terminal_ours): Likewise. * target/target.h (target_terminal_init): New prototype, moved from "target.h". (target_terminal_inferior): Likewise. (target_terminal_ours): Likewise. * utils.c (gdb_flush_out_err): New function. gdb/gdbserver/ChangeLog: 2017-06-07 Sergio Durigan Junior Pedro Alves * Makefile.in (SFILES): Add "nat/fork-inferior.o". * configure: Regenerate. * configure.srv (srv_linux_obj): Add "fork-child.o" and "fork-inferior.o". (i[34567]86-*-lynxos*): Likewise. (spu*-*-*): Likewise. * fork-child.c: New file. * linux-low.c: Include "common-inferior.h", "nat/fork-inferior.h" and "environ.h". (linux_ptrace_fun): New function. (linux_create_inferior): Adjust function prototype to reflect change on "target.h". Adjust function code to use "fork_inferior". (linux_request_interrupt): Delete "signal_pid". * lynx-low.c: Include "common-inferior.h" and "nat/fork-inferior.h". (lynx_ptrace_fun): New function. (lynx_create_inferior): Adjust function prototype to reflect change on "target.h". Adjust function code to use "fork_inferior". * nto-low.c (nto_create_inferior): Adjust function prototype and code to reflect change on "target.h". Update comments. * server.c: Include "common-inferior.h", "nat/fork-inferior.h", "common-terminal.h" and "environ.h". (terminal_fd): Moved to fork-child.c. (old_foreground_pgrp): Likewise. (restore_old_foreground_pgrp): Likewise. (last_status): Make it global. (last_ptid): Likewise. (our_environ): New variable. (startup_with_shell): Likewise. (program_name): Likewise. (program_argv): Rename to... (program_args): ...this. (wrapper_argv): New variable. (start_inferior): Delete function. (get_exec_wrapper): New function. (get_exec_file): Likewise. (get_environ): Likewise. (prefork_hook): Likewise. (post_fork_inferior): Likewise. (postfork_hook): Likewise. (postfork_child_hook): Likewise. (handle_v_run): Update code to deal with arguments coming from the remote host. Update calls from "start_inferior" to "create_inferior". (captured_main): Likewise. Initialize environment variable. Call "have_job_control". * server.h (post_fork_inferior): New prototype. (get_environ): Likewise. (last_status): Declare. (last_ptid): Likewise. (signal_pid): Likewise. * spu-low.c: Include "common-inferior.h" and "nat/fork-inferior.h". (spu_ptrace_fun): New function. (spu_create_inferior): Adjust function prototype to reflect change on "target.h". Adjust function code to use "fork_inferior". * target.c (target_terminal_init): New function. (target_terminal_inferior): Likewise. (target_terminal_ours): Likewise. * target.h: Include . (struct target_ops) : Update prototype. (create_inferior): Update macro. * utils.c (gdb_flush_out_err): New function. * win32-low.c (win32_create_inferior): Adjust function prototype and code to reflect change on "target.h". gdb/testsuite/ChangeLog: 2017-06-07 Sergio Durigan Junior * gdb.server/non-existing-program.exp: Update regex in order to reflect the fact that gdbserver is now using fork_inferior (with a shell) to startup the inferior. commit 043a49349c713dc329a2dfc413b082c3826ecdb8 Author: Sergio Durigan Junior Date: Thu Dec 22 13:30:42 2016 -0500 Share parts of gdb/gdbthread.h with gdbserver GDB and gdbserver now share 'switch_to_thread' because of fork_inferior. To make things clear, I created a new file name common/common-gdbthread.h, and left the implementation specific to each part. gdb/ChangeLog: 2017-06-07 Sergio Durigan Junior * Makefile.in (HFILES_NO_SRCDIR): Add "common/common-gdbthread.h". * common/common-gdbthread.h: New file, with parts from "gdb/gdbthread.h". * gdbthread.h: Include "common-gdbthread.h". (switch_to_thread): Moved to "common/common-gdbthread.h". gdb/gdbserver/ChangeLog: 2017-06-07 Sergio Durigan Junior * inferiors.c (switch_to_thread): New function. commit 156525114c1cbbace0dec223494b842ffc60d52e Author: Sergio Durigan Junior Date: Thu Dec 22 12:41:16 2016 -0500 Move parts of inferior job control to common/ This commit moves a few bits responsible for dealing with inferior job control from GDB to common/, which makes them available to gdbserver. This is necessary for the upcoming patches that will share fork_inferior et al between GDB and gdbserver. We move some parts of gdb/terminal.h to gdb/common/common-terminal.h, especifically the code that checks terminal features and that are used to set job_control accordingly. After sharing parts of gdb/terminal.h, we also to share the two functions on gdb/inflow.c that are going to be needed by the fork_inferior rework. They are 'gdb_setpgid' and the new 'have_job_control'. I've also taken the opportunity to give a more meaningful name to "inflow.c" on common/. Now it is called "job-control.c" (thanks Pedro for the suggestion). gdb/ChangeLog: 2017-06-07 Sergio Durigan Junior * Makefile.in (SFILES): Add "common/job-control.c". (HFILES_NO_SRCDIR): Add "common/job-control.h". (COMMON_OBS): Add "job-control.o". * common/job-control.c: New file, with contents from "gdb/inflow.c". * common/job-control.h: New file, with contents from "terminal.h". * fork-child.c: Include "job-control.h". * inflow.c: Include "job-control.h". (gdb_setpgid): Move to "common/common-inflow.c". (_initialize_inflow): Move setting of "job_control" to "handle_job_control". * terminal.h (job_control): Moved to "common/common-terminal.h". (gdb_setpgid): Likewise. * top.c: Include "job_control.h". * utils.c: Likewise. (job_control): Moved to "job-control.c". gdb/gdbserver/ChangeLog: 2017-06-07 Sergio Durigan Junior * Makefile.in (SFILE): Add "common/job-control.c". (OBS): Add "job-control.o". commit 2d7cc5c7973b6d1bdd9205288863bedadeaf8b41 Author: Pedro Alves Date: Wed Jun 7 14:21:40 2017 +0100 Introduce compiled_regex, eliminate make_regfree_cleanup This patch replaces compile_rx_or_error and make_regfree_cleanup with a class that wraps a regex_t. gdb/ChangeLog: 2017-06-07 Pedro Alves * Makefile.in (SFILES): Add gdb_regex.c. (COMMON_OBS): Add gdb_regex.o. * ada-lang.c (ada_add_standard_exceptions) (ada_add_exceptions_from_frame, name_matches_regex) (ada_add_global_exceptions, ada_exceptions_list_1): Change regex parameter type to compiled_regex. Adjust. (ada_exceptions_list): Use compiled_regex. * break-catch-throw.c (exception_catchpoint::pattern): Now a std::unique_ptr. (exception_catchpoint::~exception_catchpoint): Remove regfree call. (check_status_exception_catchpoint): Adjust to use compiled_regex. (handle_gnu_v3_exceptions): Adjust to use compiled_regex. * breakpoint.c (solib_catchpoint::compiled): Now a std::unique_ptr. (solib_catchpoint::~solib_catchpoint): Remove regfree call. (check_status_catch_solib): Adjust to use compiled_regex. (add_solib_catchpoint): Adjust to use compiled_regex. * cli/cli-cmds.c (apropos_command): Use compiled_regex. * cli/cli-decode.c (apropos_cmd): Change regex parameter to compiled_regex reference. Adjust to use it. * cli/cli-decode.h: Remove struct re_pattern_buffer forward declaration. Include "gdb_regex.h". (apropos_cmd): Change regex parameter to compiled_regex reference. * gdb_regex.c: New file. * gdb_regex.h (make_regfree_cleanup, get_regcomp_error): Delete declarations. (class compiled_regex): New. * linux-tdep.c: Include "common/gdb_optional.h". (struct mapping_regexes): New, factored out from mapping_is_anonymous_p, and adjusted to use compiled_regex. (mapping_is_anonymous_p): Use mapping_regexes wrapped in a gdb::optional and remove cleanups. Adjust to compiled_regex. * probe.c: Include "common/gdb_optional.h". (collect_probes): Use compiled_regex and gdb::optional and remove cleanups. * skip.c: Include "common/gdb_optional.h". (skiplist_entry::compiled_function_regexp): Now a gdb::optional. (skiplist_entry::compiled_function_regexp_is_valid): Delete field. (free_skiplist_entry): Remove regfree call. (compile_skip_regexp, skip_rfunction_p): Adjust to use compiled_regex and gdb::optional. * symtab.c: Include "common/gdb_optional.h". (search_symbols): Use compiled_regex and gdb::optional. * utils.c (do_regfree_cleanup, make_regfree_cleanup) (get_regcomp_error, compile_rx_or_error): Delete. Some bits moved to gdb_regex.c. commit 62e20ed45e3da5f3ba695e4ee109317668180fe6 Author: Michael Collison Date: Wed Jun 7 13:34:34 2017 +0100 Add support for AArch64 system register names IP0, IP1, FP and LR. * config/tc-aarch64.c (reg_entry_reg_names): Add IP0, IP1, FP, and LR as register aliases of register 16, 17, 29 and 30 respectively. * testsuite/gas/aarch64/diagnostic.l: Remove diagnostic prohibiting register 'lr' which is now an alias. * testsuite/gas/aarch64/diagnostic.s: Remove instruction utilizing register 'lr' which is now an alias. commit 50d6adef3b8509c4e7e37b4b708e0593d43ed347 Author: Alan Hayward Date: Wed Jun 7 10:16:46 2017 +0100 Remove MAX_REGISTER_SIZE from regcache.c gdb/ * regcache.c (regcache::save): Avoid buffer use. (regcache::dump): Likewise. commit 4a8a33c843681410eeba4e05aa749abda8a8341b Author: Alan Hayward Date: Wed Jun 7 10:06:10 2017 +0100 Remove MAX_REGISTER_SIZE from sh(64)-tdep.c gdb/ * sh-tdep.c (sh_pseudo_register_read): Remove MAX_REGISTER_SIZE. (sh_pseudo_register_write): Likewise. * sh64-tdep.c (sh64_pseudo_register_read): Likewise. (sh64_pseudo_register_write): Likewise. commit d1be909e7fbf753fd3aa18681089e3bcacbcf51c Author: Alan Hayward Date: Wed Jun 7 09:57:55 2017 +0100 Remove MAX_REGISTER_SIZE from aarch64-tdep.c gdb/ * aarch64-tdep.c (aarch64_store_return_value): Use V_REGISTER_SIZE. (aarch64_pseudo_read_value): Likewise. (aarch64_pseudo_write): Likewise. commit 4936f23592b910d65cc9f077115559366f9c4662 Author: Alan Modra Date: Wed Jun 7 15:22:58 2017 +0930 Fix a number of pr21529 testcase failures Various targets fail this testcase due to ld not supporting binary output. * testsuite/ld-unique/pr21529.d: xfail aarch64, arm, hppa, ia64, nds32, and score. Match any output. commit 58f59b7616851b2f3737e385ec9095765eeeffa3 Author: GDB Administrator Date: Wed Jun 7 00:00:40 2017 +0000 Automatic date update in version.in commit 78e8a2ff5f01799874be41fdc919d34c670496c6 Author: Jose E. Marchesi Date: Tue Jun 6 11:19:06 2017 -0700 bfd: support section groups with preceding SHF_GROUP sections GAS always places section groups (SHT_GROUP) before the rest of the sections in the output file. However, other assemblers may place section groups after the group members. This patch fixes handlign such situations, and removes some duplicated logic. bfd/ChangeLog: 2017-06-06 Jose E. Marchesi * elf.c (setup_group): Make sure BFD sections are created for all group sections in the input file when processing SHF_GROUP sections. (bfd_section_from_shdr): Avoid duplicating logic already implemented in `setup_group'. commit f4a6504277d861057aedd2b88369493d644935c6 Author: Yao Qi Date: Tue Jun 6 16:42:45 2017 +0100 Remove declaration of set_register_cache from regdef.h Function set_register_cache was removed by 3aee891821f538cfb4e0a08a26196c70127f1474 ([GDBserver] Multi-process + multi-arch), so this patch removes the declaration too. gdb: 2017-06-06 Yao Qi * regformats/regdef.h (set_register_cache): Remove the declaration. commit 9f7fb0aa2b6eb9fb185c1c2ae4159d783acadc0e Author: Alan Hayward Date: Tue Jun 6 16:34:20 2017 +0100 Remove a MAX_REGISTER_SIZE from frame.c gdb/ * frame.c (frame_unwind_register_signed): Use frame_unwind_register_value. commit e1e01040aa83ddef0bb5c60a8b187f769b2b1ec3 Author: Pedro Alves Date: Tue Jun 6 15:53:59 2017 +0100 Fix double free when running gdb.linespec/ls-errs.exp (PR breakpoints/21553) The problem is that b->extra_string is free'ed twice: Once in the breakpoint's dtor, and another time via make_cleanup (xfree). This patch gets rid of the cleanups, fixing the problem. Tested on x86_64 GNU/Linux. gdb/ChangeLog: 2017-06-06 Pedro Alves PR breakpoints/21553 * breakpoint.c (create_breakpoints_sal_default) (init_breakpoint_sal, create_breakpoint_sal): Use gdb::unique_xmalloc_ptr for string parameters. (create_breakpoint): Constify 'extra_string' and 'cond_string' parameters. Replace cleanups with gdb::unique_xmalloc_ptr. (base_breakpoint_create_breakpoints_sal) (bkpt_create_breakpoints_sal, tracepoint_create_breakpoints_sal) (strace_marker_create_breakpoints_sal) (create_breakpoints_sal_default): Use gdb::unique_xmalloc_ptr for string parameters. * breakpoint.h (breakpoint_ops::create_breakpoints_sal): Use gdb::unique_xmalloc_ptr for string parameters. (create_breakpoint): Constify 'extra_string' and 'cond_string' parameters. commit fbe654c8bc78eb06b6d7ee4fcec64e9e34e7a9ac Author: Alan Hayward Date: Tue Jun 6 15:45:08 2017 +0100 Remove uses of MAX_REGISTER_SIZE from alpha-tdep.c gdb/ * alpha-tdep.c (alpha_register_to_value): Use get_frame_register_value. (alpha_value_to_register): Use ALPHA_REGISTER_SIZE. commit 9949827bea788753c29b7bb503d6d5dda6ea21ff Author: Daniel Bonniot de Ruisselet Date: Tue Jun 6 15:06:02 2017 +0100 Handle printing information about PE format files which have 0 as the value of the HInt Table in the import tables structure. PR binutils/21546 * peXXigen.c (pe_print_idata): Use the address of the first thunk if the hint address is zero. commit 5c8ed6a4a1d197658086e9175f820227ebffebec Author: Jiong Wang Date: Thu May 25 10:40:07 2017 +0100 [Patch, ARM] Relax the restrictions on REG_SP under Thumb mode on ARMv8-A For Thumb mode, since ARMv8-A, REG_SP is allowed in most of the places in Rd/Rt/Rt2 etc while it was disallowed before ARMv8-A, and was rejected through the "reject_bad_reg" macro and several scattered checks. This patch only rejects REG_SP in "reject_bad_reg" and several related places for legacy architectures before ARMv8-A. I have checked those affected instructions , all of them qualify such relaxations. Testcases adjusted accordingly. * ld-sp-warn.d was written without .arch and without -march options passed. By default it assumes all architectures, so I deleted the REG_SP warning on ldrsb as it's supported on ARMv8-A. There are actually quite a few seperate tests on other architectures, for example ld-sp-warn-v7.l etc., so there the test for ldrsb on legacy architectures are still covered. * sp-pc-validations-bad-t has been extended to armv8-a. * strex-bad-t.d restricted on armv7-a. * Some new tests for REG_SP used as Rd/Rt etc added in sp-usage-thumb2-relax*. gas/ * config/tc-arm.c (reject_bad_reg): Allow REG_SP on ARMv8-A. (parse_operands): Allow REG_SP for OP_oRRnpcsp and OP_RRnpcsp on ARMv8-A. (do_co_reg): Allow REG_SP for Rd on ARMv8-A. (do_t_add_sub): Likewise. (do_t_mov_cmp): Likewise. (do_t_tb): Likewise. * testsuite/gas/arm/ld-sp-warn.l: Delete the warning on REG_SP as Rt for ldrsb. * testsuite/gas/arm/sp-pc-validations-bad-t-v8a.d: New test. * testsuite/gas/arm/sp-pc-validations-bad-t-v8a.l: New test. * testsuite/gas/arm/sp-pc-validations-bad-t.d: Specifies -march=armv7-a. * testsuite/gas/arm/sp-pc-validations-bad-t.s: Remove ".arch armv7-a". * testsuite/gas/arm/sp-usage-thumb2-relax-on-v7.d: New test. * testsuite/gas/arm/sp-usage-thumb2-relax-on-v7.l: New test. * testsuite/gas/arm/sp-usage-thumb2-relax-on-v8.d: New test. * testsuite/gas/arm/sp-usage-thumb2-relax.s: New test. * testsuite/gas/arm/strex-bad-t.d: Specifies -march=armv7-a. commit d24b756188bd63a422671a73e31af718007264ca Author: Simon Marchi Date: Tue Jun 6 14:52:31 2017 +0100 Fix memory leaks in the sysinfo program. * sysinfo.y: Free memory allocated by token NAME. commit 0ee3a6dbd06b88a4e02f3f46c3ec036fd951400b Author: James Clarke Date: Tue Jun 6 14:30:47 2017 +0100 Fix AArch64 in the same way as other targets updated in 8170f7693bc0a9442c0aa280197925db92d48ca6. PR ld/19579 * elfnn-aarch64.c (elfNN_aarch64_finish_dynamic_symbol): Check ELF_COMMON_DEF_P for common symbols. commit ae0d01d663a2bac65afb8b94bbf1a91d95298f68 Author: Alan Hayward Date: Tue Jun 6 13:50:07 2017 +0100 Add IA64_MAX_FP_REGISTER_SIZE gdb/ * ia64-tdep.c (IA64_MAX_FP_REGISTER_SIZE) Add. (ia64_register_to_value): Use IA64_MAX_FP_REGISTER_SIZE. (ia64_value_to_register): Likewise. (ia64_extract_return_value): Likewise. (ia64_store_return_value): Likewise. (ia64_push_dummy_call): Likewise. commit 670b1a13351f34c38ea1abb6cb20e247fb002015 Author: Andrew Burgess Date: Tue Jun 6 10:15:27 2017 +0100 ld: Fix spelling mistake in comment. ld/ChangeLog: * ld.h (struct args_type): Fix typo in comment. commit 7bdf4127c38081c7764c0bf1db55d0b2e56391dc Author: Andrew Burgess Date: Wed Mar 22 17:27:49 2017 +0000 ld: Allow section groups to be resolved as part of a relocatable link This commit adds a new linker feature: the ability to resolve section groups as part of a relocatable link. Currently section groups are automatically resolved when performing a final link, and are carried through when performing a relocatable link. By carried through this means that one copy of each section group (from all the copies that might be found in all the input files) is placed into the output file. Sections that are part of a section group will not match input section specifiers within a linker script and are forcibly kept as separate sections. There is a slight resemblance between section groups and common section. Like section groups, common sections are carried through when performing a relocatable link, and resolved (allocated actual space) only at final link time. However, with common sections there is an ability to force the linker to allocate space for the common sections when performing a relocatable link, there's currently no such ability for section groups. This commit adds such a mechanism. This new facility can be accessed in two ways, first there's a command line switch --force-group-allocation, second, there's a new linker script command FORCE_GROUP_ALLOCATION. If one of these is used when performing a relocatable link then the linker will resolve the section groups as though it were performing a final link, the section group will be deleted, and the members of the group will be placed like normal input sections. If there are multiple copies of the group (from multiple input files) then only one copy of the group members will be placed, the duplicate copies will be discarded. Unlike common sections that have the --no-define-common command line flag, and INHIBIT_COMMON_ALLOCATION linker script command there is no way to prevent group resolution during a final link, this is because the ELF gABI specifically prohibits the presence of SHT_GROUP sections in a fully linked executable. However, the code as written should make adding such a feature trivial, setting the new resolve_section_groups flag to false during a final link should work as you'd expect. bfd/ChangeLog: * elf.c (_bfd_elf_make_section_from_shdr): Don't initially mark SEC_GROUP sections as SEC_EXCLUDE. (bfd_elf_set_group_contents): Replace use of abort with an assert. (assign_section_numbers): Use resolve_section_groups flag instead of relocatable link type. (_bfd_elf_init_private_section_data): Use resolve_section_groups flag instead of checking the final_link flag for part of the checks in here. Fix white space as a result. * elflink.c (elf_link_input_bfd): Use resolve_section_groups flag instead of relocatable link type. (bfd_elf_final_link): Likewise. include/ChangeLog: * bfdlink.h (struct bfd_link_info): Add new resolve_section_groups flag. ld/ChangeLog: * ld.h (struct args_type): Add force_group_allocation field. * ldgram.y: Add support for FORCE_GROUP_ALLOCATION. * ldlex.h: Likewise. * ldlex.l: Likewise. * lexsup.c: Likewise. * ldlang.c (unique_section_p): Check resolve_section_groups flag not the relaxable link flag. (lang_add_section): Discard section groups when we're resolving groups. Clear the SEC_LINK_ONCE flag if we're resolving section groups. * ldmain.c (main): Initialise resolve_section_groups flag in link_info based on command line flags. * testsuite/ld-elf/group11.d: New file. * testsuite/ld-elf/group12.d: New file. * testsuite/ld-elf/group12.ld: New file. * NEWS: Mention new features. * ld.texinfo (Options): Document --force-group-allocation. (Miscellaneous Commands): Document FORCE_GROUP_ALLOCATION. commit 458ad2b83ecf4d764703767bccf19723ca741f00 Author: Jose E. Marchesi Date: Tue Jun 6 00:33:20 2017 -0700 bfd: remove unused local variables in elf32-score, elf32-score7 and elfxx-mips bfd/ChangeLog: 2017-06-06 Jose E. Marchesi * elfxx-mips.c (_bfd_mips_elf_relocate_section): Remove unused variable `bed'. * elf32-score.c (score_elf_final_link_relocate): Likewise. (s3_bfd_score_elf_check_relocs): Likewise. * elf32-score7.c (s7_bfd_score_elf_relocate_section): Likewise. (score_elf_final_link_relocate): Likewise. (s7_bfd_score_elf_check_relocs): Likewise. commit fbebaf4a56dd03251bc2e12fa6834d90555aa82a Author: Jose E. Marchesi Date: Tue Jun 6 00:01:58 2017 -0700 bfd: remove unused local variable in elflink.c:init_reloc_cookie_rels bfd/ChangeLog: 2017-06-06 Jose E. Marchesi * elflink.c (init_reloc_cookie_rels): Remove unused variable `bed'. commit 056bafd472efccfb2d7f44f6469dfa08cdf7414b Author: Maciej W. Rozycki Date: Tue Jun 6 01:24:06 2017 +0100 ELF/BFD: Hold the number of internal static relocs in `->reloc_count' Correct a commit e5713223cbc1 ("MIPS/BFD: For n64 hold the number of internal relocs in `->reloc_count'") regression and change internal relocation handling in the generic ELF BFD linker code such that, except in the presence of R_SPARC_OLO10 relocations, a section's `reloc_count' holds the number of internal rather than external relocations, making the handling more consistent between GAS, which sets `->reloc_count' with a call to `bfd_set_reloc', and LD, which sets `->reloc_count' as it reads input sections. The handling of dynamic relocations remains unchanged and they continue holding the number of external relocations in `->reloc_count'; they are also not converted to the internal form except in `elf_link_sort_relocs' (which does not handle the general, i.e. non-n64-MIPS case of composed relocations correctly as per the ELF gABI, though it does not seem to matter for the targets we currently support). The n64 MIPS backend is the only one with `int_rels_per_ext_rel' set to non-one, and consequently the change is trivial for all the remaining backends and targets. bfd/ * elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Subtract `count' from `reloc_count' rather than decrementing it. * elf.c (bfd_section_from_shdr): Multiply the adjustment to `reloc_count' by `int_rels_per_ext_rel'. * elf32-score.c (score_elf_final_link_relocate): Do not multiply `reloc_count' by `int_rels_per_ext_rel' for last relocation entry determination. (s3_bfd_score_elf_check_relocs): Likewise. * elf32-score7.c (score_elf_final_link_relocate): Likewise. (s7_bfd_score_elf_relocate_section): Likewise. (s7_bfd_score_elf_check_relocs): Likewise. * elf64-mips.c (mips_elf64_get_reloc_upper_bound): Remove prototype and function. (mips_elf64_slurp_one_reloc_table): Do not update `reloc_count'. (mips_elf64_slurp_reloc_table): Assert that `reloc_count' is triple rather than once the sum of REL and RELA relocation entry counts. (bfd_elf64_get_reloc_upper_bound): Remove macro. * elflink.c (_bfd_elf_link_read_relocs): Do not multiply `reloc_count' by `int_rels_per_ext_rel' for internal relocation storage allocation size determination. (elf_link_input_bfd): Multiply `.ctors' and `.dtors' section's size by `int_rels_per_ext_rel'. Do not multiply `reloc_count' by `int_rels_per_ext_rel' for last relocation entry determination. (bfd_elf_final_link): Do not multiply `reloc_count' by `int_rels_per_ext_rel' for internal relocation storage allocation size determination. (init_reloc_cookie_rels): Do not multiply `reloc_count' by `int_rels_per_ext_rel' for last relocation entry determination. (elf_gc_smash_unused_vtentry_relocs): Likewise. * elfxx-mips.c (_bfd_mips_elf_check_relocs): Likewise. (_bfd_mips_elf_relocate_section): Likewise. commit 61756f84eedc470c975f8bafe6ddf10acaca6942 Author: Jim Wilson Date: Mon Jun 5 17:25:02 2017 -0700 Drop arm support for falkor/qdf24xx targets, not present in released hardware. gas/ * config/tc-arm.c (arm_cpus): Delete falkor and qdf24xx entries. * doc/c-arm.texi (-mcpu): Likewise. commit a6ba6751c9cf5ef909e47d09609c28ad1509dfa9 Author: GDB Administrator Date: Tue Jun 6 00:00:35 2017 +0000 Automatic date update in version.in commit d9409498813c75c1a9e9287ac6e5100ed3130390 Author: H.J. Lu Date: Mon Jun 5 14:54:12 2017 -0700 Add a testcase for PR ld/21529 PR ld/21529 * testsuite/ld-unique/pr21529.d: New file. * testsuite/ld-unique/pr21529.s: Likewise. * testsuite/ld-unique/unique.exp: Run *.d. commit af54f0eb968ba8cb3862fd3cad097a3f3363467b Author: Alan Modra Date: Mon Jun 5 11:02:42 2017 +0930 PR21529, internal error in linker.c PR 21529 * linker.c (_bfd_generic_link_output_symbols): Handle BSF_GNU_UNIQUE. commit 91001320a22466d1580e169bcb023d3b822226b4 Author: Alan Modra Date: Mon Jun 5 14:43:54 2017 +0930 Fix --enable-new-dtags config support and testsuite when configured with --enable-new-dtags. * ldmain.c (main): Correct setting of link_indo.new_dtags. * testsuite/ld-elf/now-3.d: Pass --disable-new-dtags to ld * testsuite/ld-elf/now-4.d: Likewise. * testsuite/ld-elf/rpath-1.d: Likewise. * testsuite/ld-elf/rpath-2.d: Likewise. commit 6734f10ae9af6cfd47e70baa2cd3e326afabe5ed Author: Slava Barinov Date: Mon Jun 5 09:27:38 2017 +0930 Introduce --enable-new-dtags configure option. This option switches on ld.bfd --enable-new-dtags by default. * configure.ac: Add --enable-new-dtags option. * ldmain.c: Set link_info.new_dtags to 1 if when --enable-new-dtags is switched on. * configure: Regenerate. * config.in: Regenerate. commit 3ea0007c8ca3ec851df6ab5391a98467b4021f92 Author: GDB Administrator Date: Mon Jun 5 00:00:50 2017 +0000 Automatic date update in version.in commit 49cf576c221b1d45d222f8cddaddbddf29336461 Author: Joel Brobecker Date: Sun Jun 4 09:04:09 2017 -0700 Document the GDB 8.0 release in gdb/ChangeLog gdb/ChangeLog: GDB 8.0 released. commit 923ca33982401c5700421a592d2b0ee083cbefa1 Author: GDB Administrator Date: Sun Jun 4 00:00:42 2017 +0000 Automatic date update in version.in commit 26b6a6aba5567143ed0f59388663b8f50e5cfcab Author: Simon Marchi Date: Sat Jun 3 22:06:55 2017 +0200 x86-linux-nat: Remove unused arch_lwp_info structure The structure arch_lwp_info for x86 is not used, remove it. gdb/ChangeLog: * x86-linux-nat.c (struct arch_lwp_info): Remove. commit 22827c51338ce25574ed7b204a2e5bd40f45bdad Author: Simon Marchi Date: Sat Jun 3 21:24:00 2017 +0200 linux-nat: Remove unused parameter The parameter "first" of linux_nat_post_attach_wait is unused, remove it. gdb/ChangeLog: * linux-nat.c (linux_nat_post_attach_wait): Remove FIRST parameter. (linux_nat_attach): Adjust call to linux_nat_post_attach_wait. commit 0af6b29b9dcd8ff2c34d07a76e3416acf3758bfc Author: GDB Administrator Date: Sat Jun 3 00:00:36 2017 +0000 Automatic date update in version.in commit 4a4a4a27ba5c731044d3d3594545e6f06b0ec0e5 Author: H.J. Lu Date: Fri Jun 2 14:49:37 2017 -0700 x86: Remove linker option: -z prefix-nop Since it is incorrect to convert bnd call *foo@GOTPCREL(%rip) to bnd nop call foo this patch removes the "-z prefix-nop" option from x86 linker. * emulparams/call_nop.sh: Remove -z prefix-nop. * ld.texinfo: Likewise. * testsuite/ld-i386/call3c.d: Check for linker error. * testsuite/ld-x86-64/call1c.d: Likewise. commit 0e05cf3a61e1996829359e1c32eedb6820930331 Author: Simon Marchi Date: Fri Jun 2 23:24:21 2017 +0200 Use delete instead of xfree for gdb_timer gdb_timer objects are new'ed in create_timer, but xfree'd in poll_timers. Use delete instead. gdb/ChangeLog: * event-loop.c (poll_timers): Unallocate timer using delete instead of xfree. commit c1fc2657206188767cb66813d07b9ecbb5e9ec51 Author: Simon Marchi Date: Fri Jun 2 23:16:21 2017 +0200 C++ify breakpoint class hierarchy (destructors only) Breakpoints are currently in a limbo state between C and C++. There is a pseudo class hierarchy implemented using struct fields. Taking watchpoint as an example: struct watchpoint { /* The base class. */ struct breakpoint base; ... } and it is instantianted with "new watchpoint ()". When destroyed, a destructor is first invoked through the breakpoint_ops, and then the memory is freed by calling delete through a pointer to breakpoint. Address sanitizer complains about this, for example, because we new and delete the same memory using different types. This patch takes the logical step of making breakpoint subclasses extend the breakpoint class for real, and converts their destructors to actual C++ destructors. Regtested on the buildbot. gdb/ChangeLog: * breakpoint.h (struct breakpoint_ops) : Remove. (struct breakpoint) <~breakpoint>: New. (struct watchpoint): Inherit from breakpoint. <~watchpoint>: New. : Remove. (struct tracepoint): Inherit from breakpoint. : Remove. * breakpoint.c (longjmp_breakpoint_ops): Remove. (struct longjmp_breakpoint): Inherit from breakpoint. <~longjmp_breakpoint>: New. : Remove. (new_breakpoint_from_type): Remove casts. (watchpoint_in_thread_scope): Remove reference to base field. (watchpoint_del_at_next_stop): Likewise. (update_watchpoint): Likewise. (watchpoint_check): Likewise. (bpstat_check_watchpoint): Likewise. (set_longjmp_breakpoint): Likewise. (struct fork_catchpoint): Inherit from breakpoint. : Remove. (struct solib_catchpoint): Inherit from breakpoint. <~solib_catchpoint>: New. : Remove. (dtor_catch_solib): Change to ... (solib_catchpoint::~solib_catchpoint): ... this. (breakpoint_hit_catch_solib): Remove reference to base field. (add_solib_catchpoint): Likewise. (create_fork_vfork_event_catchpoint): Likewise. (struct exec_catchpoint): Inherit from breakpoint. <~exec_catchpoint>: New. : Remove. (dtor_catch_exec): Change to ... (exec_catchpoint::~exec_catchpoint): ... this. (dtor_watchpoint): Change to ... (watchpoint::~watchpoint): ... this. (watch_command_1): Remove reference to base field. (catch_exec_command_1): Likewise. (base_breakpoint_dtor): Change to ... (breakpoint::~breakpoint): ... this. (base_breakpoint_ops): Remove dtor field value. (longjmp_bkpt_dtor): Change to ... (longjmp_breakpoint::~longjmp_breakpoint): ... this. (strace_marker_create_breakpoints_sal): Remove reference to base field. (delete_breakpoint): Don't manually call breakpoint destructor. (create_tracepoint_from_upload): Remove reference to base field. (trace_pass_set_count): Likewise. (initialize_breakpoint_ops): Don't initialize momentary_breakpoint_ops, don't set dtors. * ada-lang.c (struct ada_catchpoint): Inherit from breakpoint. <~ada_catchpoint>: New. : Remove. (create_excep_cond_exprs): Remove reference to base field. (dtor_exception): Change to ... (ada_catchpoint::~ada_catchpoint): ... this. (dtor_catch_exception): Remove. (dtor_catch_exception_unhandled): Remove. (dtor_catch_assert): Remove. (create_ada_exception_catchpoint): Remove reference to base field. (initialize_ada_catchpoint_ops): Don't set dtors. * break-catch-sig.c (struct signal_catchpoint): Inherit from breakpoint. <~signal_catchpoint>: New. : Remove. (signal_catchpoint_dtor): Change to ... (signal_catchpoint::~signal_catchpoint): ... this. (create_signal_catchpoint): Remove reference to base field. (initialize_signal_catchpoint_ops): Don't set dtor. * break-catch-syscall.c (struct syscall_catchpoint): Inherit from breakpoint. <~syscall_catchpoint>: New. : Remove. (dtor_catch_syscall): Change to ... (syscall_catchpoint::~syscall_catchpoint): ... this. (create_syscall_event_catchpoint): Remove reference to base field. (initialize_syscall_catchpoint_ops): Don't set dtor. * break-catch-throw.c (struct exception_catchpoint): Inherit from breakpoint. <~exception_catchpoint>: New. : Remove. (dtor_exception_catchpoint): Change to ... (exception_catchpoint::~exception_catchpoint): ... this. (handle_gnu_v3_exceptions): Remove reference to base field. (initialize_throw_catchpoint_ops): Don't set dtor. * ctf.c (ctf_get_traceframe_address): Remove reference to base field. * remote.c (remote_get_tracepoint_status): Likewise. * tracefile-tfile.c (tfile_get_traceframe_address): Likewise. * tracefile.c (tracefile_fetch_registers): Likewise. * tracepoint.c (actions_command): Likewise. (validate_actionline): Likewise. (tfind_1): Likewise. (get_traceframe_location): Likewise. (find_matching_tracepoint_location): Likewise. (parse_tracepoint_status): Likewise. * mi/mi-cmd-break.c (mi_cmd_break_passcount): Likewise. commit 3b0871f44a3402f4e1e811ae81c8ba1293c1c7be Author: Simon Marchi Date: Fri Jun 2 23:16:20 2017 +0200 Create struct type for longjmp breakpoint The longjmp kind of breakpoint has a destructor, but doesn't have an associated structure. The next patch converts breakpoint destructors from breakpoint_ops::dtor to actual destructors, but to do that it is needed for longjmp_breakpoint to have a structure that will contain such destructor. This patch adds it. According to initialize_breakpoint_ops, a longjmp breakpoint derives from "momentary breakpoints", so eventually a momentary_breakpoint struct/class should probably be created. It's not necessary for the destructor though, so a structure type for this abstract kind of breakpoint can be added when we fully convert breakpoint ops into methods of the breakpoint type hierarchy. It is now necessary to instantiate different kinds of breakpoint objects in set_raw_breakpoint_without_location based on bptype (sometimes a breakpoint, sometimes a longjmp_breakpoint), so it now uses new_breakpoint_from_type to do that. I also changed set_raw_breakpoint to use it, even though I don't think that it can ever receive a bptype that actually requires it. However, I think it's good if all breakpoint object instantion is done in a single place. gdb/ChangeLog: * breakpoint.c (struct longjmp_breakpoint): New struct. (is_tracepoint_type): Change return type to bool. (is_longjmp_type): New function. (new_breakpoint_from_type): Handle longjmp kinds of breakpoints. (set_raw_breakpoint_without_location): Use new_breakpoint_from_type. (set_raw_breakpoint): Likewise. commit a5e364af4a3d745bb79cfc9a1d533632d4d04b57 Author: Simon Marchi Date: Fri Jun 2 23:16:19 2017 +0200 Introduce and use new_breakpoint_from_type This is a small preparatory patch to factor out a snippet that appears twice. More kinds of breakpoints will need to be created based on bptype, so I think it's a good idea to centralize the instantiation of breakpoint objects. gdb/ChangeLog: * breakpoint.c (new_breakpoint_from_type): New function. (create_breakpoint_sal): Use new_breakpoint_from_type and unique_ptr. (create_breakpoint): Likewise. commit e7cd2680e089327e7fefaf1cf5a58ec09e379f0d Author: Michael Eager Date: Fri Jun 2 08:04:59 2017 -0700 Correct check for endianness * interp.c: (target_big_endian): target endianess recognition fix. commit 0efdc7237e8eb2c75b9c74bc60175ef50719b8b8 Author: GDB Administrator Date: Fri Jun 2 00:00:23 2017 +0000 Automatic date update in version.in commit 6cf3bf8875d84aff854fe5fe5a04141033d5ee6f Author: John Baldwin Date: Thu Jun 1 09:47:31 2017 -0700 Correct ChangeLog entry date. commit b5430a3ced5fe5ba484bd9b3215b9ae19ced0160 Author: John Baldwin Date: Thu Jun 1 09:40:46 2017 -0700 Use the ELF class to determine the word size for FreeBSD core notes. FreeBSD ELF cores contain data structures with that have two different layouts: one for ILP32 platforms and a second for LP64 platforms. Previously, the code used 'bits_per_word' from 'arch_info', but this field is not a reliable indicator of the format for FreeBSD MIPS cores in particular. I had originally posted this patch back in November because process cores for FreeBSD MIPS contained an e_flags value of 0 in the header which resulted in a bfd_arch which always had 'bits_per_word' set to 32. This permitted reading o32 cores, but not n64 cores. The feedback I received then was to try to change n64 cores to use a different default bfd_arch that had a 64-bit 'bits_per_word' when e_flags was zero. I submitted a patch to that effect but it was never approved. Instead, I changed FreeBSD's kernel and gcore commands to preserve the e_flags field from an executable when generating process cores. With a proper e_flags field in process cores, n64 cores now use a 64-bit bfd_arch and now work fine. However, the change to include e_flags in the process cores had the unintended side effect of breaking handling of o32 process cores. Specifically, FreeBSD MIPS builds o32 with a default MIPS architecture of 'mips3', thus FreeBSD process cores with a non-zero e_flags match the 'mips3' bfd_arch which has 64 'bits_per_word'. From this, it seems that 'bits_per_word' for FreeBSD MIPS is not likely to ever be completely correct. However, FreeBSD core dumps do reliably set the ELF class to ELFCLASS32 for cores using ILP32 and ELFCLASS64 for cores using LP64. As such, I think my original patch of using the ELF class instead of 'bits_per_word' is probably the simplest and most reliable approach for detecting the note structure layout. bfd/ChangeLog: * elf.c (elfcore_grok_freebsd_psinfo): Use ELF header class to determine structure sizes. (elfcore_grok_freebsd_prstatus): Likewise. commit f378ab099d535f5540f292fed07fcf4b1fabd314 Author: Alan Modra Date: Fri May 26 10:02:29 2017 +0930 PPC64_OPT_LOCALENTRY ELFv2 functions with localentry:0 are those with a single entry point, ie. global entry == local entry, and that have no requirement on r2 or r12, and guarantee r2 is unchanged on return. Such an external function can be called via the PLT without saving r2 or restoring it on return, avoiding a common load-hit-store for small functions. The optimization is attractive. The TOC pointer load-hit-store is a major reason why calls to small functions that need no register saves, or with shrink-wrap, no register saves on a fast path, are slow on powerpc64le. To be safe, this optimization needs ld.so support to check that the run-time matches link-time function implementation. If a function in a shared library with st_other localentry non-zero is called without saving and restoring r2, r2 will be trashed on return, leading to segfaults. For that reason the optimization does not happen for weak functions since a weak definition is a fairly solid hint that the function will likely be overridden. I'm also not enabling the optimization by default unless glibc-2.26 is detected, which should have the ld.so checks implemented. bfd/ * elf64-ppc.c (struct ppc_link_hash_table): Add has_plt_localentry0. (ppc64_elf_merge_symbol_attribute): Merge localentry bits from dynamic objects. (is_elfv2_localentry0): New function. (ppc64_elf_tls_setup): Default params->plt_localentry0. (plt_stub_size): Adjust size for tls_get_addr_opt stub. (build_tls_get_addr_stub): Use a simpler stub when r2 is not saved. (ppc64_elf_size_stubs): Leave stub_type as ppc_stub_plt_call for optimized localentry:0 stubs. (ppc64_elf_build_stubs): Save r2 in ELFv2 __glink_PLTresolve. (ppc64_elf_relocate_section): Leave nop unchanged for optimized localentry:0 stubs. (ppc64_elf_finish_dynamic_sections): Set PPC64_OPT_LOCALENTRY in DT_PPC64_OPT. * elf64-ppc.h (struct ppc64_elf_params): Add plt_localentry0. include/ * elf/ppc64.h (PPC64_OPT_LOCALENTRY): Define. ld/ * emultempl/ppc64elf.em (params): Init plt_localentry0 field. (enum ppc64_opt): New, replacing OPTION_* defines. Add OPTION_PLT_LOCALENTRY, and OPTION_NO_PLT_LOCALENTRY. (PARSE_AND_LIST_*): Support --plt-localentry and --no-plt-localentry. * testsuite/ld-powerpc/elfv2so.d: Update. * testsuite/ld-powerpc/powerpc.exp (TLS opt 5): Use --no-plt-localentry. * testsuite/ld-powerpc/tlsopt5.d: Update. commit 19fb31c0060f646a9f84be1a84ed1bea04e7ed57 Author: Andreas Krebbel Date: Thu Jun 1 13:46:15 2017 +0200 S/390: idte/ipte fixes Later CPU generations added optional operands to the ipte/idte instructions. I've added these with: https://sourceware.org/ml/binutils/2017-05/msg00316.html ... but supported the optional operands only with the specific hardware levels. However, it is more useful to have the optional operands already in the first versions. Of course they need to be zero there. Regression-tested with on s390 and s390x. Committed to mainline. Bye, -Andreas- opcodes/ChangeLog: 2017-06-01 Andreas Krebbel * s390-opc.txt: Support the optional parameters with the first versions of ipte/idte. gas/ChangeLog: 2017-06-01 Andreas Krebbel * testsuite/gas/s390/esa-g5.d: Add ipte tests. * testsuite/gas/s390/esa-g5.s: Likewise. * testsuite/gas/s390/zarch-z196.d: Remove ipte tests. * testsuite/gas/s390/zarch-z196.s: Likewise. * testsuite/gas/s390/zarch-z990.d: Add idte tests. * testsuite/gas/s390/zarch-z990.s: Likewise. * testsuite/gas/s390/zarch-zEC12.d: Remove ipte/idte tests. * testsuite/gas/s390/zarch-zEC12.s: Likewise. commit 580dfe9d4cb936535927fb954bdc96a2320c6244 Author: GDB Administrator Date: Thu Jun 1 00:00:46 2017 +0000 Automatic date update in version.in commit ae3b3f34ed96f121af37018b8ff3a78810881ad8 Author: Simon Marchi Date: Wed May 31 17:09:07 2017 +0200 Rename "mem" related commmands Rename "mem" related commands, so that their naming is consistent with the _command pattern of naming functions that implement commands. gdb/ChangeLog: * memattr.c (mem_info_command): Rename to ... (info_mem_command): ... this. (mem_enable_command): Rename to ... (enable_mem_command): ... this. (mem_disable_command): Rename to ... (disable_mem_command): ... this. (mem_delete_command): Rename to ... (delete_mem_command): ... this. (_initialize_mem): Adjust function names. commit ab12fca3906c9c76ec25a9de52f5142f5736413f Author: Alan Modra Date: Wed May 31 18:10:01 2017 +0930 PowerPC64 ld help quoting * emultempl/ppc64elf.em (plt-static-chain help): Fix quoting. commit 13ace07792fa75aa276e2d7c3cb03cec117d63a4 Author: Markus Metzger Date: Mon Nov 21 14:27:57 2016 +0100 btrace: support decoder events Newer versions of libipt support instruction flow decoder events instead of indicating those events with flags in struct pt_insn. Add support for them in GDB. gdb/ * btrace.c (handle_pt_insn_events): New. (ftrace_add_pt): Call handle_pt_insn_events. Rename ERRCODE into STATUS. Split into this and ... (handle_pt_insn_event_flags): ... this. commit c56ccc05b2c98510f360d7f454f38169eb3bdb06 Author: Markus Metzger Date: Mon Nov 21 11:46:15 2016 +0100 config, btrace: check for pt_insn_event in libipt Version 2 of libipt adds an event system to instruction flow decoders and deprecates indicating events via flags in struct pt_insn. Add configuration checks to determine which version we have. gdb/ * configure.ac: Check for pt_insn_event, struct pt_insn.enabled, and struct pt_insn.resynced. * configure: Regenerated. * config.in: Regenerated. commit 5b4a1ff337973732ff9a5ad9b1cb84d74a7e6185 Author: Eli Zaretskii Date: Wed May 31 09:44:08 2017 +0300 Avoid compilation warning on MinGW in xstrndup libiberty/ChangeLog: 2017-05-31 DJ Delorie * configure.ac (strnlen): Add to AC_CHECK_DECLS. * configure: Likewise. * config.in: Add HACE_DECL_STRNLEN. commit 90b4491842980d57a0e572167a168e04a476bca5 Author: Eli Zaretskii Date: Wed May 31 09:37:48 2017 +0300 Make libiberty/waitpid.c compile without warnings on MinGW libiberty/ChangeLog: 2017-05-31 Eli Zaretskii * waitpid.c (wait) [__MINGW32__]: Define as a macro that calls _cwait, so that this function works on MinGW. commit b9c6833008dfb3c45354f4e810e631a77f3c9cb3 Author: Eli Zaretskii Date: Wed May 31 09:35:07 2017 +0300 Fix MinGW compilation warnings due to environ.h include/ChangeLog: 2017-05-31 Eli Zaretskii * environ.h: Add #ifndef guard. commit 1b1810b5e01968cdfc16d537b4d5c27adab8a173 Author: GDB Administrator Date: Wed May 31 00:00:41 2017 +0000 Automatic date update in version.in commit 8c65b54f18c03ffb844e1cbaa3b46b43444ff9e7 Author: Casey Smith Date: Tue May 30 15:07:56 2017 +0100 Fix calculation of R_ARM_RHM_ALU_PREL_11_0 relocation when used with a SUB instruction. PR ld/21523 * elf32-arm.c (elf32_arm_final_link_relocate): Install an absolute value when processing the R_ARM_THM_ALU_PREL_11_0 reloc. commit 10045478d984f9924cb945423388ba25b7dd3ffe Author: Anton Kolesov Date: Thu Mar 16 15:21:31 2017 +0300 [ARC] Allow CPU to be enforced via disassemble_info options Currently print_insn_arc relies on BFD mach and ELF private headers to distinguish between various ARC architectures. Sometimes those values are not correct or available, mainly in the case of debugging targets without and ELF file available. Changing a BFD mach is not a problem for the debugger, because this is a generic BFD field, and GDB, for example, already sets it according to information provided in XML target description or specified via GDB 'set arch' command. However, things are more complicated for ELF private headers, since it requires existing of an actual ELF file. To workaround this problem this patch allows CPU model to be specified via disassemble info options. If CPU is specified in options, then it will take a higher precedence than whatever might be specified in ELF file. This is mostly needed for ARC EM and ARC HS, because they have the same "architecture" (mach) ARCv2 and differ in their private ELF headers. Other ARC architectures can be distinguished between each other purely via "mach" field. Proposed disassemble option format is "cpu=", where CPU can be any valid ARC CPU name as supported by GAS. Note that this creates a seeming redundancy with objdump -m/--architecture option, however -mEM and -mHS still result in "ARCv2" architecture internally, while -Mcpu={HS,EM} would have an actual effect on disassembler. opcodes/ChangeLog: yyyy-mm-dd Anton Kolesov * arc-dis.c (enforced_isa_mask): Declare. (cpu_types): Likewise. (parse_cpu_option): New function. (parse_disassembler_options): Use it. (print_insn_arc): Use enforced_isa_mask. (print_arc_disassembler_options): Document new options. binutils/ChangeLog: yyyy-mm-dd Anton Kolesov * doc/binutils.texi: Document new cpu=... disassembler options for ARC. commit 940171d08654a9ff5bf9b8886f76e8189a02cf09 Author: Anton Kolesov Date: Fri Apr 7 17:22:39 2017 +0300 [ARC] Add arc-cpu.def with processor definitions This patch extracts ARC CPU definitions from gas/config/tc-arc.c (cpu_types) into a separate file arc-cpu.def. This will allow reuse of CPU type definition in multiple places where it might be needed, for example in disassembler. This will help ensure that gas and disassembker use same option values for CPUs. arc-cpu.def file relies on preprocessor macroses which are defined somewhere else. This for example multiple C files to include arc-cpu.def, but define different macroses, therefore creating different structures. include/ChangeLog: yyyy-mm-dd Anton Kolesov * elf/arc-cpu.def: New file. gas/ChangeLog: yyyy-mm-dd Anton Kolesov * config/tc-arc.c (cpu_types): Include arc-cpu.def Signed-off-by: Anton Kolesov commit 64984c22f7045d53590f816e7ba0b9b9fa1dbbe7 Author: Anton Kolesov Date: Fri Mar 17 18:37:42 2017 +0300 [ARC] Implement compatible function for ARC BFD architectures The general rule for bfd_arch_info_type->compatible (A, B) is that if A and B are compatible, then this function should return architecture that is more "feature-rich", that is, can run both A and B. ARCv2, EM and HS all has same mach number, so bfd_default_compatible assumes they are the same, and returns an A. That causes issues with GDB, because GDB assumes that if machines are compatible, then "compatible ()" always returns same machine regardless of argument order. As a result GDB gets confused because, for example, compatible(ARCv2, EM) returns ARCv2, but compatible(EM, ARCv2) returns EM, hence GDB is not sure if they are compatible and prints a warning. bfd/ChangeLog: yyyy-mm-dd Anton Kolesov Anton.Kolesov@synopsys.com cpu-arc.c (arc_compatible): New function. commit 37cd38778dfb73d28e533fd1ddabb88b4b3a5771 Author: Anton Kolesov Date: Fri Mar 17 16:43:31 2017 +0300 [ARC] Remove duplicate ARC600 entry ARC600 is already defined as the head of the bfd_arch_arc. bfd/ChangeLog: yyyy-mm-dd Anton Kolesov * cpu-arc.c (arch_info_struct): Remove duplicate ARC600 entry. commit 8e2f54bcee7e3e8315d4a39a302eaf8e4389e07d Author: H.J. Lu Date: Tue May 30 06:34:05 2017 -0700 Add bfd_get_file_size to get archive element size We can't use stat() to get archive element size. Add bfd_get_file_size to get size for both normal files and archive elements. bfd/ PR binutils/21519 * bfdio.c (bfd_get_file_size): New function. * bfd-in2.h: Regenerated. binutils/ PR binutils/21519 * objdump.c (dump_relocs_in_section): Replace get_file_size with bfd_get_file_size to get archive element size. * testsuite/binutils-all/objdump.exp (test_objdump_f): New proc. (test_objdump_h): Likewise. (test_objdump_t): Likewise. (test_objdump_r): Likewise. (test_objdump_s): Likewise. Add objdump tests on archive. commit 08c3f6d234761d92b50d3c56d3cb4b82fdd58c77 Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Store function segments as objects. commit 8ffd39f2e42151b383616923ae922e697273ec8e Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Remove bfun_s vector. commit 4aeb0dfcc42acfc108d3f870384d1719adc9569b Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Replace struct btrace_function::segment. This used to hold a pair of pointers to the previous and next function segment that belong to this function call. Replace with a pair of indices into the vector of function segments. commit eb8f2b9c44619eecdb3b77da01da910fcf05abed Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Remove struct btrace_function::flow. This used to hold a pair of pointers to the previous and next function segment in execution flow order. It is no longer necessary as the previous and next function segments now are simply the previous and next elements in the vector of function segments. commit 42bfe59e3a3fef26be6809168756f40740fac1d0 Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Replace struct btrace_function::up. This used to hold a function segment pointer. Change it to hold an index into the vector of function segments instead. commit b54b03bd874936ab3c91f23e5dff3a87153c4e36 Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Remove struct btrace_thread_info::{begin,end}. These are no longer needed and might hold invalid addresses once we change the vector of function segment pointers into a vector of function segment objects where a reallocation of the vector changes the address of its elements. commit 8286623c113daf97a45cde5fc8ef9587b85c898b Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Remove constant arguments. commit a0f1b963327b9cc349a1e6b4c543a29fbee68fba Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Use function segment index in insn iterator. Remove FUNCTION pointer in struct btrace_insn_iterator and use an index into the list of function segments instead. commit f158f208759703b94dbfc6de2222ae7740420faf Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Use function segment index in call iterator. Remove FUNCTION pointer in struct btrace_call_iterator and use an index into the list of function segments instead. commit 521103fd00e593c08a6bedb619c5a9f8f7cc5a91 Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Add btinfo to instruction interator. This will serve as the access path to the vector of function segments once the FUNCTION pointer in struct btrace_insn_iterator is removed. commit 17b89b34b8d7a5a8b713c92a9ebe689c6edd6798 Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Transfer ownership of pointers. Directly insert new btrace_function pointers into the vector and have the vector own these pointers. This allows us to later retrieve these objects by their number directly after creation whereas at the moment we have to wait until the vector is fully populated. This requires to pull btrace_thread_info through different functions but cleans up the code for freeing the trace. commit 2b51eddc5503ea84d48c5b3b3ec3388eba440451 Author: Tim Wiederhake Date: Tue May 30 12:47:37 2017 +0200 btrace: Use std::vector in struct btrace_thread_information. commit 70c16c04ac76a90f18e920aaea1026bde90c493c Author: Andreas Krebbel Date: Tue May 30 12:04:10 2017 +0200 S/390: Fix indentation gas/ChangeLog: 2017-05-30 Andreas Krebbel * config/tc-s390.c (md_gather_operands): Fix indentation. commit db6be0d5e31f11c10004f1f2ef2de05d213da1f4 Author: Simon Marchi Date: Tue May 30 11:29:57 2017 +0200 Fix NEWS formatting in GDB 8.0 section Change the GDB 8.0 section of the NEWS file to try to follow this order: * Functional changes * Added and removed configurations and targets * New commands * New options * MI changes In particular, there were two "New commands" sections. gdb/ChangeLog: * NEWS (Changes in GDB 8.0): Remove extra empty line. Move "Removed targets and native configurations" up. Merge duplicate "New commands" sub-sections. Add "New options" sub-sections. commit 8e86a419d7f8753f4e77cf23aa53bc02ac6febf1 Author: Simon Marchi Date: Tue May 30 11:24:52 2017 +0200 gdb.base/watch-cond-infcall.exp: Don't run if target doesn't support infcalls This test requires calling a function in the inferior, and therefore it doesn't make sense to run it if the target doesn't support calling functions from GDB. gdb/testsuite/ChangeLog: * gdb.base/watch-cond-infcall.exp: Don't run if target doesn't support function calls from GDB. commit ca87ae741fe9c8aad9db1afbf109dc070d0168cf Author: Andreas Krebbel Date: Mon May 29 12:38:42 2017 +0200 S/390: Fix instruction types of csdtr and csxtr opcodes/ChangeLog: 2017-05-30 Andreas Krebbel * s390-opc.c: Add new instruction types RRF_0URF and RRF_0UREFE. * s390-opc.txt: Fix instruction typs of csdtr and csxtr. gas/ChangeLog: 2017-05-30 Andreas Krebbel * testsuite/gas/s390/zarch-z9-ec.d: Adjust csdtr and csxtr. * testsuite/gas/s390/zarch-z9-ec.s: Likewise. commit 67aa8be4cb43cd94bc322fed8bdba48b3c8719c4 Author: Andreas Krebbel Date: Mon May 29 12:38:11 2017 +0200 S/390: Add missing operand to tb instruction gas/ChangeLog: 2017-05-30 Andreas Krebbel * testsuite/gas/s390/esa-g5.d: Add missing operand to tb instruction. * testsuite/gas/s390/esa-g5.s: Likewise. opcodes/ChangeLog: 2017-05-30 Andreas Krebbel * s390-opc.txt: Add missing operand to tb instruction. commit ffc61c5de1a5a89e3e37fb9376725c32a839c34d Author: Andreas Krebbel Date: Mon May 29 12:36:57 2017 +0200 S/390: Add ipte/idte variants with optional operands This patch adds missing variants of ipte and idte instructions added with later CPU generations. ipte got an optional operand with z196 and another one with zEC12. idte got an optional operand with zEC12 opcodes/ChangeLog: 2017-05-30 Andreas Krebbel * s390-opc.c: Add new idte/ipte variants. * s390-opc.txt: Likewise. gas/ChangeLog: 2017-05-30 Andreas Krebbel * testsuite/gas/s390/zarch-z196.d: Add new idte/ipte variants. * testsuite/gas/s390/zarch-z196.s: Likewise. * testsuite/gas/s390/zarch-zEC12.d: Likewise. * testsuite/gas/s390/zarch-zEC12.s: Likewise. commit a09f2586017aeed82fa07c8bfea6c75859295bd9 Author: Andreas Krebbel Date: Mon May 29 12:34:56 2017 +0200 S/390: Improve error checking for optional operands So far we only had an instruction flag which made an arbitrary number of operands optional. This limits error checking capabilities for instructions marked that way. With this patch the optparm flag only allows a single optional parameter and another one is added (optparm2) allowing 2 optional arguments. Hopefully we won't need more than that in the future. So far there will be only a single use of optparm2. gas/ChangeLog: 2017-05-30 Andreas Krebbel * config/tc-s390.c (md_gather_operands): Support new optparm2 instruction flag. include/ChangeLog: 2017-05-30 Andreas Krebbel * opcode/s390.h: Add new instruction flags optparm2. opcodes/ChangeLog: 2017-05-30 Andreas Krebbel * s390-dis.c (s390_print_insn_with_opcode): Support new optparm2 instruction flag. * s390-mkopc.c (main): Recognize the new instruction flag when parsing instruction list. commit bfcfbe611b4d7e650236f8b8ba7d0706cfe6a0b7 Author: Andreas Krebbel Date: Mon May 29 12:33:15 2017 +0200 S/390: Remove optional operand flag. The per operand optional flag hasn't been used for quite some time. Cleanup some remains. include/ChangeLog: 2017-05-30 Andreas Krebbel * opcode/s390.h: Remove S390_OPERAND_OPTIONAL. gas/ChangeLog: 2017-05-30 Andreas Krebbel * config/tc-s390.c (md_gather_operands): Remove code dealing with S390_OPERAND_OPTIONAL. commit 6813cafe52236a95289accb138032c1d6dd3272e Author: GDB Administrator Date: Tue May 30 00:00:15 2017 +0000 Automatic date update in version.in commit 146c3d9d5993289ae0af7c1c872eebaa8662d2fc Author: GDB Administrator Date: Mon May 29 00:00:36 2017 +0000 Automatic date update in version.in commit b40889f2c860d768fa72662d8a3ce7e81ea79aac Author: GDB Administrator Date: Sun May 28 00:00:39 2017 +0000 Automatic date update in version.in commit 2153e1dc0512822ed070de220e33a1a03ea7a4eb Author: GDB Administrator Date: Sat May 27 00:00:40 2017 +0000 Automatic date update in version.in commit b057297ab63a9124aae1773566815cd8c4bde8e9 Author: Alan Hayward Date: Fri May 26 17:04:13 2017 +0100 Add regcache raw_supply_integer and raw_collect_integer. Use these to replace instances of MAX_REGISTER_SIZE. * defs.h (copy_integer_to_size): New declaration. * findvar.c (copy_integer_to_size): New function. (do_cint_test): New selftest function. (copy_integer_to_size_test): Likewise. (_initialize_findvar): Likewise. * mips-fbsd-tdep.c (mips_fbsd_supply_reg): Use raw_supply_integer. (mips_fbsd_collect_reg): Use raw_collect_integer. * mips-linux-tdep.c (supply_32bit_reg): Use raw_supply_integer. (mips64_fill_gregset): Use raw_collect_integer (mips64_fill_fpregset): Use raw_supply_integer. * regcache.c (regcache::raw_supply_integer): New function. (regcache::raw_collect_integer): Likewise. * regcache.h: (regcache::raw_supply_integer): New declaration. (regcache::raw_collect_integer): Likewise. commit 22e7d2933103f1384c1d54dff6188cd57cbe171a Author: GDB Administrator Date: Fri May 26 00:00:38 2017 +0000 Automatic date update in version.in commit 64aaf98419a0485fe3490dfb53417ac9958c7327 Author: GDB Administrator Date: Thu May 25 00:00:45 2017 +0000 Automatic date update in version.in commit b77b02a5ca5a021ee8b5e5453e8843447d1132b2 Author: Yao Qi Date: Wed May 24 22:15:23 2017 +0100 Add unit test to gdbarch methods register_to_value and value_to_register This patch adds one unit test for gdbarch methods register_to_value and value_to_register. The test pass different combinations of {regnu, type} to gdbarch_register_to_value and gdbarch_value_to_register. In order to do the test, add a new function create_new_frame to create a fake frame. It can be improved after we converted frame_info to class. In order to isolate regcache (from target_ops operations on writing registers, like target_store_registers), the sub-class of regcache in the test override raw_write. Also, in order to get the right regcache from get_thread_arch_aspace_regcache, the sub-class of regcache inserts itself to current_regcache. Suppose I incorrectly modified the size of buffer as below, @@ -1228,7 +1228,7 @@ ia64_register_to_value (struct frame_info *frame, int regnum, int *optimizedp, int *unavailablep) { struct gdbarch *gdbarch = get_frame_arch (frame); - gdb_byte in[MAX_REGISTER_SIZE]; + gdb_byte in[1]; /* Convert to TYPE. */ if (!get_frame_register_bytes (frame, regnum, 0, build GDB with "-fsanitize=address" and run unittest.exp, asan can detect such error ==2302==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff98193870 at pc 0xbd55ea bp 0x7fff981935a0 sp 0x7fff98193598 WRITE of size 16 at 0x7fff98193870 thread T0 #0 0xbd55e9 in frame_register_unwind(frame_info*, int, int*, int*, lval_type*, unsigned long*, int*, unsigned char*) /home/yao/SourceCode/gnu/gdb/git/gdb/frame.c:1119 #1 0xbd58c8 in frame_register(frame_info*, int, int*, int*, lval_type*, unsigned long*, int*, unsigned char*) /home/yao/SourceCode/gnu/gdb/git/gdb/frame.c:1147 #2 0xbd6e25 in get_frame_register_bytes(frame_info*, int, unsigned long, int, unsigned char*, int*, int*) /home/yao/SourceCode/gnu/gdb/git/gdb/frame.c:1427 #3 0x70080a in ia64_register_to_value /home/yao/SourceCode/gnu/gdb/git/gdb/ia64-tdep.c:1236 #4 0xbf570e in gdbarch_register_to_value(gdbarch*, frame_info*, int, type*, unsigned char*, int*, int*) /home/yao/SourceCode/gnu/gdb/git/gdb/gdbarch.c:2619 #5 0xc05975 in register_to_value_test /home/yao/SourceCode/gnu/gdb/git/gdb/gdbarch-selftests.c:131 Or, even if GDB is not built with asan, GDB just crashes. *** stack smashing detected ***: ./gdb terminated Aborted (core dumped) gdb: 2017-05-24 Yao Qi * Makefile.in (SFILES): Add gdbarch-selftests.c. (COMMON_OBS): Add gdbarch-selftests.o. * frame.c [GDB_SELF_TESTS] (create_new_frame): New function. * frame.h [GDB_SELF_TESTS] (create_new_frame): Declare. * gdbarch-selftests.c: New file. * regcache.h (regcache) <~regcache>: Mark it virtual if GDB_SELF_TEST. : Likewise. commit e521e87e8514b9d3497208b70bcd067f132c58ed Author: Yao Qi Date: Wed May 24 22:15:23 2017 +0100 Move current_regcache to regcache::current_regcache This patches moves global variable current_regcache to a class regcache static variable (protected) so that the unit test I add in the following patch can access it (by means of extending class regcache in unit test). gdb: 2017-05-24 Yao Qi * regcache.c (current_regcache): Change it to regcache::current_regcache. (regcache_observer_target_changed): Update. (regcache_thread_ptid_changed): Make it a regcache static method. (regcache_thread_ptid_changed): Update. (class regcache_access): New. (current_regcache_test): Update. (_initialize_regcache): Update. * regcache.h: Include forward_list. (regcache): Declare regcache_thread_ptid_changed and declare registers_changed_ptid as friend. commit d8e07dda92366be0f6fc2e7128620d3dd53494e3 Author: Yao Qi Date: Wed May 24 22:15:23 2017 +0100 Get register contents by register_size instead of TYPE_LENGTH We should use register_size to get register contents instead of TYPE_LENGTH. gdb: 2017-05-24 Yao Qi * i387-tdep.c (i387_register_to_value): Use register_size instead of TYPE_LENGTH. * m68k-tdep.c (m68k_register_to_value): Likewise. commit 8c8f9122ce6e6c00f72914479af57a7b87244554 Author: Yao Qi Date: Wed May 24 22:15:23 2017 +0100 Restrict i387_convert_register_p gdb: 2017-05-24 Yao Qi * i387-tdep.c (i387_convert_register_p): Return false if type code isn't TYPE_CODE_FLT. commit 68fce50f04f495980f4ea81746339a9de5b52ebb Author: Yao Qi Date: Wed May 24 22:15:23 2017 +0100 Restrict alpha_convert_register_p This patch restricts alpha_convert_register_p from "TYPE_LENGTH (type) != 8" to "TYPE_LENGTH (type) == 4", because, - we have check "TYPE_LENGTH (valtype) == 4" in alpha_register_to_value and alpha_value_to_register, - alpha lds and sts instruction access 4 bytes, - comments "It might need to convert the [float] register into the corresponding [integer] type (see Alpha)" and integer is 4-byte on alpha, I think it is the right restrict condition to "TYPE_LENGTH (valtype) == 4". gdb: 2017-05-24 Yao Qi * alpha-tdep.c (alpha_convert_register_p): Return true if type length is 4. (alpha_register_to_value): Remove type length check. (alpha_value_to_register): Likewise. commit 88954b49e47574cdd048a23ca391a85fb6f77f47 Author: Yao Qi Date: Wed May 24 22:15:23 2017 +0100 Restrict ia64_convert_register_p gdb: 2017-05-24 Yao Qi * ia64-tdep.c (ia64_convert_register_p): Check type's code is TYPE_CODE_FLT. commit e3ec9b69cde4e07d95eaadee75566fd4a8091df5 Author: Yao Qi Date: Wed May 24 22:15:23 2017 +0100 Restrict m68k_convert_register_p We need to convert register if the type is float. Suppose we get a value from float point register, but its type is integer, we don't have to convert. This case may not exist in real code, but exist in my unit test case. warning: Cannot convert floating-point register value to non-floating-point type. Self test failed: arch m68k: self-test failed at gdb/git/gdb/findvar.c:1072 ok = gdbarch_register_to_value (gdbarch, frame, regnum, type, buf.data (), &optim, &unavail); 1072: SELF_CHECK (ok); gdb: 2017-05-24 Yao Qi * m68k-tdep.c (m68k_convert_register_p): Check type's code is TYPE_CODE_FLT or not. commit cdd238daf949385bd6ef188e24b40d9fcb83a0e8 Author: Yao Qi Date: Wed May 24 22:15:23 2017 +0100 Use XCNEW gdbarch_tdep This patch uses XCNEW gdbarch_tdep instead of XNEW. gdb: 2017-05-24 Yao Qi * alpha-tdep.c (alpha_gdbarch_init): Use XCNEW instead of XNEW. * avr-tdep.c (avr_gdbarch_init): Likewise. * bfin-tdep.c (bfin_gdbarch_init): Likewise. * cris-tdep.c (cris_gdbarch_init): Likewise. * ft32-tdep.c (ft32_gdbarch_init): Likewise. * lm32-tdep.c (lm32_gdbarch_init): Likewise. * m32r-tdep.c (m32r_gdbarch_init): Likewise. * m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise. * mep-tdep.c (mep_gdbarch_init): Likewise. * microblaze-tdep.c (microblaze_gdbarch_init): Likewise. * mips-tdep.c (mips_gdbarch_init): Likewise. * mn10300-tdep.c (mn10300_gdbarch_init): Likewise. * moxie-tdep.c (moxie_gdbarch_init): Likewise. * msp430-tdep.c (msp430_gdbarch_init): Likewise. * sh64-tdep.c (sh64_gdbarch_init): Likewise. * v850-tdep.c (v850_gdbarch_init): Likewise. commit 7a3929c417b1388c689a0cd6b0b2f6579d85ec78 Author: Yao Qi Date: Wed May 24 22:15:22 2017 +0100 Clear GDB internal state after each unit test GDB has some global variables, like sentinel_frame, current_thread_arch, and etc, we need to reset them after each unit tests. gdb: 2017-05-24 Yao Qi * selftest-arch.c (tests_with_arch): Call registers_changed and reinit_frame_cache. * selftest.c (run_self_tests): Likewise. ----------------------------------------------------------------------- Summary of changes: bfd/ChangeLog | 371 +++++ bfd/aout-adobe.c | 1 + bfd/aout-target.h | 3 + bfd/aout-tic30.c | 3 + bfd/arc-got.h | 7 +- bfd/bfd-in2.h | 17 +- bfd/bfdio.c | 23 + bfd/binary.c | 5 +- bfd/bout.c | 1 + bfd/coff-alpha.c | 1 + bfd/coff-mips.c | 1 + bfd/coff-rs6000.c | 1 + bfd/coff64-rs6000.c | 2 + bfd/coffcode.h | 4 + bfd/config.bfd | 19 +- bfd/cpu-arc.c | 60 +- bfd/elf-bfd.h | 25 +- bfd/elf-properties.c | 15 +- bfd/elf.c | 94 +- bfd/elf32-arc.c | 89 +- bfd/elf32-arm.c | 15 +- bfd/elf32-i386.c | 42 +- bfd/elf32-s390.c | 21 +- bfd/elf32-score.c | 8 +- bfd/elf32-score7.c | 16 +- bfd/elf32-sh.c | 2 +- bfd/elf32-xtensa.c | 60 +- bfd/elf64-mips.c | 19 +- bfd/elf64-ppc.c | 77 +- bfd/elf64-ppc.h | 3 + bfd/elf64-s390.c | 21 +- bfd/elf64-x86-64.c | 46 +- bfd/elflink.c | 201 ++-- bfd/elfnn-aarch64.c | 181 ++- bfd/elfxx-mips.c | 6 +- bfd/elfxx-target.h | 6 + bfd/i386msdos.c | 1 + bfd/i386os9k.c | 1 + bfd/ieee.c | 5 +- bfd/ihex.c | 1 + bfd/libbfd-in.h | 3 + bfd/libbfd.h | 3 + bfd/linker.c | 39 +- bfd/mach-o-target.c | 1 + bfd/mmo.c | 1 + bfd/nlm-target.h | 1 + bfd/oasys.c | 1 + bfd/peXXigen.c | 5 + bfd/pef.c | 1 + bfd/plugin.c | 1 + bfd/ppcboot.c | 1 + bfd/som.c | 1 + bfd/srec.c | 1 + bfd/targets.c | 8 +- bfd/tekhex.c | 1 + bfd/versados.c | 13 +- bfd/version.h | 2 +- bfd/vms-alpha.c | 53 +- bfd/xsym.c | 1 + binutils/ChangeLog | 21 + binutils/doc/binutils.texi | 8 + binutils/objdump.c | 29 +- binutils/sysinfo.y | 15 +- binutils/testsuite/binutils-all/objdump.exp | 178 ++- gas/ChangeLog | 60 + gas/config/tc-aarch64.c | 5 + gas/config/tc-arc.c | 34 +- gas/config/tc-arc.h | 1 - gas/config/tc-arm.c | 55 +- gas/config/tc-s390.c | 35 +- gas/config/tc-xtensa.c | 32 +- gas/config/tc-xtensa.h | 9 +- gas/doc/c-arm.texi | 2 - gas/testsuite/gas/aarch64/diagnostic.l | 1 - gas/testsuite/gas/aarch64/diagnostic.s | 2 +- gas/testsuite/gas/arm/ld-sp-warn.l | 1 - .../gas/arm/sp-pc-validations-bad-t-v8a.d | 4 + .../gas/arm/sp-pc-validations-bad-t-v8a.l | 192 +++ gas/testsuite/gas/arm/sp-pc-validations-bad-t.d | 3 +- gas/testsuite/gas/arm/sp-pc-validations-bad-t.s | 2 +- .../gas/arm/sp-usage-thumb2-relax-on-v7.d | 4 + .../gas/arm/sp-usage-thumb2-relax-on-v7.l | 17 + .../gas/arm/sp-usage-thumb2-relax-on-v8.d | 25 + gas/testsuite/gas/arm/sp-usage-thumb2-relax.s | 27 + gas/testsuite/gas/arm/strex-bad-t.d | 1 + gas/testsuite/gas/i386/mpx.d | 4 + gas/testsuite/gas/i386/mpx.s | 12 + gas/testsuite/gas/i386/x86-64-mpx.d | 4 + gas/testsuite/gas/i386/x86-64-mpx.s | 12 + gas/testsuite/gas/s390/esa-g5.d | 4 +- gas/testsuite/gas/s390/esa-g5.s | 4 +- gas/testsuite/gas/s390/zarch-z9-ec.d | 4 +- gas/testsuite/gas/s390/zarch-z9-ec.s | 4 +- gas/testsuite/gas/s390/zarch-z990.d | 3 +- gas/testsuite/gas/s390/zarch-z990.s | 3 +- gdb/ChangeLog | 1050 ++++++++++++++ gdb/MAINTAINERS | 2 +- gdb/Makefile.in | 12 +- gdb/NEWS | 54 +- gdb/aarch64-linux-tdep.c | 2 - gdb/aarch64-tdep.c | 8 +- gdb/ada-lang.c | 103 +- gdb/ada-valprint.c | 3 +- gdb/alpha-tdep.c | 48 +- gdb/amd64-linux-tdep.c | 2 - gdb/arc-tdep.c | 63 +- gdb/arch-utils.c | 8 - gdb/arch-utils.h | 7 - gdb/arm-linux-tdep.c | 2 - gdb/arm-tdep.c | 5 +- gdb/avr-tdep.c | 2 +- gdb/bfin-tdep.c | 2 +- gdb/break-catch-sig.c | 27 +- gdb/break-catch-syscall.c | 26 +- gdb/break-catch-throw.c | 46 +- gdb/breakpoint.c | 471 +++---- gdb/breakpoint.h | 30 +- gdb/btrace.c | 993 +++++++------- gdb/btrace.h | 77 +- gdb/build-id.c | 7 + gdb/c-valprint.c | 4 +- gdb/charset.c | 2 +- gdb/charset.h | 4 +- gdb/cli/cli-cmds.c | 21 +- gdb/cli/cli-decode.c | 11 +- gdb/cli/cli-decode.h | 5 +- gdb/cli/cli-dump.c | 16 +- gdb/common/byte-vector.h | 62 + gdb/common/common-defs.h | 14 - gdb/{gdb_regex.h => common/common-gdbthread.h} | 25 +- gdb/{gdb_regex.h => common/common-inferior.h} | 31 +- gdb/common/common-utils.c | 24 + gdb/common/common-utils.h | 4 + gdb/{gdb_regex.h => common/def-vector.h} | 34 +- gdb/common/default-init-alloc.h | 67 + gdb/common/job-control.c | 93 ++ gdb/{terminal.h => common/job-control.h} | 47 +- gdb/config.in | 9 + gdb/configure | 157 ++- gdb/configure.ac | 7 + gdb/configure.nat | 22 +- gdb/contrib/cc-with-tweaks.sh | 2 +- gdb/corefile.c | 4 +- gdb/cris-tdep.c | 2 +- gdb/ctf.c | 4 +- gdb/darwin-nat.c | 17 +- gdb/defs.h | 54 +- gdb/doc/ChangeLog | 13 + gdb/doc/gdb.texinfo | 45 + gdb/dwarf2loc.c | 478 ++++---- gdb/dwarf2read.c | 1372 +++++++++---------- gdb/event-loop.c | 2 +- gdb/f-valprint.c | 3 +- gdb/findvar.c | 233 +++- gdb/fork-child.c | 629 +-------- gdb/frame.c | 40 +- gdb/frame.h | 8 + gdb/ft32-tdep.c | 2 +- gdb/gdb_regex.c | 57 + gdb/gdb_regex.h | 39 +- gdb/gdbarch-selftests.c | 156 +++ gdb/gdbarch.c | 24 - gdb/gdbarch.h | 15 - gdb/gdbarch.sh | 12 - gdb/gdbcore.h | 6 - gdb/gdbserver/ChangeLog | 111 ++ gdb/gdbserver/Makefile.in | 5 +- gdb/gdbserver/configure | 13 +- gdb/gdbserver/configure.srv | 6 +- gdb/gdbserver/fork-child.c | 116 ++ gdb/gdbserver/inferiors.c | 9 + gdb/gdbserver/linux-low.c | 107 +- gdb/gdbserver/lynx-low.c | 51 +- gdb/gdbserver/nto-low.c | 10 +- gdb/gdbserver/server.c | 278 +++-- gdb/gdbserver/server.h | 14 + gdb/gdbserver/spu-low.c | 44 +- gdb/gdbserver/target.c | 27 + gdb/gdbserver/target.h | 13 +- gdb/gdbserver/win32-low.c | 23 +- gdb/gdbthread.h | 5 +- gdb/gnu-nat.c | 8 +- gdb/i386-linux-tdep.c | 2 - gdb/i386-tdep.c | 2 +- gdb/i387-tdep.c | 8 +- gdb/ia64-tdep.c | 16 +- gdb/inf-ptrace.c | 15 +- gdb/infcmd.c | 14 +- gdb/inferior.h | 34 +- gdb/inflow.c | 64 +- gdb/infrun.c | 8 +- gdb/linux-nat.c | 4 +- gdb/linux-tdep.c | 85 +- gdb/lm32-tdep.c | 2 +- gdb/m32r-tdep.c | 2 +- gdb/m68hc11-tdep.c | 2 +- gdb/m68k-tdep.c | 20 +- gdb/memattr.c | 16 +- gdb/mep-tdep.c | 2 +- gdb/mi/mi-cmd-break.c | 2 +- gdb/mi/mi-main.c | 34 +- gdb/microblaze-tdep.c | 2 +- gdb/mips-fbsd-tdep.c | 45 +- gdb/mips-linux-nat.c | 11 - gdb/mips-linux-tdep.c | 44 +- gdb/mips-linux-tdep.h | 6 + gdb/mips-tdep.c | 48 +- gdb/mn10300-tdep.c | 11 +- gdb/moxie-tdep.c | 2 +- gdb/msp430-tdep.c | 2 +- gdb/{fork-child.c => nat/fork-inferior.c} | 247 ++--- gdb/nat/fork-inferior.h | 106 ++ gdb/printcmd.c | 198 +-- gdb/probe.c | 19 +- gdb/procfs.c | 7 +- gdb/python/py-record-btrace.c | 12 +- gdb/record-btrace.c | 41 +- gdb/regcache.c | 262 ++-- gdb/regcache.h | 47 +- gdb/regformats/regdef.h | 5 - gdb/remote.c | 24 +- gdb/rs6000-aix-tdep.c | 1 - gdb/rs6000-tdep.c | 2 - gdb/s390-linux-tdep.c | 2 - gdb/selftest-arch.c | 4 + gdb/selftest.c | 4 + gdb/sh-tdep.c | 6 +- gdb/sh64-tdep.c | 50 +- gdb/skip.c | 24 +- gdb/spu-tdep.c | 2 +- gdb/symfile.c | 18 + gdb/symfile.h | 4 + gdb/symtab.c | 42 +- gdb/target.h | 18 +- gdb/target/target.h | 14 + gdb/terminal.h | 12 - gdb/testsuite/ChangeLog | 82 ++ gdb/testsuite/gdb.arch/aarch64-fp.exp | 9 +- gdb/testsuite/gdb.arch/altivec-regs.exp | 20 +- gdb/testsuite/gdb.arch/e500-regs.exp | 12 +- gdb/testsuite/gdb.arch/s390-vregs.exp | 17 +- gdb/testsuite/gdb.arch/vsx-regs.exp | 20 +- gdb/testsuite/gdb.base/dump.exp | 7 +- gdb/testsuite/gdb.base/funcargs.exp | 12 +- gdb/testsuite/gdb.base/gnu_vector.exp | 7 +- .../gdb.base/startup-with-shell.c} | 29 +- gdb/testsuite/gdb.base/startup-with-shell.exp | 89 ++ gdb/testsuite/gdb.base/watch-cond-infcall.exp | 5 + gdb/testsuite/gdb.dwarf2/formdata16.exp | 40 +- gdb/testsuite/gdb.dwarf2/implptrpiece.exp | 10 +- gdb/testsuite/gdb.dwarf2/nonvar-access.exp | 31 +- .../gdb.dwarf2/var-access.c} | 29 +- gdb/testsuite/gdb.dwarf2/var-access.exp | 345 +++++ gdb/testsuite/gdb.python/py-inferior.exp | 12 +- gdb/testsuite/gdb.reverse/i386-sse-reverse.exp | 94 +- gdb/testsuite/gdb.server/non-existing-program.exp | 12 +- .../gdb.trace/unavailable-dwarf-piece.exp | 8 +- gdb/testsuite/lib/gdb-utils.exp | 2 +- gdb/testsuite/lib/gdb.exp | 13 + gdb/top.c | 1 + gdb/tracefile-tfile.c | 4 +- gdb/tracefile.c | 10 +- gdb/tracepoint.c | 20 +- gdb/utils.c | 57 +- gdb/v850-tdep.c | 2 +- gdb/valops.c | 7 +- gdb/valprint.c | 252 ++-- gdb/valprint.h | 9 +- gdb/value.h | 9 +- gdb/warning.m4 | 7 +- gdb/x86-linux-nat.c | 10 - gold/ChangeLog | 18 + gold/aarch64.cc | 56 +- include/ChangeLog | 33 + include/bfdlink.h | 6 +- include/dis-asm.h | 8 - include/elf/arc-cpu.def | 49 + include/elf/ppc64.h | 1 + include/environ.h | 2 + include/opcode/s390.h | 23 +- ld/ChangeLog | 326 +++++- ld/Makefile.am | 2 +- ld/Makefile.in | 2 +- ld/NEWS | 5 + ld/config.in | 4 + ld/configure | 26 +- ld/configure.ac | 18 + ld/configure.tgt | 2 +- ld/emulparams/avr1.sh | 8 + ld/emulparams/avr2.sh | 8 + ld/emulparams/avr25.sh | 8 + ld/emulparams/avr3.sh | 8 + ld/emulparams/avr31.sh | 8 + ld/emulparams/avr35.sh | 8 + ld/emulparams/avr4.sh | 8 + ld/emulparams/avr5.sh | 8 + ld/emulparams/avr51.sh | 8 + ld/emulparams/avr6.sh | 8 + ld/emulparams/avrtiny.sh | 10 +- ld/emulparams/avrxmega1.sh | 8 + ld/emulparams/avrxmega2.sh | 8 + ld/emulparams/avrxmega3.sh | 8 + ld/emulparams/avrxmega4.sh | 8 + ld/emulparams/avrxmega5.sh | 8 + ld/emulparams/avrxmega6.sh | 8 + ld/emulparams/avrxmega7.sh | 8 + ld/emulparams/call_nop.sh | 5 - ld/emultempl/elf32.em | 7 +- ld/emultempl/ppc64elf.em | 69 +- ld/ld.h | 5 + ld/ld.texinfo | 41 +- ld/ldgram.y | 4 +- ld/ldlang.c | 260 +++-- ld/ldlex.h | 1 + ld/ldlex.l | 1 + ld/ldmain.c | 9 + ld/lexsup.c | 8 +- ld/scripttempl/avr.sc | 69 +- ld/scripttempl/avrtiny.sc | 262 ---- ld/testsuite/ld-aarch64/aarch64-elf.exp | 6 +- ld/testsuite/ld-aarch64/copy-reloc-2.d | 7 + ld/testsuite/ld-aarch64/copy-reloc-eliminate.d | 4 + ld/testsuite/ld-aarch64/copy-reloc-exe-2.s | 32 + ld/testsuite/ld-aarch64/copy-reloc-exe-eliminate.s | 7 + ld/testsuite/ld-aarch64/copy-reloc-so.s | 19 + ld/testsuite/ld-aarch64/pcrel.s | 6 + ld/testsuite/ld-aarch64/pcrel_pic_defined.d | 10 + ld/testsuite/ld-aarch64/pcrel_pic_defined_local.d | 5 - ld/testsuite/ld-aarch64/pcrel_pic_undefined.d | 16 +- ld/testsuite/ld-arc/tls_ie-01.d | 4 +- ld/testsuite/ld-elf/elf.exp | 4 + ld/testsuite/ld-elf/group11.d | 6 + ld/testsuite/ld-elf/group12.d | 6 + ld/testsuite/ld-elf/group12.ld | 14 + ld/testsuite/ld-elf/now-3.d | 2 +- ld/testsuite/ld-elf/now-4.d | 2 +- ld/testsuite/ld-elf/pr14156a.d | 1 + ld/testsuite/ld-elf/pr21562a.d | 12 + ld/testsuite/ld-elf/pr21562a.s | 12 + ld/testsuite/ld-elf/pr21562a.t | 3 + ld/testsuite/ld-elf/pr21562b.d | 12 + ld/testsuite/ld-elf/pr21562b.s | 12 + ld/testsuite/ld-elf/pr21562b.t | 5 + ld/testsuite/ld-elf/pr21562c.d | 13 + ld/testsuite/ld-elf/pr21562c.t | 7 + ld/testsuite/ld-elf/pr21562d.d | 13 + ld/testsuite/ld-elf/pr21562d.t | 5 + ld/testsuite/ld-elf/pr21562e.d | 10 + ld/testsuite/ld-elf/pr21562f.d | 10 + ld/testsuite/ld-elf/pr21562g.d | 10 + ld/testsuite/ld-elf/pr21562h.d | 10 + ld/testsuite/ld-elf/pr21562i.d | 13 + ld/testsuite/ld-elf/pr21562j.d | 13 + ld/testsuite/ld-elf/pr21562k.d | 13 + ld/testsuite/ld-elf/pr21562l.d | 13 + ld/testsuite/ld-elf/pr21562m.d | 13 + ld/testsuite/ld-elf/pr21562n.d | 13 + ld/testsuite/ld-elf/rpath-1.d | 2 +- ld/testsuite/ld-elf/rpath-2.d | 2 +- ld/testsuite/ld-elf/shared.exp | 4 +- ld/testsuite/ld-elf/sizeof.s | 15 + ld/testsuite/ld-elf/sizeofa.d | 12 + ld/testsuite/ld-elf/sizeofb.d | 13 + ld/testsuite/ld-elf/sizeofc.d | 12 + ld/testsuite/ld-elf/startof.s | 15 + ld/testsuite/ld-elf/startofa.d | 12 + ld/testsuite/ld-elf/startofb.d | 13 + ld/testsuite/ld-elf/startofc.d | 12 + ld/testsuite/ld-gc/gc.exp | 6 + ld/testsuite/ld-gc/pr19161.d | 2 +- ld/testsuite/ld-gc/pr20022.d | 13 + ld/testsuite/ld-gc/pr20022a.s | 9 + ld/testsuite/ld-gc/pr20022b.s | 8 + ld/testsuite/ld-gc/start.d | 2 +- ld/testsuite/ld-i386/call3c.d | 12 +- ld/testsuite/ld-ifunc/ifunc-1-local-x86.d | 3 +- ld/testsuite/ld-ifunc/ifunc-1-local-x86.map | 3 + ld/testsuite/ld-ifunc/ifunc-1-x86.d | 3 +- ld/testsuite/ld-ifunc/ifunc-1-x86.map | 3 + ld/testsuite/ld-nds32/diff.d | 6 +- ld/testsuite/ld-powerpc/elfv2so.d | 2 +- ld/testsuite/ld-powerpc/powerpc.exp | 2 +- ld/testsuite/ld-powerpc/tlsopt5.d | 4 +- ld/testsuite/ld-unique/pr21529.d | 5 + ld/testsuite/ld-unique/pr21529.s | 8 + ld/testsuite/ld-unique/unique.exp | 7 +- ld/testsuite/ld-x86-64/call1c.d | 12 +- ld/testsuite/ld-x86-64/lea1a.d | 2 +- ld/testsuite/ld-x86-64/lea1b.d | 2 +- ld/testsuite/ld-x86-64/lea1d.d | 2 +- ld/testsuite/ld-x86-64/lea1e.d | 2 +- .../{property-x86-3.d => property-x86-3-x32.d} | 7 +- ld/testsuite/ld-x86-64/property-x86-3.d | 2 +- ld/testsuite/ld-x86-64/property-x86-3.s | 28 + .../{property-x86-4a.d => property-x86-4a-x32.d} | 4 +- ld/testsuite/ld-x86-64/property-x86-4a.d | 2 +- .../{property-x86-4b.d => property-x86-4b-x32.d} | 4 +- ld/testsuite/ld-x86-64/property-x86-4b.d | 2 +- ld/testsuite/ld-x86-64/property-x86-4b.s | 15 +- ld/testsuite/ld-x86-64/x86-64.exp | 3 + ld/testsuite/lib/ld-lib.exp | 19 + libiberty/ChangeLog | 11 + libiberty/config.in | 4 + libiberty/configure | 21 + libiberty/configure.ac | 3 +- libiberty/waitpid.c | 5 + opcodes/ChangeLog | 73 + opcodes/aarch64-dis.c | 5 +- opcodes/arc-dis.c | 131 ++- opcodes/arm-dis.c | 4 +- opcodes/bfin-dis.c | 8 +- opcodes/disassemble.h | 8 + opcodes/i386-dis.c | 10 + opcodes/ia64-dis.c | 2 +- opcodes/mips-dis.c | 2 +- opcodes/rl78-decode.c | 820 ++++++------ opcodes/rl78-decode.opc | 6 +- opcodes/rx-decode.c | 1448 ++++++++++---------- opcodes/rx-decode.opc | 24 +- opcodes/s390-dis.c | 11 +- opcodes/s390-mkopc.c | 8 +- opcodes/s390-opc.c | 6 +- opcodes/s390-opc.txt | 10 +- opcodes/score7-dis.c | 3 +- opcodes/spu-dis.c | 2 +- sim/microblaze/ChangeLog | 4 + sim/microblaze/interp.c | 2 +- 427 files changed, 11239 insertions(+), 6700 deletions(-) create mode 100644 gas/testsuite/gas/arm/sp-pc-validations-bad-t-v8a.d create mode 100644 gas/testsuite/gas/arm/sp-pc-validations-bad-t-v8a.l create mode 100644 gas/testsuite/gas/arm/sp-usage-thumb2-relax-on-v7.d create mode 100644 gas/testsuite/gas/arm/sp-usage-thumb2-relax-on-v7.l create mode 100644 gas/testsuite/gas/arm/sp-usage-thumb2-relax-on-v8.d create mode 100644 gas/testsuite/gas/arm/sp-usage-thumb2-relax.s create mode 100644 gdb/common/byte-vector.h copy gdb/{gdb_regex.h => common/common-gdbthread.h} (57%) copy gdb/{gdb_regex.h => common/common-inferior.h} (55%) copy gdb/{gdb_regex.h => common/def-vector.h} (53%) create mode 100644 gdb/common/default-init-alloc.h create mode 100644 gdb/common/job-control.c copy gdb/{terminal.h => common/job-control.h} (50%) create mode 100644 gdb/gdb_regex.c create mode 100644 gdb/gdbarch-selftests.c create mode 100644 gdb/gdbserver/fork-child.c copy gdb/{fork-child.c => nat/fork-inferior.c} (74%) create mode 100644 gdb/nat/fork-inferior.h copy gdb/{gdb_regex.h => testsuite/gdb.base/startup-with-shell.c} (54%) create mode 100644 gdb/testsuite/gdb.base/startup-with-shell.exp copy gdb/{gdb_regex.h => testsuite/gdb.dwarf2/var-access.c} (54%) create mode 100644 gdb/testsuite/gdb.dwarf2/var-access.exp create mode 100644 include/elf/arc-cpu.def delete mode 100644 ld/scripttempl/avrtiny.sc create mode 100644 ld/testsuite/ld-aarch64/copy-reloc-2.d create mode 100644 ld/testsuite/ld-aarch64/copy-reloc-eliminate.d create mode 100644 ld/testsuite/ld-aarch64/copy-reloc-exe-2.s create mode 100644 ld/testsuite/ld-aarch64/copy-reloc-exe-eliminate.s create mode 100644 ld/testsuite/ld-aarch64/pcrel_pic_defined.d delete mode 100644 ld/testsuite/ld-aarch64/pcrel_pic_defined_local.d create mode 100644 ld/testsuite/ld-elf/group11.d create mode 100644 ld/testsuite/ld-elf/group12.d create mode 100644 ld/testsuite/ld-elf/group12.ld create mode 100644 ld/testsuite/ld-elf/pr21562a.d create mode 100644 ld/testsuite/ld-elf/pr21562a.s create mode 100644 ld/testsuite/ld-elf/pr21562a.t create mode 100644 ld/testsuite/ld-elf/pr21562b.d create mode 100644 ld/testsuite/ld-elf/pr21562b.s create mode 100644 ld/testsuite/ld-elf/pr21562b.t create mode 100644 ld/testsuite/ld-elf/pr21562c.d create mode 100644 ld/testsuite/ld-elf/pr21562c.t create mode 100644 ld/testsuite/ld-elf/pr21562d.d create mode 100644 ld/testsuite/ld-elf/pr21562d.t create mode 100644 ld/testsuite/ld-elf/pr21562e.d create mode 100644 ld/testsuite/ld-elf/pr21562f.d create mode 100644 ld/testsuite/ld-elf/pr21562g.d create mode 100644 ld/testsuite/ld-elf/pr21562h.d create mode 100644 ld/testsuite/ld-elf/pr21562i.d create mode 100644 ld/testsuite/ld-elf/pr21562j.d create mode 100644 ld/testsuite/ld-elf/pr21562k.d create mode 100644 ld/testsuite/ld-elf/pr21562l.d create mode 100644 ld/testsuite/ld-elf/pr21562m.d create mode 100644 ld/testsuite/ld-elf/pr21562n.d create mode 100644 ld/testsuite/ld-elf/sizeof.s create mode 100644 ld/testsuite/ld-elf/sizeofa.d create mode 100644 ld/testsuite/ld-elf/sizeofb.d create mode 100644 ld/testsuite/ld-elf/sizeofc.d create mode 100644 ld/testsuite/ld-elf/startof.s create mode 100644 ld/testsuite/ld-elf/startofa.d create mode 100644 ld/testsuite/ld-elf/startofb.d create mode 100644 ld/testsuite/ld-elf/startofc.d create mode 100644 ld/testsuite/ld-gc/pr20022.d create mode 100644 ld/testsuite/ld-gc/pr20022a.s create mode 100644 ld/testsuite/ld-gc/pr20022b.s create mode 100644 ld/testsuite/ld-ifunc/ifunc-1-local-x86.map create mode 100644 ld/testsuite/ld-ifunc/ifunc-1-x86.map create mode 100644 ld/testsuite/ld-unique/pr21529.d create mode 100644 ld/testsuite/ld-unique/pr21529.s copy ld/testsuite/ld-x86-64/{property-x86-3.d => property-x86-3-x32.d} (61%) copy ld/testsuite/ld-x86-64/{property-x86-4a.d => property-x86-4a-x32.d} (81%) copy ld/testsuite/ld-x86-64/{property-x86-4b.d => property-x86-4b-x32.d} (67%) First 500 lines of diff: diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 4d15e1a..f2f9b45 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,374 @@ +2017-06-18 Alan Modra + + * config.bfd: Correct targ_underscore for epiphany, ip2k, + m32c, mn10200, pru, rl78, rx, crisv32 and v850. + +2017-06-16 Nick Clifton + + * elflink.c (bfd_elf_size_dynsym_hash_dynstr): Do not fail if the + bucketlist is empty because there are no symbols to add to the + list. + +2017-06-16 Alan Modra + + PR ld/20022 + PR ld/21557 + PR ld/21562 + PR ld/21571 + * targets.c (struct bfd_target): Add _bfd_define_start_stop. + (BFD_JUMP_TABLE_LINK): Likewise. + * elf-bfd.h (bfd_elf_define_start_stop): Declare. + * elflink.c (_bfd_elf_gc_mark_rsec): Update comment. + (bfd_elf_define_start_stop): New function. + * linker.c (bfd_generic_define_start_stop): New function. + * coff64-rs6000.c (rs6000_xcoff64_vec, rs6000_xcoff64_aix_vec): Init + new field. + * aout-adobe.c (aout_32_bfd_define_start_stop): Define. + * aout-target.h (MY_bfd_define_start_stop): Define. + * aout-tic30.c (MY_bfd_define_start_stop): Define. + * binary.c (binary_bfd_define_start_stop): Define. + * bout.c (b_out_bfd_define_start_stop): Define. + * coff-alpha.c (_bfd_ecoff_bfd_define_start_stop): Define. + * coff-mips.c (_bfd_ecoff_bfd_define_start_stop): Define. + * coff-rs6000.c (_bfd_xcoff_bfd_define_start_stop): Define. + * coffcode.h (coff_bfd_define_start_stop): Define. + * elfxx-target.h (bfd_elfNN_bfd_define_start_stop): Define. + * i386msdos.c (msdos_bfd_define_start_stop): Define. + * i386os9k.c (os9k_bfd_define_start_stop): Define. + * ieee.c (ieee_bfd_define_start_stop): Define. + * ihex.c (ihex_bfd_define_start_stop): Define. + * libbfd-in.h (_bfd_nolink_bfd_define_start_stop): Define. + * mach-o-target.c (bfd_mach_o_bfd_define_start_stop): Define. + * mmo.c (mmo_bfd_define_start_stop): Define. + * nlm-target.h (nlm_bfd_define_start_stop): Define. + * oasys.c (oasys_bfd_define_start_stop): Define. + * pef.c (bfd_pef_bfd_define_start_stop): Define. + * plugin.c (bfd_plugin_bfd_define_start_stop): Define. + * ppcboot.c (ppcboot_bfd_define_start_stop): Define. + * som.c (som_bfd_define_start_stop): Define. + * srec.c (srec_bfd_define_start_stop): Define. + * tekhex.c (tekhex_bfd_define_start_stop): Define. + * versados.c (versados_bfd_define_start_stop): Define. + * vms-alpha.c (vms_bfd_define_start_stop): Define. + (alpha_vms_bfd_define_start_stop): Define. + * xsym.c (bfd_sym_bfd_define_start_stop): Define. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2017-06-16 Jiong Wang + + * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use + SYMBOL_REFERENCES_LOCAL. + +2017-06-15 Jiong Wang + + PR ld/21532 + * elfnn-aarch64.c (ELIMINATE_COPY_RELOCS): Set to 1. + (elfNN_aarch64_final_link_relocate): Also propagate relocations to + runtime for if there needs copy relocation elimination. + (need_copy_relocation_p): New function. Return true for symbol with + pc-relative references and if it's against read-only sections. + (elfNN_aarch64_adjust_dynamic_symbol): Use need_copy_relocation_p. + (elfNN_aarch64_check_relocs): Allocate dynrelocs for relocation types + that are related with accessing external objects. + (elfNN_aarch64_gc_sweep_hook): Sync the relocation types with the change + in elfNN_aarch64_check_relocs. + +2017-06-15 Nick Clifton + + PR binutils/21582 + * ieee.c (ieee_object_p): Use a static buffer to avoid compiler + bugs. + PR binutils/21581 + (ieee_archive_p): Likewise. + +2017-06-15 Nick Clifton + + PR binutils/21579 + * vms-alpha.c (_bfd_vms_slurp_etir): Extend check of cmd_length. + +2017-06-14 Max Filippov + + * elf32-xtensa.c (elf_xtensa_be_plt_entry, + elf_xtensa_le_plt_entry): Add dimension for the ABI to arrays, + keep both windowed and call0 ABI PLT definitions. + (elf_xtensa_create_plt_entry): Use selected ABI to choose upper + elf_xtensa_*_plt_entry endex. + (ELF_MAXPAGESIZE): Fix at minimal supported MMU page size. + +2017-06-14 Nick Clifton + + PR binutils/21578 + * elf32-sh.c (sh_elf_set_mach_from_flags): Fix check for invalid + flag value. + +2017-06-14 Nick Clifton + + PR binutils/21589 + * vms-alpha.c (_bfd_vms_get_value): Add an extra parameter - the + maximum value for the ascic pointer. Check that name processing + does not read beyond this value. + (_bfd_vms_slurp_etir): Add checks for attempts to read beyond the + end of etir record. + +2017-06-14 Nick Clifton + + PR binutils/21591 + * versados.c (versados_mkobject): Zero the allocated tdata structure. + (process_otr): Check for an invalid offset in the otr structure. + +2017-06-14 Sebastian Huber + + * config.bfd (epiphany-*-elf): Accept epiphany-*-*. + +2017-06-13 H.J. Lu + + PR ld/20022 + PR ld/21557 + PR ld/21562 + PR ld/21571 + * elf-bfd.h (elf_link_hash_entry): Add start_stop. Change the + vtable field to a union. + (_bfd_elf_is_start_stop): Removed. + * elf32-i386.c (elf_i386_convert_load_reloc): Also check for + __start_SECNAME and __stop_SECNAME symbols. + * elf64-x86-64.c (elf_x86_64_convert_load_reloc): Likewise. + * elflink.c (_bfd_elf_is_start_stop): Removed. + (_bfd_elf_gc_mark_rsec): Check start_stop instead of calling + _bfd_elf_is_start_stop. + (elf_gc_propagate_vtable_entries_used): Skip __start_SECNAME and + __stop_SECNAME symbols. Updated. + (elf_gc_smash_unused_vtentry_relocs): Likewise. + (bfd_elf_gc_record_vtinherit): Likewise. + (bfd_elf_gc_record_vtentry): Likewise. + +2017-06-13 Nick Clifton + + PR ld/21524 + * elflink.c (elf_link_adjust_relocs): Generate an error when + encountering a reloc against a symbol removed by garbage + collection. + +2017-06-12 H.J. Lu + + * elf-bfd.h (elf_backend_data): Add struct bfd_link_info * + to merge_gnu_properties. + * elf-properties.c (elf_merge_gnu_properties): Add struct + bfd_link_info * and pass it to merge_gnu_properties. + (elf_merge_gnu_property_list): Add struct bfd_link_info * + and pass it to elf_merge_gnu_properties. + (_bfd_elf_link_setup_gnu_properties): Pass info to + elf_merge_gnu_property_list. + * elf32-i386.c (elf_i386_merge_gnu_properties): Add struct + bfd_link_info *. + * elf64-x86-64.c (elf_x86_64_merge_gnu_properties): Likewise. + +2017-06-11 Joe Zbiciak + + PR 21564 + * binary.c (binary_set_section_contents): Scale lma by octets + per byte to set filepos. + +2017-06-08 Cupertino Miranda + + * elf32-arc.c (elf_arc_check_relocs): Fixed conditions to generate + dynamic sections. + +2017-06-08 Cupertino Miranda + + * elf32-arc.c (elf_arc_size_dynamic_sections): Changed condition to + require TEXTREL. + +2017-06-08 Cupertino Miranda + + * arc-got.h (relocate_fix_got_relocs_for_got_info): Added TCB_SIZE to + patched section contents for TLS IE reloc. + * elf32-arc.c: Remove TCB_SIZE preprocessor macro. + +2017-06-08 Cupertino Miranda + + * elf32-arc.c (elf_arc_relocate_section): Added "call" to + RELOC_FOR_GLOBAL_SYMBOL macro. + +2018-06-08 Cupertino Miranda + + * elf32-arc.c (elf_arc_relocate_section): Small refactor and condition + changes. + +2017-06-08 Cupertino Miranda + + * config/tc-arc.c (md_undefined_symbol): Changed. + * config/tc-arc.h (DYNAMIC_STRUCT_NAME): Removed. + +2017-06-08 Cupertino Miranda + + * elf32-arc.c (elf_arc_relocate_section): Fixed reassign of indirect + symbols. + +2017-06-08 Cupertino Miranda + + * elf32-arc.c (elf_arc_check_relocs): Added condition to disable + warning and "Bad value" for local symbols ARC_32 or ARC_32_ME relocs. + +2017-06-08 Cupertino Miranda + + * elf32-arc.c (ADD_RELA): Changed to only work when dynamic + object is created. + +2017-06-08 Richard Earnshaw + + * elf32-arm.c (elf32_arm_merge_eabi_attributes): Remove assertion + that the input bfd has Tag_FP_ARCH non-zero if Tag_ABI_HardFP_use + is non-zero. Add clarifying comments. + +2017-06-08 H.J. Lu + + * elf32-i386.c (elf_i386_check_relocs): Set local IFUNC symbol + name. Use local IFUNC symbol name string to report unsupported + non-PIC call to IFUNC function. + (elf_i386_relocate_section): Dump local IFUNC name with minfo + when generating R_386_IRELATIVE relocation. + (elf_i386_finish_dynamic_symbol): Likewise. + * elf_x86_64_check_relocs (elf_x86_64_check_relocs): Set local + IFUNC symbol name. + (elf_x86_64_relocate_section): Dump local IFUNC name with minfo + when generating R_X86_64_IRELATIVE relocation. + (elf_x86_64_finish_dynamic_symbol): Likewise. + +2017-06-06 Jose E. Marchesi + + * elf.c (setup_group): Make sure BFD sections are created for all + group sections in the input file when processing SHF_GROUP + sections. + (bfd_section_from_shdr): Avoid duplicating logic already + implemented in `setup_group'. + +2017-06-06 Daniel Bonniot de Ruisselet + + PR binutils/21546 + * peXXigen.c (pe_print_idata): Use the address of the first thunk + if the hint address is zero. + +2017-06-06 James Clarke + + PR ld/19579 + * elfnn-aarch64.c (elfNN_aarch64_finish_dynamic_symbol): Check + ELF_COMMON_DEF_P for common symbols. + +2017-06-06 Andrew Burgess + + * elf.c (_bfd_elf_make_section_from_shdr): Don't initially mark + SEC_GROUP sections as SEC_EXCLUDE. + (bfd_elf_set_group_contents): Replace use of abort with an assert. + (assign_section_numbers): Use resolve_section_groups flag instead + of relocatable link type. + (_bfd_elf_init_private_section_data): Use resolve_section_groups + flag instead of checking the final_link flag for part of the + checks in here. Fix white space as a result. + * elflink.c (elf_link_input_bfd): Use resolve_section_groups flag + instead of relocatable link type. + (bfd_elf_final_link): Likewise. + +2017-06-06 Jose E. Marchesi + + * elfxx-mips.c (_bfd_mips_elf_relocate_section): Remove unused + variable `bed'. + * elf32-score.c (score_elf_final_link_relocate): Likewise. + (s3_bfd_score_elf_check_relocs): Likewise. + * elf32-score7.c (s7_bfd_score_elf_relocate_section): Likewise. + (score_elf_final_link_relocate): Likewise. + (s7_bfd_score_elf_check_relocs): Likewise. + +2017-06-06 Jose E. Marchesi + + * elflink.c (init_reloc_cookie_rels): Remove unused variable + `bed'. + +2017-06-06 Maciej W. Rozycki + + * elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Subtract `count' + from `reloc_count' rather than decrementing it. + * elf.c (bfd_section_from_shdr): Multiply the adjustment to + `reloc_count' by `int_rels_per_ext_rel'. + * elf32-score.c (score_elf_final_link_relocate): Do not multiply + `reloc_count' by `int_rels_per_ext_rel' for last relocation + entry determination. + (s3_bfd_score_elf_check_relocs): Likewise. + * elf32-score7.c (score_elf_final_link_relocate): Likewise. + (s7_bfd_score_elf_relocate_section): Likewise. + (s7_bfd_score_elf_check_relocs): Likewise. + * elf64-mips.c (mips_elf64_get_reloc_upper_bound): Remove + prototype and function. + (mips_elf64_slurp_one_reloc_table): Do not update `reloc_count'. + (mips_elf64_slurp_reloc_table): Assert that `reloc_count' is + triple rather than once the sum of REL and RELA relocation entry + counts. + (bfd_elf64_get_reloc_upper_bound): Remove macro. + * elflink.c (_bfd_elf_link_read_relocs): Do not multiply + `reloc_count' by `int_rels_per_ext_rel' for internal relocation + storage allocation size determination. + (elf_link_input_bfd): Multiply `.ctors' and `.dtors' section's + size by `int_rels_per_ext_rel'. Do not multiply `reloc_count' + by `int_rels_per_ext_rel' for last relocation entry + determination. + (bfd_elf_final_link): Do not multiply `reloc_count' by + `int_rels_per_ext_rel' for internal relocation storage + allocation size determination. + (init_reloc_cookie_rels): Do not multiply `reloc_count' by + `int_rels_per_ext_rel' for last relocation entry determination. + (elf_gc_smash_unused_vtentry_relocs): Likewise. + * elfxx-mips.c (_bfd_mips_elf_check_relocs): Likewise. + (_bfd_mips_elf_relocate_section): Likewise. + +2017-06-05 Alan Modra + + PR 21529 + * linker.c (_bfd_generic_link_output_symbols): Handle BSF_GNU_UNIQUE. + +2017-06-01 John Baldwin + + * elf.c (elfcore_grok_freebsd_psinfo): Use ELF header class to + determine structure sizes. + (elfcore_grok_freebsd_prstatus): Likewise. + +2017-06-01 Alan Modra + + * elf64-ppc.c (struct ppc_link_hash_table): Add has_plt_localentry0. + (ppc64_elf_merge_symbol_attribute): Merge localentry bits from + dynamic objects. + (is_elfv2_localentry0): New function. + (ppc64_elf_tls_setup): Default params->plt_localentry0. + (plt_stub_size): Adjust size for tls_get_addr_opt stub. + (build_tls_get_addr_stub): Use a simpler stub when r2 is not saved. + (ppc64_elf_size_stubs): Leave stub_type as ppc_stub_plt_call for + optimized localentry:0 stubs. + (ppc64_elf_build_stubs): Save r2 in ELFv2 __glink_PLTresolve. + (ppc64_elf_relocate_section): Leave nop unchanged for optimized + localentry:0 stubs. + (ppc64_elf_finish_dynamic_sections): Set PPC64_OPT_LOCALENTRY in + DT_PPC64_OPT. + * elf64-ppc.h (struct ppc64_elf_params): Add plt_localentry0. + +2017-05-30 Casey Smith + + PR ld/21523 + * elf32-arm.c (elf32_arm_final_link_relocate): Install an absolute + value when processing the R_ARM_THM_ALU_PREL_11_0 reloc. + +2017-05-30 Anton Kolesov Anton.Kolesov@synopsys.com + + * cpu-arc.c (arc_compatible): New function. + +2017-05-30 Anton Kolesov + + * cpu-arc.c (arch_info_struct): Remove duplicate ARC600 entry. + +2017-05-30 H.J. Lu + + PR binutils/21519 + * bfdio.c (bfd_get_file_size): New function. + * bfd-in2.h: Regenerated. + 2017-05-23 Dilian Palauzov * elf32-arc.c (arc_elf_merge_attributes): Add fall through diff --git a/bfd/aout-adobe.c b/bfd/aout-adobe.c index a2c927d..487ed8c 100644 --- a/bfd/aout-adobe.c +++ b/bfd/aout-adobe.c @@ -466,6 +466,7 @@ aout_adobe_sizeof_headers (bfd *ignore_abfd ATTRIBUTE_UNUSED, #define aout_32_bfd_discard_group bfd_generic_discard_group #define aout_32_section_already_linked _bfd_generic_section_already_linked #define aout_32_bfd_define_common_symbol bfd_generic_define_common_symbol +#define aout_32_bfd_define_start_stop bfd_generic_define_start_stop #define aout_32_bfd_link_hash_table_create _bfd_generic_link_hash_table_create #define aout_32_bfd_link_add_symbols _bfd_generic_link_add_symbols #define aout_32_bfd_link_just_syms _bfd_generic_link_just_syms diff --git a/bfd/aout-target.h b/bfd/aout-target.h index 2e98c4d..65bc44c 100644 --- a/bfd/aout-target.h +++ b/bfd/aout-target.h @@ -513,6 +513,9 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info) #ifndef MY_bfd_define_common_symbol #define MY_bfd_define_common_symbol bfd_generic_define_common_symbol #endif +#ifndef MY_bfd_define_start_stop +#define MY_bfd_define_start_stop bfd_generic_define_start_stop +#endif #ifndef MY_bfd_reloc_type_lookup #define MY_bfd_reloc_type_lookup NAME (aout, reloc_type_lookup) #endif diff --git a/bfd/aout-tic30.c b/bfd/aout-tic30.c index 5db3da7..068428c 100644 --- a/bfd/aout-tic30.c +++ b/bfd/aout-tic30.c @@ -968,6 +968,9 @@ tic30_aout_set_arch_mach (bfd *abfd, #ifndef MY_bfd_define_common_symbol #define MY_bfd_define_common_symbol bfd_generic_define_common_symbol #endif +#ifndef MY_bfd_define_start_stop +#define MY_bfd_define_start_stop bfd_generic_define_start_stop +#endif #ifndef MY_bfd_reloc_type_lookup #define MY_bfd_reloc_type_lookup tic30_aout_reloc_type_lookup #endif diff --git a/bfd/arc-got.h b/bfd/arc-got.h index b8a6d15..f1f6c0e 100644 --- a/bfd/arc-got.h +++ b/bfd/arc-got.h @@ -22,6 +22,8 @@ #ifndef ARC_GOT_H #define ARC_GOT_H +#define TCB_SIZE (8) + enum tls_type_e { GOT_UNKNOWN = 0, @@ -354,7 +356,8 @@ relocate_fix_got_relocs_for_got_info (struct got_entry ** list_p, = tls_sec->output_section->vma; bfd_put_32 (output_bfd, - sym_value - sec_vma, + sym_value - sec_vma + + (elf_hash_table (info)->dynamic_sections_created ? 0 : TCB_SIZE), htab->sgot->contents + entry->offset + (entry->existing_entries == TLS_GOT_MOD_AND_OFF ? 4 : 0)); @@ -478,8 +481,10 @@ GOT_OFFSET = %#lx, GOT_VMA = %#lx, INDEX = %ld, ADDEND = 0x0\n", { bfd_vma addend = 0; if (list->type == GOT_TLS_IE) + { addend = bfd_get_32 (output_bfd, htab->sgot->contents + got_offset); + } ADD_RELA (output_bfd, got, got_offset + (e == TLS_GOT_MOD_AND_OFF ? 4 : 0), diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index ae2fceb..4348793 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1242,6 +1242,8 @@ long bfd_get_mtime (bfd *abfd); file_ptr bfd_get_size (bfd *abfd); +file_ptr bfd_get_file_size (bfd *abfd); + void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len, int prot, int flags, file_ptr offset, void **map_addr, bfd_size_type *map_len); @@ -7591,7 +7593,8 @@ typedef struct bfd_target NAME##_bfd_is_group_section, \ NAME##_bfd_discard_group, \ NAME##_section_already_linked, \ - NAME##_bfd_define_common_symbol + NAME##_bfd_define_common_symbol, \ + NAME##_bfd_define_start_stop int (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *); bfd_byte * (*_bfd_get_relocated_section_contents) @@ -7655,6 +7658,11 @@ typedef struct bfd_target bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *); + /* Define a __start, __stop, .startof. or .sizeof. symbol. */ + struct bfd_link_hash_entry *(*_bfd_define_start_stop) (struct bfd_link_info *, + const char *, + asection *); + /* Routines to handle dynamic symbols and relocs. */ #define BFD_JUMP_TABLE_DYNAMIC(NAME) \ NAME##_get_dynamic_symtab_upper_bound, \ @@ -7734,6 +7742,13 @@ bfd_boolean bfd_generic_define_common_symbol #define bfd_define_common_symbol(output_bfd, info, h) \ BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h)) +struct bfd_link_hash_entry *bfd_generic_define_start_stop + (struct bfd_link_info *info, + const char *symbol, asection *sec); + +#define bfd_define_start_stop(output_bfd, info, symbol, sec) \ + BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec)) + struct bfd_elf_version_tree * bfd_find_version_for_sym hooks/post-receive -- Repository for Project Archer.