The branch, scox/strace has been updated via e1c9923c858f265680f03f0fe5c48c0cc0bb243c (commit) via 546053acfa1518063ed0ea94c3e35c05089c32fc (commit) via b4e87f2c1eee99dee805e3828514f8afa162f9ba (commit) via d7a11d1383a2d0cdffc8c08e46b0cf5a66b3ce28 (commit) via aedbe3bb9f03be12ad714adca1fefc391317bd94 (commit) via ac533243beac35f158341d53edab53031218bcde (commit) via 52031738190ca1067bc6e40f662f4effcd428628 (commit) via 770c015139f038bd7b7abb5c6d84eb39d36d3080 (commit) via 7ce8f214f1af1dd593ad42665da416ac46033f97 (commit) via f21c2bd7b7ef2a9c47e5713cabaa784bcf5c2bee (commit) via d806ea2d0ef362fcddd2c1659f537b68aa114203 (commit) via c1a5d03a89a455d79f025c66dce83342de4d26ce (commit) via 3eb185c97d8170b3f3a2b5edab4fbbd56f53f6f7 (commit) via d292364e95fc9c8230b678d9026f285850074c02 (commit) via 903b777ddeb4c11a7de12cab59124e777614edec (commit) via 72c03e30ae783a5f38a8c124588a4536ae06e6ef (commit) via 2c115c4f3cb57cfed7a1be5bbccf0f1bc6f7fdbc (commit) via b271c8567acd7b329fe6b37a3091613c634470c7 (commit) via d367307b93e5589245d1f2c8bbcfe709404540a8 (commit) via 98ac8787e9bea0fef101b9b63c5dd06e653a46b3 (commit) via 34dafe9f39e61de970c36ed636daa58e1caa386c (commit) via 81e8046dc0daaf56fb10b11931fc77600a4b5920 (commit) via 398fdd6086a290748afcce0efabaebb4e363278c (commit) via e699d33164a59dcfe7ad4a5154e5c6c811c1f958 (commit) via bb01dbfc041dccab2f2a2818068158f61b4c0fe2 (commit) via 81c82c4b9005acf7865d8a19ee651968e059a848 (commit) via 2ddaf614439b50e6019c5218f2fbfc0d14194e96 (commit) via 017f982820d408fb49657b9b9b8f45a9616c5f21 (commit) via ed8358e9491d5ae0a8ee021c162a85867af1146a (commit) via 20149b6b207ac8c2bcde6f272607109f566168a9 (commit) via 2d83e710a14c62cb6a9501c84fc46062f817428d (commit) via d4ab829a2477d454bd38544f1b88a043ec58581c (commit) via b4c555cfc48689d45481effff23c9017a4f3557f (commit) via aa7ca1bb443e8c2baad17392f395d1556fecfafa (commit) via fdfc8cf7f04e2f4d24ec9fff331ebd71a2e768a3 (commit) via 0b8b76098ff3d3dcd0c621f2e45cc0b4e7211d6a (commit) via 7df6aecc97b96843da080d54414052b1c954ddca (commit) via 63f6e94fb3cc5b6a2cfb8c28686f150e7226ab7e (commit) via d8f9e51c361dfb53de3eca8d84f8938380af60ff (commit) via 33394263571f08a935c0a030dbde22a04eee7d70 (commit) via 6eac171f0624303d944ff1a1ae4d0e3b0a63c800 (commit) via 3df505f60eacd2c931092c7007f084d27583f9e5 (commit) via 272560b577894c388a3d0d3fda8294683714f582 (commit) via 08235187bcdd66599884f33b046cf8abcf949727 (commit) via 080a488354d63fec9791a26fadd15e0c5246983d (commit) via db502012fc46b4dd068461aaeafeaa421489c562 (commit) via 3891b65efe614fe2e2f7e75e7f5ec8964f7fd96b (commit) via ee556432c44dd5dbcf22c4086774bd29ded5b208 (commit) via 46f438e3d57bae1d74ab9a7e6cba380b0e58f552 (commit) via f4ce562c7f7a95cab61bf298d289cd56f0802a95 (commit) via c398c3d0b56823bb12718ae46a8c273b866ca246 (commit) via e25d200487dba7dfdf92f638e4ef2aefd7bd7481 (commit) via 002f15c27779e154856fdf281360385f4d3be671 (commit) via c9033fe839e37a378ff86e614a7d6e939b94f6c9 (commit) via 088f37dd90eecb647347c1aa53d36b3f5be64b21 (commit) via a54700c6c45ea424b668f2201ef14906f2052412 (commit) via e2a678a557b52816a7aa45902a6519bc1cae918e (commit) via f2dda4778417e2d58a5b0416ff9598f68470cbfa (commit) via ed4a1084d725a5d1aecefc6a430d3059a77c102d (commit) via 65962b20b6df7e8961ec4002179dbd51a33a627f (commit) via 22a2ab04f58dc7c3f5fb0e6d8f0fa96ee4aa3951 (commit) via 835b995b576d14fa9b73fb763d5186323b1365b6 (commit) via d59b55f0952e95fdbec58021cecce85f4557b485 (commit) via 97dd8e07d998f5f0fcd0d06fd53e2ae9d337d222 (commit) via 6ae978f133a67d34d01b6bb2053f1ba20ad13eeb (commit) via 4196ab2a6d348f76c0e5e78252e44d9c631636d2 (commit) via c6778d00df0fbc7fe53801717eb934a5d7b9674a (commit) via 9177214a228f7d0eb8543725287a6163993fbebf (commit) via 05192282ca19f8f5c201f630caed68b1632e2619 (commit) via 6485977b899b2780c575ff1d34ccfa7fa950e492 (commit) via 2208ee917050bcc901c7faefdee257ffbf8ef2ab (commit) via fc9e754460ccf1c893fc9e67c02c49f58f1bd38e (commit) via 75faf5c41d7fc713b73cbb3523dcc6ca3855f98e (commit) via b1c896b365f2dbcd14145a88d103623244cf0fb0 (commit) via dfc19da6a6d43390544fa446bb1a33723b339a77 (commit) via c327a44f38ad5ab0dfd8da5184c4c030798ef323 (commit) via 9defd221fe3ecffabc90eadd077326b27e898a2b (commit) via 414b84043054e9656aad008e6efb49979ec614e9 (commit) via 6405cd73c0d160d9b6f82744bb5510b3e101ad59 (commit) via 5216580d7a1134a9349ec045b475f5b40f499e5e (commit) via 93858ad34ec1d2250d33365468c6721023786f51 (commit) via e321e7ce753f27ca9664ca08a8314924b5771d61 (commit) via 8270ac6229ac323fe7dfc1915b3f52d77df6bb9a (commit) via 7b56485db5187e6c63f330e1eb35f63b50327b74 (commit) via 7ba913dcdf2f94cbd501d763f0fc55a46d10331c (commit) via 37a4a1310484490878ce0af9ea1924d6c7dbec7b (commit) via 0bd27e079a99d93590fd078c86c0afe51f6d29b8 (commit) via b4ef5aeb3a1880490f9441655d9de74727c9063a (commit) via fede52738f3ed3e375d84197380ae1a6cd35c6fe (commit) via 22c3f4909af125b457564db66e3cb3c56cb9abd3 (commit) via 16cb7910b946bad4b5f4aa69925361004c4e412f (commit) via cc0c3ffbc975fe764f6c4746611a836e7a4ce379 (commit) via 3f3ffe54e229482bdb0785ae2162f03d60870400 (commit) via 69258091762bce83b0f3dc9e07800b87bdc0649f (commit) via 62cf57fee7d72d0c2df2be4d999d63ea3bfafa43 (commit) via 2afade5dbe1bf99db3f6ab625ca540be030e0e41 (commit) via a3504e96544b3f8918c4521116d537a4a07c2106 (commit) via 011168429859e3e3a2342ee043cbc2c7a5cf5e2f (commit) via 29c9291108487e1dd9bc5677dafee58ea2068f77 (commit) via abc6c00fb6cbb199348ec5f0bf4d969ed48bdfad (commit) via 74c2c1f45f036c4f155cc65a86022ce6eef0c5c5 (commit) via 5067f530c3a26330263649fbef23c7685f27cbb7 (commit) via 86c6b807f50ecec84e55007bf6cb6e54c159727b (commit) via 5db2718ce48c497e317787caebacd019da59c3b0 (commit) via cb41b9e70e6fbd1cb603bb9ba4372fbb8ae87b20 (commit) via ca2589f3bbad1e151abbb293d4c43a87b7a4d5ec (commit) via c15a79c78cc0111296b487de3fa59365f13df3bc (commit) via a2d4e4b70945c1704e5249ad6a9be9d5875a4b0e (commit) via 57a2fe070226852b84eff8f37e49b367daa2a32f (commit) via 775e241e9c5f2b2ff2b59972ab70e5f20763fae6 (commit) via 08132bdd876fa1825810f90ecc25390dd4ded457 (commit) via 5312fe52e9ae6fd108f161a271315eb2821246eb (commit) via 9bb9c115cd3d0b9de97e02cf2e861972010daa6f (commit) via b32b0a69fdf24a8b04efe9c2b90c3e830aa0c2c1 (commit) via acdb5f3476c4dd5a0f7182e2e96eafee3a84d856 (commit) via dc02848a69da5b8794a3d7094664e3b4d9a508cf (commit) via 4cfbdbfd2607a2bcfb9f745410e34aea8f044a9b (commit) via 988de25b366c74cd62e35f3d5cf63086a964c7aa (commit) via 36983a93bb338b7cdd6f7d6f9f91dc9ce9815b4e (commit) via 8be90e963138c88d7648c1eb2146e45f048d616e (commit) via 020a839d52fb8a28059dadd075b09a2fec84ef74 (commit) via dac36daf78653a8e4688b825cdb15461a88470d2 (commit) via 1022c627dbd9d7f7f67ac68f16de05474de7a75a (commit) via f211b8c0b91fc7b1657079a495f05a9a4d957821 (commit) via f16a9783c5f085443d806646074e9c06fdee9a88 (commit) via 1ba7cdcd931ddf672e4a8a6483593f9b94e55965 (commit) via 2b2ed2452c0bd2437ff65e71356bece225f0be46 (commit) via 678581fc78cffcfd1423b557368c3a0cfb695b87 (commit) via eba4caf23152a1a66d10ce37c502ec78654cd5eb (commit) via 378646f7a4260eecd244ba840ae1af4e663e30a5 (commit) via 128d6509819d9d4fe6f52d1a5dcc458b9cbd0f4c (commit) via dbe15e4e1dda8e20cc347ced751631d49a5f57de (commit) via 7b1dd701059ead8f3af3c081fc9727b9883a74c3 (commit) via 8fb49c3c715190a5753980d0ddef721d816bbc3d (commit) via 7d55c1d61edfef2323f5d4675f0367ffb411c3cb (commit) via 178d871928b99112a39e0ca1284d6bbdde50ab6e (commit) via b1791af06ec358d21dbe6a99129f11cc02438962 (commit) via d88bdcb4a52bc041ed9b607dda22f478ec61a67b (commit) via 7c1c1904bedb8f873731651b420a23f573785728 (commit) via f927cc8faff0d2e39561c90f5182ebe99b2f77f6 (commit) via 123cd851480c728845a4c3f85da772dd8331cf19 (commit) via 3d31bc39e655ea39721754fa0ea539a8a0c9b26c (commit) via fca8e23c31e6ec37bdcb5cf1d981a39d1e6fb6f6 (commit) via fc8de8e227e5146336d654f2fb4f98010d7cf12d (commit) via 97b031c5d6d42ff2b1758a8a8c332cb44ba9c06f (commit) via 7cd00957a57f8d8195baf7a85ea21b879bbbaf91 (commit) via bc750500af6d0a6cb602a5d00b3f71b26ce96762 (commit) via 906799036a9bcc2b6f27fbcf894092bdc03f6da9 (commit) via 0cf9feb996cb32939840b13073a49310b1fd71e0 (commit) via efba19b06a6f2baacb3920599f970d1333ffc358 (commit) via f25102f7b100337923d2c81ecc12a64d428e98fe (commit) via 021887d88a040cf39f3afbd7da10bbe3ff1ad6c3 (commit) via b3c6d7ff98954032a3e7989dbd1f50f041e010bb (commit) via d2834edcb67b9d9bd7163868fa0239948a2e57b7 (commit) via 590042fc45f857c981bee4e0c76f6b3b528a224e (commit) via 404f29021abaef86a341663444fb069eb1f0282a (commit) via 046bebe1c0a367687bd693eb4594fcdcba0b8f7e (commit) via ddbcedf5de138bc83d5d16554a3f44163dcaef7a (commit) via b08b16c8391bbcd706a4aaa4b09509e7c2b8c676 (commit) via cb44333d99548bbbf7be06387a31877ee9322ab4 (commit) via 872dceaaff9b54764b8f510b549497b9d904b136 (commit) via 269249d9406096dd59aecd8845e960fdddb1ebfe (commit) via c0e8dcd87101119806c5bbca4c7b649c1b8c0996 (commit) via 128bf1fe608badb59d27f9c5c8ffb1a6a6d9d811 (commit) via b02c4f162335ed055964f603ba3aca18b0e5c5bf (commit) via b39152b3e5befec363302d5d81ade36ab45d6d08 (commit) via 0b27c27d0d3060171876736f05c39f9c86a65d3e (commit) via 4ee94178afbe062bc244d28595f86d63633a7af7 (commit) via 276cbbdf990f3f09acacdf3d9603b054ac7d29da (commit) via 580f1034d10934b757703110db068397c0c1e7bb (commit) via d86bd7cba1965c621b63792179febcf9eeb273ad (commit) via 8abfcabcb49fcd8b95854a5b59e7928e3c6000ff (commit) via 23d188c74e7481bb0af3c42b84fc9cb0c94267e5 (commit) via a80cf5d88e028fa6a72b37fe50795e70bb6e3559 (commit) via d09628385443574b556f2beaaba7588a2a5fb4c0 (commit) via e17869db99195849826eaaf5d2d0eb2cfdd7a2a7 (commit) via 2b79f3761c834cd217407f75f867f6a761703ab3 (commit) via 188a63736c70060180382e36364a23dcebe3c29c (commit) via 2252ff3d9045b54bf3a2b54c7ba33320ccab9bc7 (commit) via 26655f53069a2f8a8ccbc6b60537149383d28be1 (commit) via 0b3303472d5fd742198f04dbf4322098be6c158c (commit) via ae60f04e08bf48f65d9101a6ab63f3806e6fca5e (commit) via db4dc13eebbd73cddfe3abb6c001982c7bdbba3f (commit) via 28cd9371e84144df3b9b8903770f71d39824f8f8 (commit) via 6d6231ed5822782b76a2aad268cc4891e4f91dfc (commit) via ca683e3a86d081fcf43685bee840086bd4c07443 (commit) via 89c52ae3a20e8d84a250095781c1e022af542b3f (commit) via 6a010cf67a96adcaf80c74f926df6b42ce13e7df (commit) via 97c0a07968a7c64e1de96abff8937d089f09b3e7 (commit) via 1b611b2dc3075d20372557021f95ec326cdf8aa5 (commit) via 371367a95037cac795af5cdc589a2aa0c7a4dcd3 (commit) via 0f52d45acd6c54aa47082778ffcbafddd423a5b4 (commit) via 0eba165a74cdb039a5e6ed86e0396d80f68ca22c (commit) via e0d0c518daa5e10a417d16ad8158e97016562342 (commit) via f126416240a3ae1be69792361bca8bcbb84e62e8 (commit) via 0a7b24850e0cba956bd836ecb1f60959cbf75087 (commit) via c6bdbeb7c468489da9468445057d245929c3d91c (commit) via 59bd512b9c54c6fa2bd951cd10a1ca1e6ffb3dcf (commit) via 2a3ad588e0758bc2c753dfa216c344036e5a22bc (commit) via 117eb594228cf5447e49475e4fb33480c1f717a7 (commit) via ed5913402bd4d50e342d4350ee5e4662d98a3947 (commit) via 776ab89fe3cdce91cd644058c9fcda0c506f995b (commit) via 5c1e6d53a518442741f05175dbded0d1880f4759 (commit) via 52b5a0c663ba7cb4f1488a7e96addc303fc6e021 (commit) via 0630887d4ee35ab2236d6e2f3be3a86e6d881387 (commit) via a2bd7b82ee2847d0b9bc6994b7248306de3a618f (commit) via c0d6f62fcec939ab896e4839f6aa14ebfcd43565 (commit) via aa3b653351504e262fb455af5efb6eea6d981597 (commit) via a1530dc7319595b5980e8501092782724c946351 (commit) via 2906593ffecef89f8d64e0f1ca21494be71d0ebd (commit) via 5c4dde850c0d4874d3bbe6dd1989bf0f7a5ed1c3 (commit) via 0f575925b6ff89def089e6b6ba810ee547d3978d (commit) via b13057d9ceaa4944dc2d0ebf5df750d9350d0727 (commit) via 34d5c40a07be4bc195d5ed9aecf4eb2faa1482bc (commit) via 25ec8924842a215e7f684d3a5076607409ac822f (commit) via c620ed8866cc90ccfa363daf98ce7061d076d598 (commit) via e48de49be52cb6e0fe3edbcdc3e63bbc2465d930 (commit) via 3d2357068b03edc850b3d84a27dbe6ad12a66d6f (commit) via bc4268a5d926c8f29e42d245322145dad131627f (commit) via c7e4c0a6482cebcf8b129d1008a2c553a0183aee (commit) via 4b5e8d19afe4accc3dd87aeba58d6704e71c610d (commit) via de28a3b72e4e85233c6ece9063696b13ef170c00 (commit) via 507dd60e28d0ef35ffb7c0880933d6b88cc3f5bd (commit) via 5beafce944b6b200d1fa80d7f4a8656cb2ecf2fa (commit) via 2d274232f3e693d54f8dd561de73810d1a03ddf7 (commit) via 9197cd8b52aa41a04b883d83df863ecb5afc5d35 (commit) via b528dae0954436ab103fb8ab6fc1ca632b4a7c51 (commit) via d17725d72f25812acc8bd16a368c0e889c4b4d1e (commit) via cc5277b173701364c10204f316db28198f2c683b (commit) via ac50aea1311b01c745afc4dba102a8d20d0eea6e (commit) via 4538d1c7c46e67b472d8d5ebf163f3dfd9c67714 (commit) via 52b75bf1dc759e8d9eda9a71caa52e458e57e4ff (commit) via 2b1d00c2b828ea98fb61f07496882f8a7aa99f5f (commit) via ded631d57dec8c75ff5713f062b1c5667c31ec23 (commit) via 58ac439d385a285382733a35ca1fb2666edf6540 (commit) via fe1f56ee14b2c30f088dc65bb4b67b9793199cea (commit) via f790b310d2c29f08be79d6af8d8c391bf793fce7 (commit) via d95fc6eec07344f83ec0aba4a1e4f17fb53da45b (commit) via c3786b3aa311e7fba247623a98135d63d1d51c99 (commit) via 1c316af29ff2db118796de1486bf4e9673ac2922 (commit) via 6bdfee81576aae55666a9245cfc0a316a6849957 (commit) via 98a617f8d5cf9bfb53b2e1d5cf3f0e0f188d9e53 (commit) via 5c076da45ce9a24d47046ddb0bac02e158e6bf58 (commit) via 1aff7173105c9540bbbef75727aa200f5c288b2e (commit) via 2dc80cf8a5799120fd4e00199688f721e7de2a62 (commit) via 567238c956c4e5530bd143bfae9393c7ae5524cd (commit) via c89f9f2a528e490733ace16204752e9af945454e (commit) via 89b085acaf8d449d6c9c0b0490c6a0c9a745db5d (commit) via 1512d3b7b9de3a1943623f2e1f373459d5d80a98 (commit) via 8e2e3c6c346c1c8142e714715e5a86b32f7e31ea (commit) via 6dd17ae0f9b0d9fc230e75ce345da9793498554d (commit) via 6e99a238f01fcf6f77ae25e8ade57e509a724b1f (commit) via db2307377ffcd295f212cfa753e3ff45f1b85fb0 (commit) via f32feb4ab3c30a9a80e890a51ceb94b7446bd4ea (commit) via 297989a10c56aec56eab0ee63f1e61c33ab20905 (commit) via d079b9c04afb48ecba42c42632c34974f5a32ce8 (commit) via 48467cb99b04c9d908ce2dd74422c9c3f322ccc3 (commit) via c7c860d2d29ca3e774c29f328d2af42eeb031958 (commit) via 2e6be59c8de57c32260771ac5307968d18793a0a (commit) via 442853af244e0352956a5d91ad5e169a85b58710 (commit) via 75b493d0f95c6037753e0d250e1ecc6fe8d46c38 (commit) via b3b965fb91e1671da5b7d42349fa0d78e80c29f4 (commit) via 8f79c1075e8f258ac5a909b39704009ebc440e76 (commit) via 4625b4d081eb0a243c6c7370f9a12c97bf6bcf65 (commit) via 9596751830b82b3ceaf8e6bb0c333181dfc96257 (commit) via dac6552d4a203db908e11ba4803c7e39e090716f (commit) via 0f3f71676a8971e0376d7d99b383660f06ff4d95 (commit) via 7e126ba31ab6536b1dd779e483b72f47d3a76742 (commit) via ef551643dc282159185cb9916c7cb0308ae03cdd (commit) via c54e42531adb7bf8d58bd4c3c8e0c710305959e1 (commit) via 2f86d5594071a16665711ae13da88af1cc904371 (commit) via cc364be6ff45669150077387f22723de33d5f1b1 (commit) via c5e20471be97e2dcd3498ac284487e2546715f66 (commit) via 7613ca5e3885b8e79d9096a53f3e5492a5c06cd7 (commit) via 7137a1ed0ad9afdd57e6ef44abbfaeaeb44dd17e (commit) via 024a5840006aba9ba698aa9d868a7394016dd4a0 (commit) via c76ddaa3f4f8313976670ba8f15163a3544eb1af (commit) via 407bcc63bda3d78bedffb49ddebf0b41294218d9 (commit) via 2e8136f9453e21414cc328d025bec33218176b66 (commit) via 19889a58358ec7f6981c9b20b9541bcb95a839bf (commit) via a028026d2f9bbeaa2217aa8aafa1463bd88463ba (commit) via 9a618ef61593ea5103aaf17bbe968bf552aa3de0 (commit) via 40eadf04ff1f0eaec82dc911cf079555cdbb03d0 (commit) via 8c728a9d93e2342c57039fcdd6e4a502875b9e09 (commit) via df3a023bd614133fe69afb02cd0e8f3e590a36a9 (commit) via 06f44071ccbeca33fff70b928b71d95a15982740 (commit) via ec49711a16785636a5b9eac3a92bd00382fcb1a9 (commit) via acea835faa6e14c0b008f001ab145e301ff215f6 (commit) via 89ebb345e7f5e3ab97638eff7b5914ed2b2e0df1 (commit) via ac79ff9ed2f2d6e87a46146eee28a1d8fa631398 (commit) via 1dd1bc4daf99ec7ad1f9a6feea8cf4ebe715a92d (commit) via 5ba29434765feed692b6342a8b0f853050be2402 (commit) via 89356123a17c27548c7e71f4f000b1f74e551c31 (commit) via bfa2a36d94d124eb7b54fd271a543047579b47ee (commit) via 0c628bba5afd16e0ab3d78ca81ab3f2d5342c50c (commit) via 236ab0c60c9cedecd4fc23b526a588ee25636c13 (commit) via a8e9d2471806ef86ff7aec43164a6fe347efba3b (commit) via eb86c5e2e824787875187901b12fba52ef873278 (commit) via a8eab7c6d529ddd248ff5243bb22e9346196e376 (commit) via b4603c34644847e2113e8c29408db09049c5c30f (commit) via c32e6a04f42b8e4a1392ee4b87d040c06b917ef5 (commit) via c8cdc1e08312a238a9138b55ae080ceeab14845c (commit) via 7fec04c365ae2468d283fb3529a9ea334d6e528f (commit) via 86ceaf9867288530af927aa98680526c897cf4cc (commit) via f720d67c59a4c7e6bf92538c6bfc8dc76f7c7224 (commit) via 9ab3a74416dac187d56fcf292b39b681d1362dae (commit) via bcbaec5c407a9301ed987d380ac49426a84c3a0e (commit) via 01e175fe1b21950982642713513e442fc09614e6 (commit) via ec38ac465d632cbc7fbecffcaadb7c6ffc4b5f39 (commit) via 56f79b630766bb134400b4a8da43941cfc31c0c0 (commit) via 4c5aa8e0b1b4439f73ef1f82344e408b989f85df (commit) via 7cc17433020a62935e4d91053251fe900d83c7f0 (commit) via f42b26179a8606d31959207a2d8eb8582b650c99 (commit) via f29ec966436f98e761f7a2a7183ad8ebab68c2ea (commit) via d105cce5dd8d6a5218b044fc161ce89c6b245432 (commit) via 231097b03afffd0c5a2b520cd999dbcbe8d64eda (commit) via 1802aae8449a4d693ba1f4efb8a7917c2f20990b (commit) via ccbdd22fb96b8680ebeaecd829e8e51958845a8f (commit) via c213164ad2505cba5263602b7f9fa9a4dd1adf39 (commit) via 7a708984176cc2d247d7dd96d84c7d7501bae6eb (commit) via 88468fe09628974cde7dc891d088cc1e0015fa0d (commit) via 6cbb8e87ee4682c47eafbec670d62ea2a7a89540 (commit) via 12a0b67d289e2c3ed266d93e8a8c80087f7d18f8 (commit) via afe09f0b6311a4dd1a7e2dc6491550bb228734f8 (commit) via cd215b2eb74c179d936a3b28577753a08de1cf83 (commit) via 54d7dae59a2239720c848985a7d50a0a8b3319eb (commit) via 71c4e95abe66ec9fc2c064268e3f9640a5b951d8 (commit) via 46e9995a207140408309dbea40c64f11843db777 (commit) via b00a0a86c40c681cf4b22a3630f85188ac849721 (commit) via 0b1474281c659919d9c63ccfd6891b9e9ed0fc9c (commit) via d0044bac9eb6c5476d29c41872bcf8f74a990d4f (commit) via f264fab3cd9364073ccf7c32f29d0f1aa7c99159 (commit) via e0b989a6d74efbcdadac4974d0b8520ac31cd9b6 (commit) via d8f68fcb9378b5ab1c945fa676e11da15be56dd6 (commit) via ca5af91ed271a12200bb40ccfaaede4baef6f5fe (commit) via 5104fe361d818a46b262b5d504f3d293c9a2b44a (commit) via daa15dde7202d948da694bdfe0df9e5294c7ee9a (commit) via bfad4537079109d9c41ecd86af9cf84b6825a192 (commit) via 88f7e873362279462c676b26fee62376dba82b5c (commit) via 96bd6233af7c01885de4f4de3a4016014d61d859 (commit) via ce38393b1abc2573d6521d11ab1fbfb5a28e5109 (commit) via 2d8b51cba307333b6a068296d9668cd01164de28 (commit) via 18ab23af8b3d473f795ce48ee54a47e1a3e7ae47 (commit) via 88b7e7ccb958220adabc307e6d38fc66877820fb (commit) via 0fcd37117e94e5b9bf5f4aaa4dccc8038b38398e (commit) via 4a38112da00f45527de4aec0b645443c6ee0e01e (commit) via 0912922656b9fec5f04623ea49292b7ae564c7ef (commit) via 4a8a5e84a777c7c267503a1d1ee15bce2ba19d1d (commit) via 76d2be8e92a900558648eeba6b4ff95cba62801e (commit) via 890b8bde7a07a412bc1085bd4724bd03500b0dc0 (commit) via 2cdfa11333867dbfcb2a6b631cda989d64f68944 (commit) via 8e3cfd09e813fc1a2738b0d4d19d15358e438ace (commit) via f4e049775aa3b025501d6b4aae1cdb975505a767 (commit) via 0379b8837a875403866e2cf1a0315bee1d8d5694 (commit) via b7fbad913e8874b9a887eb149b14975343bfb7ab (commit) via 4e1e56b9818109a39bb1b035fd50dd05a00699f2 (commit) via 1e0c09ba0bdd8b4dd1ab3a61b2ae2d326825bee1 (commit) via 1bf605de8e9ae4fcf77c21067ddaf4a242a873f7 (commit) via 098f9ed48e1c94a2624c825ba93d72b163d41196 (commit) via 801109578cd2a6ebd690dd23f0d4a1f4a67aee09 (commit) via cf82af058d2f1488d8f8a096d7e3b76d1d5a4f46 (commit) via 01aeb396d0e7a2d76f5f2391a30328dcdd5bed1e (commit) via fd6c75eecd92ad888cc369489b31d2ed9015130e (commit) via f6cc34a91c173634b6afcc1a48601a601fbace37 (commit) via f31ec9af48578adb0baf8db3e10da871d6ee3eca (commit) via d1b6f1e5ebdd755274a77a31c4afa48969b73bee (commit) via d9743a13e0c9e3043ec3ad979534fab44c0f17b2 (commit) via caf0bc4e8bafc387c8136c0f63748e56245f779a (commit) via 9d391078d1238e1be9dea5a775982a00a2497a57 (commit) via a38da35d7bc89e4c2191d4f042912038c585f36d (commit) via c2cd8994669f63eb415522352a5d5006d0fbfb48 (commit) via 4dde7b34f4e40ee6e0ea596357e4def60bd67d20 (commit) via b73dd8779c0530e91c6e5067eab4cb7ca3f794d5 (commit) via ae2b53806d3ce384e349c722b21a7ad246102d5b (commit) via 1ce3e8442e5bab6f700f5f011de56201f76b8461 (commit) via fe3eaf1cd9af54cd4c678a8dde7fd0df601c9490 (commit) via 368c1354e578eb280df37059aa6b8c1f178baaf4 (commit) via e80cd2047079a63ab087df15d179c49ca18de202 (commit) via aca2dd16474ec88b3969436044801f58f9163c5c (commit) via 517e9505fa563c83b4d5cb192e423a0d6baac752 (commit) via f76d8b19e80b43a141ce31c0e0230e23f676182d (commit) via b4094625d8a3e2b528032e2ca8d8cdecf222bb7c (commit) via c223a7299e2bdb604d7006842eda7165bcbf2c15 (commit) via 50daf2683bad925470f6f1bd08aef928c2f4d6fe (commit) via df5f8cab00a8076a5582efec028002d323950c8f (commit) via 80cb6c27099e199cca01bc1a2efb8e8fbc941a48 (commit) via baff0c28b83bd1ad7949d07b78fdb85ad6be49a5 (commit) via 3b23c5f2662d3240cdc586d3d2e5fb6eb8cba4c7 (commit) via 0b5ec21882bcc27e93144882b84935497da6e7fe (commit) via 0807ab7b88fa5ffb138ba1ee22b33d26e239de2f (commit) via 9ad7fdef7c72b2aca0398ce8e63b89e560873807 (commit) via 5813316fa4aeaf52f374c20c7fdb9747b88fa8ca (commit) via 00e264e7626260a6df6b5a0aa7ee25215ea93f9c (commit) via 06210ce428ad74c28fd94f7ea3800b79791cdefa (commit) via 381befeedf9316991d47f4213850545a96593d23 (commit) via 6b78c3f83c8bcbfa714aab7627ece9673b2d602a (commit) via d72a9b85651c872378f6dd732cb578f6f055a9b3 (commit) via 8dc0818eb2c449d553065b57e6953436896c6e5a (commit) via 1d942ae90810156b9875ea3e11754ab447c748db (commit) via bd7918379d2688898dfb29851f2019d2a7a70959 (commit) via dfd6917457a3030ea4a4b6356f65216fab92d0b8 (commit) via 21df382b918888de64749e977f185c4e10a5b838 (commit) via 206e6c58a769f9ec63827b8ca3952b0cd8c828ba (commit) via cbde90f25ec66b359c90514a50bbf25d122bb7e3 (commit) via 7e24fb63e7db33d3627623629b0e99fe322e26f9 (commit) via 07128006d6caec5df31a960b131d2026f35ed948 (commit) via 1f77b012e61ec11c92a35223fdfed598c6d2f4e9 (commit) via 33eca68072e73d984fc139dde45b8140b94757cb (commit) via ca8d69beb1024316af8dec571584437d613f40d2 (commit) via 3719fd55b6f89662653d50d33bb267c5f21127a5 (commit) via 5b9d7a9a647260ba754fbd2a176d37806f15acc8 (commit) via 03181f1c38753b24e9d13491e102b5fa685076a2 (commit) via 92434a14b97bf07546701613a16aaf4d8a3b3eca (commit) via da73816739483bac537403262cef1c460e43319f (commit) via 48b550c28afd21b382e21e56b7ba246b3bf49d4b (commit) via a48654b6d4ed558d632dca3d895e8ad2f0dd57a6 (commit) via f26a32876ba49b2d5537beccea2a38bc544e9732 (commit) via 7b2438015ca87297b2796c662182f796bb5358c2 (commit) via 0c951c25c6c7cfbf0f399d34277f73b0fdfc18cd (commit) via c9b8abb7af46c9da4b50ad8495ab2824c4125962 (commit) via e4dff7651becba48d805e39655138f7f6ca30485 (commit) via 220f99066d6ce2a6caf17692fcc57d714d8f6910 (commit) via 32f598441988e5a086ba8580e82f4944c3692eb5 (commit) via 154a0a90ddde3a5d538830527ffd6d128cb23b1b (commit) via 0d4e84ed37c404eb7e691ee9d68ae2ec758d8f66 (commit) via 9a49df9d4bfc7ff03fed751e12b1bc32fbee4fb2 (commit) via b86352cfc17fb7f07d5da9efcfd59f8b2bd08eee (commit) via 603490bf53fe1885ef45f9d0fb783b32f8ef6049 (commit) via 592f9d271caaa22a6b299cfaaf6ce3394796e0e2 (commit) via 830b67068cebe7db0eb0db3fa19244e03859fae0 (commit) via a89fdbdb201764e3989e9113e03a769091d42cce (commit) via 60cfcb20ce8f95a6f71f68c51b295defa5d27032 (commit) via b16507e0917169555f8bbfcb1d6c9685813ccf6c (commit) via 021d8588f6ca843a2aada955d00851fbb62f8a62 (commit) via b777eb6de24ae1a1dc2f1e48d593b0a5c79937a9 (commit) via 72ee03ff58d954dbed886b672032c8c9db0a0dcc (commit) via 00db9531969db8b6ab984da996d0411fad938589 (commit) via f2478a7e8b145a55c343bc7a62c53b021062229e (commit) via 2ee0a9b7bcd86721bd44d8a8fc967b2a8cbe18e0 (commit) via 0d12e84cfc9bd36b7bbda01a3c8f83f65a832398 (commit) via f06f1252b0b8ef20adb4296faaf8293c9d36f615 (commit) via 7a5d944b9e86bf73ae5acaa984df24d175b80f68 (commit) via 48c66e1d07d65a76c685d10003d751ef883b1244 (commit) via a269fbf12dcc621c45030ab9956ae28053878b7c (commit) via c294730c54f15ea69b18025025c0f191e5876301 (commit) via 9d52077d65206b1e0df62f05b577b5ceede1228a (commit) via 22a20dca3a96c481093bdff5e17f1feb0f9e345c (commit) via cb60f4208b2b920614306937b62bf15700824ee0 (commit) via 51df2ae3029caafd2b832e19d2978114a7e25a8a (commit) via 18101a352541a28b8e199b4d7b9f66989681dc02 (commit) via 05b08ac1608c8355201db21fe4c871677466f0d5 (commit) via 32372d80caba2e223157eca6db2fb0e65369c3c7 (commit) via 43dd762689eb80d5c93a6c1079697c3791fb46fa (commit) via 5c458ae8f529a11ecab9db470d80695bb31ecfc5 (commit) via 4c462cb0efb40a7a1e5297946bed59286dd0cf02 (commit) via 89abbcc26d891425678b8b463bc1fa81273fb54c (commit) via b863685d70199489b3fe27abedfb1eb6d1452b7d (commit) via 166a82be89008621a31e6e56b2d52a049b53e341 (commit) via 9fb4c7e9f00accbbf92fc0b0a53978fd50ff6bb0 (commit) via e2d0f9803e3054b05c2de716f3c928e510009436 (commit) via eb6ad40f244ea6dedca1440b0ce3d89c1ecdac0c (commit) via a38118e5d165324b4f9509fd82cf1f1c6421bfc5 (commit) via cb1e4e32c2d9588e1d77ea49bafb5dcdc1cff764 (commit) via b58a68fe5709ed205c3ac54065f1783ce58d9a01 (commit) via 0826779b99b49f7f8df5d186f3c481b6007010d4 (commit) via 268a13a5a3f7c6b9b6ffc5ac2d1b24eb41f3fbdc (commit) via 5b0e2db4fa08b43e9ff78d6e9a45d496522bd241 (commit) via 0ba852ab4126a6eb4be88577d62dc25f2be7f725 (commit) via b3a7d1711e4557811865333a0ac96fc16b750869 (commit) via d69cd47e7e9884f7b3a319936f70b8d93347e9e0 (commit) via 64da05d557f59814151e908a34f36996a027d127 (commit) via 1f6f6e21fa86dc3411a6498608f32e9eb24b7851 (commit) via ea142fbfc9c1708a83d3532257d6728e1f5c142e (commit) via 62a47958bd6e3cbd909c2f19cd4669a9670ce4f1 (commit) via 3836e1d1ab859b9f6c41bc4565ef779640b7c706 (commit) via 55904abea47780ed16b4f726862ba1e14d05b96e (commit) via 25c816e70e578b8a9abab0dada0490dd5ae41780 (commit) via 923cccf9bcc2b97298c2c0563326193948410311 (commit) via 98602811d838077269e361e9d807fe530c780011 (commit) via a0b6cbf69db7427cfdf054092062fcf82eef9a58 (commit) via 0598af4880f58af5ce7c15419551362646892c7f (commit) via 213fd9faf563ce5726ce66c8104cbaba44ba9c09 (commit) via 350fab54163e2dd178609d268e80bf31042d182d (commit) via f0452268d6c7296106aba81f532b04dc08187352 (commit) via e935475cb6bcd8146717896e88824ae93a0897c7 (commit) via df0bb381e27a8b1594c492a34c48ff6e6bbd29d1 (commit) via edd6266ab14004b02065ad9fb98b1da323a41981 (commit) via 2b40fda74b2af11a914d50f4e54c1472e1bd81fb (commit) via d4693039f950eefb983a66e3270209b738e4ce8a (commit) via f2d4ba38f5723a207c40a288036af2f38b70e837 (commit) via db7fbcbeb749c0d4ea19284438d62b253648c58a (commit) via a26c8de0ee938a48bc6f6232cdfac1a5eabaa778 (commit) via 5f4ba3e701d74f280d4bd8820d9c39a854e0d2cf (commit) via a994424fa1e80d982644038f1ce6538e247aeed1 (commit) via 3d9be6f531db395a5ad940ef06e56d849f4de646 (commit) via 41fc454c915057d9c5536617370c5eb2a5f71323 (commit) via b2b2a2159876fa8db57ce017b949cafc6f1a32df (commit) via 077a039f70d870899da31eb8cee597964515fa3c (commit) via fdbc98707b0ab48fd8ca3ac37acefa120496baf6 (commit) via c6ac893109fdc2c3fce2b7457adccdc10f235354 (commit) via d1fcf2fded9a5a54d0714ae01b60ccb57e75b8b5 (commit) via 970f9d091dae835304d1a96805bdb5c081a40b48 (commit) via f3869b1a41a809f208b964ee00cea74bd905b75f (commit) via 9be796f35b68aee81dc81e1c9b7410067ac0cd42 (commit) via 54d6600669256d2b3582d7088d11ab18f6f21f0d (commit) via 1faa385ff6b11df26efc46152fe15b31adbf8624 (commit) via 854f60884cc35806dab1c0f9e7711c45cefaf7fc (commit) via 125f83f66c10c89530d011f4f81324b1f43afcda (commit) via 163b2c58bdbf0cba9a085574ae88d4c757c6567d (commit) via 4d83e8d97e3b15dcd7b5c58f4199e9f5bd6fca3d (commit) via bb32413ff7247f5ac3685ca9075b3432bca69a82 (commit) via 01c1ee4a70478178eb37e46692a02fb846a2f77b (commit) via 83adff695c522df8259e421162e194a95713eb45 (commit) via 8941884429c305ad42a41f759a98c8cca4d4aacc (commit) via 390b205f456be85e309570f1b6e9b75f27194de7 (commit) via 54ee425275c759438d90c40781e3810a551f0a5f (commit) via 269b4ded72af1fa05236f866b518f05cf2d408a6 (commit) via 41be57caf36943d71ccc6ea70be27a4939399118 (commit) via 65392b3edd1f6873204a4890efc286c8970abf4e (commit) via f2f51cd5f511fc562f830818ec4467d8c3cced56 (commit) via a6ce99e98738289658d830def1b6eb9546ab551e (commit) via 539300fb929ada830ec7c4002fd59f0d86c823b1 (commit) via f57cf0e3e357255959d00626bce5c21396e23212 (commit) via f5e9c9bde04ae52b92027b78c9ca20055f1afb78 (commit) via 9658dc39630b8ac4e849fb529a53902da5fc2b1f (commit) via 3e10cffc9872fda4519f76ba487fd108551a179f (commit) via c550e7ba937e6a5e04c17275efc362a74f8fd1b1 (commit) via 900e33b9cf45dd70012af7fc509119edebb93339 (commit) via 9d3bf266fd601031d12584982ef43df22c95e933 (commit) via c3949f432f4f7e4a776bd15e10dad56593abeb47 (commit) via 5641ec015a191e0584fd4cae57bb3262f7a51735 (commit) via 79dec6b7baa243a4ada018a082491990adb6aec1 (commit) via a80195f1224aced64392b452d55980b6bbd2a8b9 (commit) via a0a1771e895e6606a2a795c407e20aed73f69bd9 (commit) via cd546e7bd2832c882e69809fdbeb7b376b62039e (commit) via e3bba3fc751d2f8eea5a25b3f629b0d62257db86 (commit) via d583596cc910249eff97e8f9b67c6524fb68af72 (commit) via 9c33702be70a7db648414775faa4850e7cf53034 (commit) via 36cc073ef40f2cb9cb834cdb5d543fbb284f2b32 (commit) via 219920a7c49069e30a7be2b166099bf795837a6d (commit) via c444fad6da089b5b94ae7ea2aabce0521695a8d3 (commit) via 7f1c798dcc79c969d0e94bb787faa75cdf704b46 (commit) via d6954c38df90637bc1b0cc2b20473e2754e5eff7 (commit) via 7d7571f0c14b4673ca95f6dc31d6f07d429e6697 (commit) via 5af5392a3d1525fb825747b203a6159ddcba0aa4 (commit) via 10d06d821919474afaf59fa24cb10450d2349131 (commit) via 7e56c51c7932cfdb178e9457011d09d53e98937b (commit) via 781152ec18f56726c750cc0812a740396e4ec820 (commit) via 999d6dff80fab12d22c2a8d91923db6bde7fb3e5 (commit) via f60c61e60e59c2bfc5fdd1b448408c2af287899e (commit) via f073a3e8c6735bd8fc24d35a957d8944087ea367 (commit) via c432bbbaaa072438e6303b819bdcb4289c2b22e0 (commit) via 60d53d7f032ad7af09760afbaf01b2ec413f198a (commit) via 0c823d25a6eb29b331a58082e08f4b5fe06e1394 (commit) via e395f487b3758b3de99fddd2ef15a799e9fc1203 (commit) via 1b7f24cd6b4e96c64bf82eba06be2c48942699fa (commit) via 3d507ff23b724ecb2b9a5a61cebd0fba275cfbc3 (commit) via ba85f98c42877287f45644a6d75513239c9490a5 (commit) via 5ceb1f4d804b09cb8767ca704c2ba41e50a2bcdb (commit) via 2b7bcc8740dda3f314284169aaf1759a9f56025f (commit) via c1dc7af52143966da8065b527e7a7000cf9f7705 (commit) via 65bd27298d31c6733b68d0cd6b7a4fc26e0598be (commit) via d7560e2df501c7da1b0e4e64116dd52fe5715a96 (commit) via 696d5b3801a0e9d6514a92734bde09985f968a2f (commit) via aa108c0c462e43ab77a1f178d8c8d2277ac73a57 (commit) via a68aa5d3020948564ef99d704d27e458ba22ad9d (commit) via 762c164d754fc456aa4764d2ed19cc4a3ec625fb (commit) via aa2f9bcf23a00fc7e9d7350757b8938c36106c42 (commit) via 3426ae5760319b6b31d71f3ba798154e6fcea34d (commit) via 8af58ffe5d06eaed8adfd1f0db2cb10d38c364e2 (commit) via 22e217527d1ba9ff3d933a14c9d81b066fac606d (commit) via a93cbd6e69abc024bb65c8c398fa9898e551860c (commit) via 4838e44c8fcb2ce2316294a6f30b8d40343c36af (commit) via 54cc7474d4851d0e76df5252478a5ebd76b61508 (commit) via b65b566cdcb577edb57616c5b49a2f245b56325c (commit) via 9b444f9533c38016e4f2de0198c889b13a62d2bc (commit) via 5c2c8c694de18370ac6161a21217627ddadeafc7 (commit) via c2fc64f54ef82ccd2fedc9078c539ad273e83a0b (commit) via fb54fa768d148ccd07f2b27ae26e87d95605986c (commit) via f7952c5774671414d9e0e8d3524c2921daa6f28e (commit) via 17568d782d96434537fe9698c5ebcb09f35c20cb (commit) via 53e7cdbaa1d8c0c53038226de07d8160d7f66d82 (commit) via 7908abbf18dde6d3163758e447d72d6d2b267927 (commit) via 02c28df011542448e99041e32bec331c92b39945 (commit) via 6658b1bf6c2d8d9383826bdfd4068b77d38b3b94 (commit) via 21e1c91ef99c3785d1c31314dff574747b4b6e68 (commit) via 115ac53b852ed91e23d97e8357f24216609fa86f (commit) via eaf9738bedf8de68d4bf8eafd0689cf1973648aa (commit) via 31ca47237fed3db1d912127a386cad6ffbb06750 (commit) via 41bcff7feefea958e7be1656e087cae4d54a2af9 (commit) via d2802c33429eb73303dc610401f5d7d27e071ff2 (commit) via dd835f8b70a2dfb4d8b84a4744606a9c922aeb25 (commit) via bd7db367c4bc72bef9c7848b99aaaa1431cf1672 (commit) via 3add462fff33beb0e6f1480d3853eb56d664b438 (commit) via 489e9d8b7bb3337a7f4f902a03c176c22faeabc7 (commit) via c3fabb7d69b3735bc6042a2992729944c8ced62c (commit) via bbc228ee056cd006e971d5f1cb70ae0f69c1eb36 (commit) via 5fcee43a960f0735c53a7c24823b2e4bc1460b9f (commit) via d83f1fe65da075aa08ac7d6b6ef3508587c94600 (commit) via 17374de40e7be36e4eb27d29bb8aac89586ce4a1 (commit) via f936bca26dd7593a3b792e76eba37c5de2374961 (commit) via d6ba6a11642cdbec4ce91fefe455920b5c073f60 (commit) via 48a3bd16c2189174f601600dc6cceedd68e908b6 (commit) via c3bd716ffc20cada32e8a18a209638b578d47f5e (commit) via 21c32dca764039afd3517954f6dd0a23d0c9e16c (commit) via 73fbdc65a1f3da143e604d95443dc11ee86af710 (commit) via 3332534318eb10a77e441307d28336996325558c (commit) via 29d2c474f5a397017455da82e6dbc72629186359 (commit) via 152f3f4b3342ae16df5ae0640896b8cea008c893 (commit) via be4da58857ee4a26b7e58893211ea4f54922e8fd (commit) via 5b81daba91b035ce98fb7be4970fc2be0183f6ea (commit) via cb2ce89305264543a4014d98bacb26800d92d394 (commit) via ab313b35e505ccab9c23acbe82087b6c22a2088d (commit) via dc2c33e4562e0af441a9c8acff0400a78cb45d98 (commit) via 214a5cbea656f3ffc1e7e525627c56849347c709 (commit) via 8e2daf1532e587fee8d14aab1baad40e628065e2 (commit) via 8903bd8a37f905f5d77d2e04219e1a1eddaa6133 (commit) via 3f02ce1e3df15731872befd2e711854b2b259745 (commit) via 1825f487ae903438eb2a9b6f461337d8ec1b06c0 (commit) via ad54d15bdb71b05010ece1ef32ab22ab46794166 (commit) via 2042b506c85274b4c652fbc9291be65b2550104d (commit) via 56122977c04496325ca9d83231e7751ab94d6b14 (commit) via cda37efbffb63e2634ea0600fdad2de6a8f9f3ad (commit) via 6a0ee02c22b78b6d49fda99b6f2f9154d0cb0a47 (commit) via 63901aeccf923abaca02c8a58b1141d3859d7247 (commit) via ceb13a13822b28d8e1cdc2e02975bb6569d3d8e6 (commit) via 238eb706f902da8afef1d5e3c9fdfeecf688bac3 (commit) via 81491aa0968e5bcab0388914f909ccb12e084e32 (commit) via e6e4150110bcee66adfadb9f126eb3bb1fd7c054 (commit) via 44f0e208eb32a7ac469cef2b6760f72534abac09 (commit) via 7778b9128f46b1bb7af965ae3821f63b05c627ef (commit) via f83d391c5aa3304faf8ef1384a6c64f082653260 (commit) via 13446e05a363db17f0140b1450fc7df509d2ca37 (commit) via 5cf82909a7047cee471ee40cfe623250c258d76e (commit) via ee1d42d6c1a05725868a8ea4855eaa81cbbda635 (commit) via b4eb24524b5838141bd3c3998afc81f65302eca1 (commit) via 8761a91b2614304963bfe211ff8c682c7eba3b51 (commit) via 0ed69edaab683b9290a05962faa50d970facfa84 (commit) via 82432e10143669d4936848d77e2a7b78c62c26e0 (commit) via ec328aa512ee09ab326d59b417836bb950083230 (commit) via 33b906abfa7721128791883875d90394f8e2e7c2 (commit) via e7e11af42dca6482302833c4106974176aa66052 (commit) via 6792b55e08ec49f40916d4f8d7168d0047b9e928 (commit) via 8e5cb9a54e156ba24a439aefa7b35e53b4cb0374 (commit) via ab9f654ca3f1222f63533aabfffc223ae1fc69dc (commit) via 3e50a591d9f0c0b22bbf93d09eef7d2286f3716c (commit) via 63160fc99678fd85311ad5c89494164e6f8439d7 (commit) via 2c70385689542a4c4cbe160601e54f9f18a4c4c5 (commit) via 4970191fa557c4769697fb41db06f2dcb5f7de2e (commit) via 54fbadc0c35f3dad663e2e175ea8d60546ffd710 (commit) via a38d71189b5895bae7bb476aa34d8a7ba75376d6 (commit) via a280ab8e81498c6049dca79f64bd0cc02ead01ab (commit) via e1a1babdad9d14b935cbddc7d63fb76a580a16c5 (commit) via b8364fa775112f036a80e799b70311f69baac131 (commit) via 2a410bd1c373d377c221476ccda2156b595e6d6b (commit) via de62696504f96816faf2165132d907924e904649 (commit) via 22f72c4868a1fd55d8d9b1cbabe6e01ed5a6f072 (commit) via 2e7c439dec066ac8a597d0b85193b8d3ec8e09eb (commit) via 04b865dc2ede2b8ca8c60f0487a179eb97895fee (commit) via f93ab3a0b8039a1667a666f013cca50b03d67f9b (commit) via 164e3873cf41d01a9a67396575dceef7489cee64 (commit) via 824eacee59ea8c5625b9fad5b6eb0861b4d0f691 (commit) via 385b97d3ac9c5c57a610d2e5b358ed888008ae31 (commit) via a33f989b4ed69c9f8f905360444e3d57a83a0cb6 (commit) via bb22a41815facfaa3de621aad5d055eb8e477082 (commit) via 14b2a8e4244a29208ad430167860a0f01b20f215 (commit) via a8d21e9ef0ae63c650e2ffa14edf5b1cd22be5cb (commit) via f95675e12d3ab100ce11257a09663c68df7784ee (commit) via 5bff081c10ab4debfd3416739fda93b6c275496b (commit) via 47e3f47487396414ac936e2fd37b870fe08a55d0 (commit) via 5ec331ef744a495ad35469928564a43a09391562 (commit) via c596f180a130c85faf8942d161be9ecf71c6791c (commit) via ad692897c12247d1f8fe4e6a2f6e6d9f22703170 (commit) via fd5866f6aad7336f7a2b59578b9deef81383ea3b (commit) via fb1eb2f94a62813ab3daa34da59c035717ffb9da (commit) via 51ac9db596ea9f0affa9f7db25bb179cf70beac4 (commit) via dc4ccb6f7f07e41616fd42625226229f0795d198 (commit) via b13a7d03c29e28bc0b38ce166ad1907403709d36 (commit) via be74b5b71481afe03aad074ad1951dcae152b97a (commit) via 70175d8d62178279d0fecce661b26a4f5b209fea (commit) via cf02c44dfd2876867ebd6baa3ce19cf41ff978e1 (commit) via 7cee18263c234073bfe88cbc962b1fc68509df82 (commit) via 0b4fa56e07639ed28cbbcd890868e01a82a5e45c (commit) via 364620bf636a0a961892c9274616f8d5ad85eecc (commit) via 65365aa856e5a258329dc350b02bbb51f84b4c16 (commit) via 24865428034f44d9fffe6b2d9a318e1bd507c63a (commit) via 890f750a3b053532a4b839a2dd6243076de12031 (commit) via 2a81e61405262fd0299a5079b29ce417a8edba0c (commit) via 7d10623d3b153d6c15406b203fb1cf111c53f1dd (commit) via e6a1c5cbcb9cee5a08d814669419936ee151b19d (commit) via 6f6ffbeb5a6bce5a1274478256937867f337a037 (commit) via 698dc1d7a269917df6237b80ccbb00733bea52cf (commit) via f0a6222e30215d4b8ecb8124fe5ad4c3f321f8c4 (commit) via 8d6a48df549cce08ba1f05350f592be52352c7e8 (commit) via f23f598e28ad39dac7ae87cdc400d2f6b27dc403 (commit) via 899277ae529c2b743d22093fcc1a9e46aff4422a (commit) from 625ae1b6b5d4a9f805d97640ef99c897279324f7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit e1c9923c858f265680f03f0fe5c48c0cc0bb243c Merge: 625ae1b 546053a Author: Stan Cox Date: Thu Aug 22 15:25:25 2019 -0400 Merge branch 'master' into scox/strace commit 546053acfa1518063ed0ea94c3e35c05089c32fc Author: Dennis Zhang Date: Tue Aug 20 17:13:29 2019 +0100 Adds support for following CPUs to the ARM and Aarch64 assemblers: Cortex-A77, Cortex-A76AE, Cortex-A34, Cortex-A65, and Cortex-A65AE. Related specifications can be found at https://developer.arm.com/ip-products/processors. gas * NEWS: Mention the Arm and AArch64 new processors. * config/tc-aarch64.c: New entries for Cortex-A34, Cortex-A65, Cortex-A77, cortex-A65AE, and Cortex-A76AE. * doc/c-aarch64.texi: Document new CPUs. * testsuite/gas/aarch64/cpu-cortex-a34.d: New test. * testsuite/gas/aarch64/cpu-cortex-a65.d: New test. * testsuite/gas/aarch64/cpu-cortex-a65ae.d: New test. * testsuite/gas/aarch64/cpu-cortex-a76ae.d: New test. * testsuite/gas/aarch64/cpu-cortex-a77.d: New test. * testsuite/gas/aarch64/nop-asm.s: New test. bfd * cpu-aarch64.c: New entries for Cortex-A34, Cortex-A65, Cortex-A77, cortex-A65AE, and Cortex-A76AE. commit b4e87f2c1eee99dee805e3828514f8afa162f9ba Author: Tamar Christina Date: Tue Aug 20 16:34:26 2019 +0100 Arm: Fix performance issue with thumb-2 tailcalls We currently use a padding NOP after a Thumb to Arm interworking veneer (BX pc). The NOP is never executed but may result in a performance penalty on some cores. For this reason this patch changes the NOPs after Thumb to Arm veneers into B .-2 and adds a note to this in the source code for future reference. bfd/ChangeLog: * elf32-arm.c (elf32_thumb2_plt_entry, elf32_arm_plt_thumb_stub, elf32_arm_stub_long_branch_v4t_thumb_thumb, elf32_arm_stub_long_branch_v4t_thumb_arm, elf32_arm_stub_short_branch_v4t_thumb_arm, elf32_arm_stub_long_branch_v4t_thumb_arm_pic, elf32_arm_stub_long_branch_v4t_thumb_thumb_pic, elf32_arm_stub_long_branch_v4t_thumb_tls_pic): Change nop to branch to previous instruction. ld/ChangeLog: * testsuite/ld-arm/cortex-a8-fix-b-plt.d: Update Testcase. * testsuite/ld-arm/cortex-a8-fix-b-rel-arm.d: Likewise. * testsuite/ld-arm/cortex-a8-fix-bcc-plt.d: Likewise. * testsuite/ld-arm/farcall-cond-thumb-arm.d: Likewise. * testsuite/ld-arm/farcall-mixed-app.d: Likewise. * testsuite/ld-arm/farcall-mixed-app2.d: Likewise. * testsuite/ld-arm/farcall-mixed-lib-v4t.d: Likewise. * testsuite/ld-arm/farcall-thumb-arm-pic-veneer.d: Likewise. * testsuite/ld-arm/farcall-thumb-arm-short.d: Likewise. * testsuite/ld-arm/farcall-thumb-arm.d: Likewise. * testsuite/ld-arm/farcall-thumb-thumb-pic-veneer.d: Likewise. * testsuite/ld-arm/farcall-thumb-thumb.d: Likewise. * testsuite/ld-arm/fix-arm1176-on.d: Likewise. * testsuite/ld-arm/ifunc-10.dd: Likewise. * testsuite/ld-arm/ifunc-2.dd: Likewise. * testsuite/ld-arm/ifunc-4.dd: Likewise. * testsuite/ld-arm/ifunc-6.dd: Likewise. * testsuite/ld-arm/ifunc-8.dd: Likewise. * testsuite/ld-arm/jump-reloc-veneers-long.d: Likewise. * testsuite/ld-arm/mixed-app.d: Likewise. * testsuite/ld-arm/thumb2-b-interwork.d: Likewise. * testsuite/ld-arm/tls-longplt.d: Likewise. * testsuite/ld-arm/tls-thumb1.d: Likewise. commit d7a11d1383a2d0cdffc8c08e46b0cf5a66b3ce28 Author: Tom de Vries Date: Tue Aug 20 17:18:09 2019 +0200 [gdb/testsuite] Clean up stale exec in gdb_compile_pascal When running a pascal test with the stabs target board: ... $ test=gdb.pascal/case-insensitive-symbols.exp $ cd build/gdb/testsuite $ make check RUNTESTFLAGS="$test --target_board=stabs" ... we get: ... nr of untested testcases 1 nr of unsupported tests 1 ... due to: ... Error: Illegal parameter: -gstabs+^M Error: /usr/bin/ppcx64 returned an error exitcode^M ... OTOH, when running the same pascal test without the stabs target board: ... $ make check RUNTESTFLAGS="$test" ... we get: ... nr of expected passes 20 ... But when subsequently again running with the stabs target board: ... $ make check RUNTESTFLAGS="$test --target_board=stabs" ... we now get: ... nr of expected passes 20 ... The problem is that gdb_compile_pascal determines success based on existence of the exec after compilation: ... if ![file exists $destfile] { unsupported "Pascal compilation failed: $result" return "Pascal compilation failed." } ... without removing the exec before compilation, which allows a stale exec to make it seem as if compilation has succeeded. Fix this by removing the stale exec before compilation. gdb/testsuite/ChangeLog: 2019-08-20 Tom de Vries * lib/pascal.exp (gdb_compile_pascal): Remove $destfile before compilation. commit aedbe3bb9f03be12ad714adca1fefc391317bd94 Author: Conrad Meyer Date: Mon Aug 19 00:02:19 2019 -0700 Improve remote attach round-trips without btrace For remotes which do not support btrace at all, we can save several round trips for each thread. This is especially significant when your remote is a kernel with 100s or 1000s of threads and latency is intercontinental. Previously, with target, remote, and infrun debugging enabled, one might see: Sending packet: $Hg18aee#43...Ack Packet received: OK Sending packet: $Hg186f7#eb...Ack Packet received: OK remote:target_xfer_partial (24, , 0x805454000, 0x0, 0x0, 4096) = -1, 0 repeated for all non-exited threads. Afterwards, if the remote does not specify 'qXfer:btrace-conf:read+' in qSupported stub features, these unnecessary thread switches are avoided. gdb/ChangeLog: * remote.c (remote_target::remote_btrace_maybe_reopen): Avoid unnecessary thread walk if remote doesn't support the packet. commit ac533243beac35f158341d53edab53031218bcde Author: GDB Administrator Date: Tue Aug 20 00:00:27 2019 +0000 Automatic date update in version.in commit 52031738190ca1067bc6e40f662f4effcd428628 Author: Faraz Shahbazker Date: Tue Aug 13 05:32:20 2019 +0000 MIPS/gas: Fix misaligned address errors to disregard ISA mode bit gas/ * config/tc-mips.c (fix_bad_misaligned_address): New function. (fix_validate_branch): Call fix_bad_misaligned address_to calculate the target address. (md_apply_fix): Likewise. (md_convert_frag): Update misaligned address calculation to disregard ISA mode bit. commit 770c015139f038bd7b7abb5c6d84eb39d36d3080 Author: Faraz Shahbazker Date: Mon Aug 5 23:38:46 2019 +0000 MIPS/gas: Retain ISA mode bit for labels with .insn annotation gas/ * config/tc-mips.c (mips_move_labels): Retain ISA mode bit when moving labels in text segments. (mips_align): Indicate text mode when aligning labels in text segments. * gas/testsuite/gas/mips/insn-isa-mode.d: New test. * gas/testsuite/gas/mips/insn-isa-mode.s: New test source. * gas/testsuite/gas/mips/mips.exp: Run the new test. commit 7ce8f214f1af1dd593ad42665da416ac46033f97 Author: Tom Tromey Date: Mon Aug 19 12:46:03 2019 -0600 Fix indentation in value_has_field value_has_field had a mis-indented line. This fixes it. gdb/ChangeLog 2019-08-19 Tom Tromey * python/py-value.c (value_has_field): Fix indentation. commit f21c2bd7b7ef2a9c47e5713cabaa784bcf5c2bee Author: Tom Tromey Date: Tue Aug 13 11:39:58 2019 -0600 Fix Fortran regression with variables in nested functions Sergio pointed out that commit commit aa3b6533 ("Allow nested function displays") regressed a few gdb.fortran tests. I was able to reproduce these failures with gcc head. The bug is that some spots calling contained_in will in fact do the wrong thing if nested functions are considered as contained. In the particular case of the Fortran regression, it was the call in block_innermost_frame, being called from get_hosting_frame -- in this case, the caller is specifically trying to avoid the nested case. This patch fixes the problem by adding an "allow_nested" parameter to contained_in, essentially reverting the change for most callers. gdb/ChangeLog 2019-08-19 Tom Tromey * printcmd.c (do_one_display, info_display_command): Update. * block.h (contained_in): Return bool. Add allow_nested parameter. * block.c (contained_in): Return bool. Add allow_nested parameter. commit d806ea2d0ef362fcddd2c1659f537b68aa114203 Author: Tom Tromey Date: Mon Jun 24 16:02:47 2019 -0600 Add Rust support to source highlighting Currently, no release of GNU Source Highlight supports Rust. However, I've checked in a patch to do so there, and I plan to make a new release sometime this summer. This patch prepares gdb for that by adding support for Rust to the source highlighting code. Because Source Highlight will throw an exception if the language is unrecognized, this also changes gdb to ignore exceptions here. This will cause gdb to fall back to un-highlighted source text. This updates gdb's configure script to reject the combination of Source Highlight and -static-libstdc++. This is done because it's not possible to use -static-libstdc++ and then catch exceptions from a shared library. Tested with the current and development versions of Source Highlight. gdb/ChangeLog 2019-08-19 Tom Tromey * configure: Rebuild. * configure.ac: Disallow the combination of -static-libstdc++ and source highlight. * source-cache.c (get_language_name): Handle rust. (source_cache::get_source_lines): Ignore highlighting exceptions. commit c1a5d03a89a455d79f025c66dce83342de4d26ce Author: Tom Tromey Date: Fri Jul 26 15:42:25 2019 -0600 Add --with-static-standard-libraries to the top level gdb should normally not be linked with -static-libstdc++. Currently this has not caused problems, but it's incompatible with catching an exception thrown from a shared library -- and a subsequent patch changes gdb to do just this. This patch adds a new --with-static-standard-libraries flag to the top-level configure. It defaults to "auto", which means enabled if gcc is being built, and disabled otherwise. ChangeLog 2019-08-19 Tom Tromey * configure: Rebuild. * configure.ac: Add --with-static-standard-libraries. commit 3eb185c97d8170b3f3a2b5edab4fbbd56f53f6f7 Author: Tom Tromey Date: Thu Aug 15 07:33:20 2019 -0600 Fix N^2 behavior in _bfd_dwarf2_find_symbol_bias A customer reported a case where addr2line was very slow. We tracked this down to some N^2 behavior in _bfd_dwarf2_find_symbol_bias in the unusual case where no function can be found. This patch fixes the bug, and reduces the runtime for a particular request from 127 seconds to 1 second. bfd/ChangeLog 2019-08-19 Tom Tromey * dwarf2.c (_bfd_dwarf2_find_symbol_bias): Create hash table holding symbols. commit d292364e95fc9c8230b678d9026f285850074c02 Author: Alan Modra Date: Mon Aug 19 20:24:35 2019 +0930 PR24898, An out-of-bounds read occured in display_data Given 32-bit pointers and a 64-bit bfd_size_type, it is relatively easy to construct a value of augmentation_data_len (eg. 0x100000000) that won't fail pointer checks but will print without bounds. PR 24898 * dwarf.c (display_debug_frames): Use the read_cie check and error for augmentation data length. commit 903b777ddeb4c11a7de12cab59124e777614edec Author: Alan Modra Date: Mon Aug 19 17:34:03 2019 +0930 PowerPC64 ha/lo insn checks These are done in ppc64_elf_edit_toc, which now also garbage collects unused GOT entries. The checks for legitimate instructions weren't being done for the GOT relocs, unless the file also happened to have a toc section. * elf64-ppc.c (struct ppc64_elf_obj_tdata): Rename has_gotrel to has_optrel. (struct _ppc64_elf_section_data): Likewise. (ppc64_elf_check_relocs): Set has_optrel for more relocs. (ppc64_elf_edit_toc): Do ha/lo insn checks in GOT loop rather than TOC loop. Check PLT16 insns too. commit 72c03e30ae783a5f38a8c124588a4536ae06e6ef Author: Barnaby Wilks Date: Thu Aug 15 16:21:59 2019 +0000 Float16: Fix test failures for non ELF targets The tests were failing due to md_atof trying to do word-wise endian switching on the float16 (for little-endian targets sometimes multi word values have their word order changed). However since a float16 is only 1 word wide, it would end up writing incorrect data, as you cannot switch the word order of just one word. * config/tc-arm.c (md_atof): Add precision check. Formatting. commit 2c115c4f3cb57cfed7a1be5bbccf0f1bc6f7fdbc Author: GDB Administrator Date: Mon Aug 19 00:00:34 2019 +0000 Automatic date update in version.in commit b271c8567acd7b329fe6b37a3091613c634470c7 Author: GDB Administrator Date: Sun Aug 18 00:01:39 2019 +0000 Automatic date update in version.in commit d367307b93e5589245d1f2c8bbcfe709404540a8 Author: Alan Modra Date: Sat Aug 17 18:01:05 2019 +0930 PR24911, Heap overflow issue in qsort_r, dwarf.c The actual args to this function are "pointers to pointers to debug_info". PR 24911 * dwarf.c (comp_addr_base): Dereference args. commit 98ac8787e9bea0fef101b9b63c5dd06e653a46b3 Author: GDB Administrator Date: Sat Aug 17 00:00:22 2019 +0000 Automatic date update in version.in commit 34dafe9f39e61de970c36ed636daa58e1caa386c Author: Tom de Vries Date: Fri Aug 16 23:48:28 2019 +0200 [gdb/testsuite] Fix compare-sections.exp with -fPIE/-pie When running gdb.base/compare-sections.exp with target board -fPIE/-pie, we get: ... FAIL: gdb.base/compare-sections.exp: after run to main: compare-sections -r ... The test expects the read-only sections to have the same contents as in the file: ... # Assume startup code doesn't change read-only sections. compare_sections "-r" ... but that's not the case for PIE executables. Fix this by allowing mismatched read-only sections for PIE executables. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-16 Tom de Vries * gdb.base/compare-sections.exp ("after run to main"): Allow mismatched read-only sections for PIE executables. commit 81e8046dc0daaf56fb10b11931fc77600a4b5920 Author: H.J. Lu Date: Fri Aug 16 14:25:15 2019 -0700 x86-64: Move PIC check for PC-relative relocations back commit 83924b3846361f2f76f9a6e7b5afa01c0eebbd4f Author: H.J. Lu Date: Tue Feb 5 18:45:23 2019 -0800 x86-64: Restore PIC check for PCREL reloc against protected symbol moved PIC check for PC-relative relocations to elf_x86_64_check_relocs. Since linker defined symbols may not be processed at the time, we need to move the check back to elf_x86_64_relocate_section. bfd/ PR ld/24905 * elf64-x86-64.c (elf_x86_64_check_relocs): Move PIC check for PC-relative relocations back to ... (elf_x86_64_relocate_section): Here. ld/ PR ld/24905 * testsuite/ld-x86-64/pr24905-x32.d: New file. * testsuite/ld-x86-64/pr24905.d: Likewise. * testsuite/ld-x86-64/pr24905.s: Likewise. * testsuite/ld-x86-64/pr24905.t: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run pr24905 and pr24905-x32. commit 398fdd6086a290748afcce0efabaebb4e363278c Author: Tom Tromey Date: Fri Jul 12 18:18:10 2019 -0600 Remove the TUI execution info window The TUI execution info window is unusual in that it is always linked to a source or disassembly window. Even updates of its content are handled by the source window, so it really has no life of its own. This patch removes this window entirely and puts its functionality directly into the source window. This simplifies the code somewhat. This is a user-visible change, because now the box around the source (or disassembly) window encloses the execution info as well. I consider this an improvement as well, though. Note that this patch caused ncurses to start emitting the "CSI Z" sequence, so I've added this to the test suite terminal implementation. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui.h (enum tui_win_type) : Remove. * tui/tui-winsource.h (struct tui_exec_info_window): Remove. (struct tui_source_window_base) : Remove methods. : Remove field. * tui/tui-winsource.c (tui_source_window_base::do_erase_source_content) (tui_show_source_line, tui_source_window_base) (~tui_source_window_base): Update. (tui_source_window_base::resize) (tui_source_window_base::make_visible) (tui_source_window_base::refresh_window): Remove. (tui_source_window_base::update_exec_info): Update. * tui/tui-source.c (tui_source_window::set_contents): Update. * tui/tui-disasm.c (tui_disasm_window::set_contents): Update. gdb/testsuite/ChangeLog 2019-08-16 Tom Tromey * lib/tuiterm.exp (_csi_Z): New proc. * gdb.tui/basic.exp: Update window positions. * gdb.tui/empty.exp: Update window positions. commit e699d33164a59dcfe7ad4a5154e5c6c811c1f958 Author: Tom Tromey Date: Thu Jul 11 23:24:03 2019 -0600 Remove useless assignment from tui_remove_hooks tui_remove_hooks clears deprecated_query_hook, but nothing in the TUI ever sets it; so remove the assignment. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui-hooks.c (tui_remove_hooks): Don't set deprecated_query_hook. commit bb01dbfc041dccab2f2a2818068158f61b4c0fe2 Author: Tom Tromey Date: Thu Jul 11 20:00:07 2019 -0600 Change tui_show_symtab_source to be a method This changes tui_show_symtab_source to be a method on tui_source_window. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui-winsource.c (tui_update_source_windows_with_addr) (tui_update_source_windows_with_line): Update. * tui/tui-source.h (struct tui_source_window) : Declare. (tui_show_symtab_source): Don't declare. * tui/tui-source.c (tui_show_symtab_source): Rename from tui_show_symtab_source. commit 81c82c4b9005acf7865d8a19ee651968e059a848 Author: Tom Tromey Date: Thu Jul 11 18:42:20 2019 -0600 Introduce tui_source_window_base::set_contents method This introduces the tui_source_window_base::set_contents method and implements it in the subclasses. This removes a check of the window type. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. * tui/tui-winsource.c (tui_source_window_base::update_source_window_as_is): Update. * tui/tui-source.h (struct tui_source_window) : Declare. (tui_set_source_content): Don't declare. * tui/tui-source.c (tui_source_window::set_contents): Rename from tui_set_source_content. * tui/tui-disasm.h (struct tui_disasm_window) : Declare. (tui_set_disassem_content): Don't declare. * tui/tui-disasm.c (tui_disasm_window::set_contents): Rename from tui_set_disassem_content. commit 2ddaf614439b50e6019c5218f2fbfc0d14194e96 Author: Tom Tromey Date: Thu Jul 11 18:27:02 2019 -0600 Change tui_update_breakpoint_info to be a method This changes tui_update_breakpoint_info to be a method on tui_source_window_base. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. (tui_update_breakpoint_info): Don't declare. * tui/tui-winsource.c (tui_source_window_base::update_source_window_as_is) (tui_update_all_breakpoint_info): Update. (tui_source_window_base::update_breakpoint_info): Rename from tui_update_breakpoint_info. (tui_source_window_base::update_exec_info): Update. commit 017f982820d408fb49657b9b9b8f45a9616c5f21 Author: Tom Tromey Date: Thu Jul 11 18:24:07 2019 -0600 Change tui_update_source_window to be a method This changes tui_update_source_window to be a method on tui_source_window_base. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. (tui_update_source_window): Don't declare. * tui/tui-winsource.c (tui_source_window_base::update_source_window): Rename from tui_update_source_window. (tui_source_window_base::rerender): Update. * tui/tui-source.c (tui_source_window::maybe_update): Update. * tui/tui-disasm.c (tui_show_disassem) (tui_show_disassem_and_update_source) (tui_disasm_window::maybe_update): Update. commit ed8358e9491d5ae0a8ee021c162a85867af1146a Author: Tom Tromey Date: Thu Jul 11 18:22:06 2019 -0600 Change tui_update_source_window_as_is to be a method This changes tui_update_source_window_as_is to be a method on tui_source_window_base. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. (tui_update_source_window_as_is): Don't declare. * tui/tui-winsource.c (tui_update_source_window): Update (tui_source_window_base::update_source_window_as_is): Rename from tui_update_source_window_as_is. (tui_source_window_base::refill): Update. * tui/tui-source.c (tui_show_symtab_source): Update. * tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Update. commit 20149b6b207ac8c2bcde6f272607109f566168a9 Author: Tom Tromey Date: Thu Jul 11 18:19:28 2019 -0600 Remove "noerror" parameter from some TUI functions A few TUI functions take a "noerror" parameter. This is only checked in one spot: in tui_set_source_content, if noerror is false, and if an error occurs, then the function will call print_sys_errmsg. This seems misguided to me, so this patch removes that code and this parameter. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui-winsource.h (tui_update_source_window) (tui_update_source_window_as_is): Remove "noerror" parameter. * tui/tui-winsource.c (tui_update_source_window) (tui_update_source_window_as_is): Remove "noerror" parameter. (tui_update_source_windows_with_addr) (tui_update_source_windows_with_line) (tui_source_window_base::rerender) (tui_source_window_base::refill): Update. * tui/tui-source.h (tui_set_source_content) (tui_show_symtab_source): Remove "noerror" parameter. * tui/tui-source.c (tui_set_source_content): Remove "noerror" parameter. (tui_show_symtab_source): Likewise. (tui_source_window::maybe_update): Update. * tui/tui-disasm.c (tui_show_disassem) (tui_show_disassem_and_update_source) (tui_disasm_window::do_scroll_vertical) (tui_disasm_window::maybe_update): Update. commit 2d83e710a14c62cb6a9501c84fc46062f817428d Author: Tom Tromey Date: Thu Jul 11 18:03:45 2019 -0600 Remove separate visibility flag TUI windows keep track of their visibility in a boolean field. However, this is not needed, because a window is visible if and only if it has an underlying curses handle. So, we can remove this separate field. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui.c (tui_is_window_visible): Update. * tui/tui-wingeneral.c (tui_make_window) (tui_gen_win_info::make_visible, tui_refresh_all): Update. * tui/tui-win.c (window_name_completer, tui_refresh_all_win) (tui_set_focus_command, tui_all_windows_info, update_tab_width) (tui_set_win_height_command, parse_scrolling_args): Update. * tui/tui-source.c (tui_source_window::style_changed): Update. * tui/tui-regs.c (tui_show_registers) (tui_data_window::first_data_item_displayed) (tui_data_window::delete_data_content_windows) (tui_check_register_values, tui_reg_command): Update. * tui/tui-disasm.c (tui_show_disassem): Update. * tui/tui-data.h (struct tui_gen_win_info) : New method. : Remove field. * tui/tui-data.c (tui_next_win, tui_prev_win) (tui_delete_invisible_windows): Update. commit d4ab829a2477d454bd38544f1b88a043ec58581c Author: Tom Tromey Date: Tue Jul 9 21:22:38 2019 -0600 Remove m_has_locator The previous patch removed the only use of m_has_locator, so this member can now be removed. gdb/ChangeLog 2019-08-16 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Remove. * tui/tui-layout.c (show_source_disasm_command, show_data) (show_source_or_disasm_and_command): Update. commit b4c555cfc48689d45481effff23c9017a4f3557f Author: Martin Liska Date: Fri Aug 16 13:14:36 2019 +0200 Fix detection of missing plugin for LTO objects. 2019-08-16 Martin Liska PR ld/24912 * elflink.c: Report error only for not relocatable. * linker.c (_bfd_generic_link_add_one_symbol): Do not handle here lto_slim_object as it's handled in caller. 2019-08-16 Martin Liska PR ld/24912 * object.cc (big_endian>::do_layout): Do not report error, but only set a flag. (big_endian>::do_add_symbols): Report error only for when relocatable. commit aa7ca1bb443e8c2baad17392f395d1556fecfafa Author: Alan Hayward Date: Fri Aug 16 10:19:18 2019 +0100 Move [PAC] into a new MI field addr_flags Add a new print_pc which prints both the PC and a new field addr_flags. Call this wherever the PC is printed in stack.c. Add a new gdbarch method get_pc_address_flags to obtain the addr_flag contents. By default returns an empty string, on AArch64 this returns PAC if the address has been masked in the frame. Document this in the manual and NEWS file. gdb/ChangeLog: * NEWS (Other MI changes): New subsection. * aarch64-tdep.c (aarch64_get_pc_address_flags): New function. (aarch64_gdbarch_init): Add aarch64_get_pc_address_flags. * arch-utils.c (default_get_pc_address_flags): New function. * arch-utils.h (default_get_pc_address_flags): New declaration. * gdbarch.sh: Add get_pc_address_flags. * gdbarch.c: Regenerate. * gdbarch.h: Likewise. * stack.c (print_pc): New function. (print_frame_info) (print_frame): Call print_pc. gdb/doc/ChangeLog: * gdb.texinfo (AArch64 Pointer Authentication) (GDB/MI Breakpoint Information) (Frame Information): Document addr_field. commit fdfc8cf7f04e2f4d24ec9fff331ebd71a2e768a3 Author: Christophe Lyon Date: Fri Aug 16 08:26:45 2019 +0000 [ld] [arm] Add support for noinit section 2019-08-16 Christophe Lyon * emulparams/armelf.sh (OTHER_SECTIONS): Add support for noinit section. Change-Id: Ib293f28cc5f21e9e9a13abf4d4e37f0a0eec41c0 commit 0b8b76098ff3d3dcd0c621f2e45cc0b4e7211d6a Author: Alan Modra Date: Fri Aug 16 15:17:23 2019 +0930 PR24909, Uninitialized use on stack in readelf PR 24909 PR 23499 * readelf.c (get_symbol_version_string): Set sym_info earlier. commit 7df6aecc97b96843da080d54414052b1c954ddca Author: Alan Modra Date: Fri Aug 16 13:20:28 2019 +0930 PowerPC gcc bootstrap fail with bss-plt git commit 3e04d7655b introduced a bug by sizing output sections earlier in ppc_before_allocation. That meant PLT (and GOT) sizes were not included when calculating total executable section sizes. * emultempl/ppc32elf.em (ppc_before_allocation): Force running prelim_size_sections before deciding whether branch trampolines might be needed. commit 63f6e94fb3cc5b6a2cfb8c28686f150e7226ab7e Author: Alan Modra Date: Wed Aug 14 16:31:05 2019 +0930 Aligned vs. unaligned ppc32 relocs Given R_PPC_ADDR32 or R_PPC_UADDR32 relocs, this patch generates R_PPC_ADDR32 or R_PPC_UADDR32 dynamic relocs from either type depending on whether r_offset is 4-byte aligned, and similarly for R_PPC_ADDR16/R_PPC_UADDR16. * elf32-ppc.c (ppc_elf_relocate_section): Optimize unaligned relocs. commit d8f9e51c361dfb53de3eca8d84f8938380af60ff Author: Sandra Loosemore Date: Thu Aug 15 18:15:16 2019 -0700 Fix paste-o in examine-backward.exp. This patch fixes a paste-o that was introduced in commit c8ad9b9a31aa3e6039567fc1f152dd454c946d5f. Previously the regexp for the "examine 3 bytes backward from ${address_zero}" test correctly matched 3 "${byte}" patterns, but in that commit the 6-byte regexp from the previous test was mistakenly repeated here instead. 2019-08-15 Sandra Loosemore gdb/testsuite/ * gdb.base/examine-backward.exp: Correct regexp for "examine 3 bytes backward from ${address_zero}". commit 33394263571f08a935c0a030dbde22a04eee7d70 Author: GDB Administrator Date: Fri Aug 16 00:00:20 2019 +0000 Automatic date update in version.in commit 6eac171f0624303d944ff1a1ae4d0e3b0a63c800 Author: Tom de Vries Date: Fri Aug 16 00:25:14 2019 +0200 [gdb] Make maint info sections print relocated addresses When running gdb.base/compare-sections.exp with -fPIE/-pie, we get: ... print /u *(unsigned char *) 0x00000238^M Cannot access memory at address 0x238^M (gdb) FAIL: gdb.base/compare-sections.exp: read-only: get value of read-only section ... The problem is that that "maint info sections" prints an unrelocated address: ... [0] 0x00000238->0x00000254 at 0x00000238: .interp ALLOC LOAD READONLY \ DATA HAS_CONTENTS ... while the test expects a relocated address. Given that the documentation states that the command displays "the section information displayed by info files", and that info files shows relocated addresses: ... 0x0000555555554238 - 0x0000555555554254 is .interp ... fix this by showing relocated addresses for maint info sections as well. Build and tested on x86_64-linux. gdb/ChangeLog: 2019-08-16 Tom de Vries * maint.c (maintenance_info_sections): Also handle !ALLOBJ case using print_objfile_section_info. commit 3df505f60eacd2c931092c7007f084d27583f9e5 Author: Tom Tromey Date: Tue Jul 9 17:29:13 2019 -0600 TUI resize unification The TUI currently has two different ways to resize a window: the resize method, and the methods make_invisible_and_set_new_height and make_visible_with_new_height. There's no deep reason to have two different ways to resize a window, so this patch unifies them, leaving just the "resize" method. This also changes the locator to be handled more like an ordinary window and less like an adjunct of the associated source window. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-io.c (tui_puts_internal): Check TUI_CMD_WIN before calling update_cmdwin_start_line. * tui/tui-winsource.h (struct tui_source_window_base) : Don't declare. : Declare. * tui/tui-winsource.c (tui_source_window_base::update_tab_width): Call rerender. (tui_source_window_base::set_new_height): Remove. (tui_source_window_base::rerender): Rename from do_make_visible_with_new_height. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Use resize method. (tui_win_info::make_invisible_and_set_new_height) (tui_win_info::make_visible_with_new_height): Remove. * tui/tui-stack.h (struct tui_locator_window) : Declare. * tui/tui-stack.c (tui_locator_window::rerender): New method. * tui/tui-regs.h (struct tui_data_window) : Don't declare. : Declare. * tui/tui-regs.c (tui_data_window::rerender): Rename from set_new_height. (tui_data_window::do_make_visible_with_new_height): Remove. * tui/tui-layout.c (show_source_disasm_command, show_data): Don't call tui_show_locator_content. (tui_gen_win_info::resize): Call rerender. (show_source_or_disasm_and_command): Don't call tui_show_locator_content. * tui/tui-data.h (struct tui_gen_win_info) : New method. (struct tui_win_info) : Declare. : Don't declare. * tui/tui-data.c (tui_win_list::rerender): New method. * tui/tui-command.h (struct tui_cmd_window) : Don't declare. * tui/tui-command.c (tui_cmd_window::do_make_visible_with_new_height): Remove. gdb/testsuite/ChangeLog 2019-08-15 Tom Tromey * gdb.tui/empty.exp: Enable resizing tests. commit 272560b577894c388a3d0d3fda8294683714f582 Author: Tom Tromey Date: Thu Aug 1 11:41:32 2019 -0600 Fix bug with character enumeration literal gnat encodes character enumeration literals using a few different schemes. The gnat compiler documented the "QU" and "QW" encodings, but failed to document that a simpler encoding was used for certain characters. This patch updates gdb to handle this simple Q encoding. Note that wide character literals are still not handled. gdb/ChangeLog 2019-08-15 Tom Tromey * ada-exp.y (convert_char_literal): Handle "Q%c" encoding. * ada-lang.c (ada_enum_name): Likewise. gdb/testsuite/ChangeLog 2019-08-15 Tom Tromey * gdb.ada/char_enum.exp: Add regression tests. * gdb.ada/char_enum/foo.adb (Char_Enum_Type): Use '_' and '0'. (Char, Gchar): Update. * gdb.ada/char_enum/pck.ads (Global_Enum_Type): Use '+'. commit 08235187bcdd66599884f33b046cf8abcf949727 Author: Christian Biesinger Date: Thu Aug 15 11:29:04 2019 -0500 Rename internal Python functions to start with an underscore I could not tell if GdbSetPythonDirectory is internal or not because I could not find any references to it, so I left it as-is. Tested by running the testsuite on gdb.python/*.exp; everything still passes. 2019-08-15 Christian Biesinger * python/lib/gdb/__init__.py (GdbOutputFile): Rename to have a leading underscore. (GdbOutputErrorFile): Likewise. (global scope): Adjust constructor calls to GdbOutput{,Error}File accordingly. (execute_unwinders): Rename to have a leading underscore. (auto_load_packages): Likewise. (global scope): Adjust call to auto_load_packages accordingly. (GdbSetPythonDirectory): Likewise. * python/py-unwind.c (pyuw_sniffer): Call _execute_unwinders instead of execute_unwinders. gdb/testsuite/ChangeLog: 2019-08-15 Christian Biesinger * gdb.python/python.exp: Expect a leading underscore on GdbOutput{,Error}File. commit 080a488354d63fec9791a26fadd15e0c5246983d Author: Jim Wilson Date: Thu Aug 15 12:01:13 2019 -0700 RISC-V: Fix lui relaxation issue with code at address 0. This fixes a problem originally reported at https://github.com/riscv/riscv-binutils-gdb/issues/173 If you have code linked at address zero, you can have a lui instruction loading a value 0x800 which gets relaxed to a c.lui which is valid (c.lui 0x1 followed by addi -0x800). Relaxation can reduce the value below 0x800 at which point the c.lui 0x0 is no longer valid. We can fix this by converting the c.lui to a c.li which can load 0. bfd/ * elfnn-riscv.c (perform_relocation) : If RISCV_CONST_HIGH_PART (value) is zero, then convert c.lui instruction to c.li instruction, and use ENCODE_RVC_IMM to set value. ld/ * testsuite/ld-riscv-elf/c-lui-2.d: New. * testsuite/ld-riscv-elf/c-lui-2.ld: New. * testsuite/ld-riscv-elf/c-lui-2.s: New. * testsuite/ld-riscv-elf/ld-riscv-elf.exp: Run the c-lui-2 test. commit db502012fc46b4dd068461aaeafeaa421489c562 Author: Tom Tromey Date: Tue Jul 9 15:35:17 2019 -0600 TUI window resize should not need invisibility When resizing a window, the TUI currently first makes it invisible, then changes the size, and then restores its visibility. I think this is done because curses doesn't truly support resizing a window -- there is a "wresize" extension, but the man page says it isn't available in all versions of curses. First, this is probably not a major problem any more. I imagine most of those old systems are gone now. Second, I think it's a better API to have this detail hidden inside of the resize method. This patch changes the code to follow this idea, and changes the ordinary resize method to use wresize when it is available. The special case for the command window is also moved to methods on the command window. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-layout.c (show_layout, show_source_disasm_command) (show_data): Don't change window visibility. (tui_gen_win_info::resize): Remove special case for command window. Use wresize, when available. (show_source_or_disasm_and_command): Don't change window visibility. * tui/tui-command.h (struct tui_cmd_window) : Declare. : New method. * tui/tui-command.c (tui_cmd_window::resize): New method. commit 3891b65efe614fe2e2f7e75e7f5ec8964f7fd96b Author: Tom Tromey Date: Sat Jul 6 21:19:45 2019 -0600 Change TUI source window iteration Currently the TUI does separate bookkeeping to track which source windows exist. It seems better to me to just refer to the list of windows for this, so this patch removes the special handling and instead adds a new iterator. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_iterator): New. (struct tui_source_windows): New. * tui/tui-winsource.c (tui_display_main): Update. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights) (new_height_ok, parse_scrolling_args): Update. * tui/tui-layout.c (show_layout, show_data): Update. * tui/tui-data.h (tui_source_windows, tui_clear_source_windows) (tui_add_to_source_windows): Don't declare. * tui/tui-data.c (source_windows, tui_source_windows) (tui_clear_source_windows, tui_add_to_source_windows): Remove. commit ee556432c44dd5dbcf22c4086774bd29ded5b208 Author: Tom Tromey Date: Sat Jul 6 17:32:45 2019 -0600 Rename the "reset" method to "resize" tui_gen_win_info::reset really just resizes the window. This patch renames it to reflect this. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Rename from reset. * tui/tui-winsource.c (tui_source_window_base::resize): Rename. * tui/tui-layout.c (show_source_disasm_command, show_data): Update. (tui_gen_win_info::resize): Rename. (show_source_or_disasm_and_command): Update. * tui/tui-data.h (struct tui_gen_win_info) : Rename from reset. commit 46f438e3d57bae1d74ab9a7e6cba380b0e58f552 Author: Tom Tromey Date: Sat Jul 6 17:30:02 2019 -0600 Remove tui_initialize_static_data tui_initialize_static_data is not needed, because locator moving and resizing is already handled in the layout code. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-stack.c (tui_initialize_static_data): Remove. * tui/tui-interp.c (tui_interp::init): Don't call tui_initialize_static_data. * tui/tui-data.h (tui_initialize_static_data): Don't declare. commit f4ce562c7f7a95cab61bf298d289cd56f0802a95 Author: Tom Tromey Date: Sat Jul 6 16:28:46 2019 -0600 Minor simplification in tui_default_win_viewport_height tui_default_win_viewport_height doesn't need to look at tui_win_list; it can simply check the type directly. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-layout.c (tui_default_win_viewport_height): Don't examine tui_win_list. commit c398c3d0b56823bb12718ae46a8c273b866ca246 Author: Tom Tromey Date: Sat Jul 6 16:17:46 2019 -0600 Remove tui_clear_source_content tui_clear_source_content is not needed. Instead, the callers can call erase_source_content, which is also changed to clear the content vector. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-winsource.h (tui_clear_source_content): Don't declare. * tui/tui-winsource.c (tui_update_source_window_as_is): Don't call tui_clear_source_content. (tui_clear_source_content): Remove. (tui_source_window_base::do_erase_source_content): Hoist call to content.clear(). * tui/tui-stack.c (tui_show_frame_info): Don't call tui_clear_source_content. commit e25d200487dba7dfdf92f638e4ef2aefd7bd7481 Author: Tom Tromey Date: Sat Jul 6 15:57:53 2019 -0600 Turn tui_erase_source_content into a method This changes tui_erase_source_content into a method on tui_source_window_base. The bulk of the work is moved into a helper method, so that the callers can each pass the string appropriate to the particular window class. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : New method. : New method. (tui_erase_source_content): Don't declare. * tui/tui-winsource.c (tui_clear_source_content): Update. (tui_source_window_base::do_erase_source_content): Rename from tui_erase_source_content. (tui_source_window_base::show_source_content): Update. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update. * tui/tui-source.h (struct tui_source_window) : New method. * tui/tui-disasm.h (struct tui_disasm_window) : New method. commit 002f15c27779e154856fdf281360385f4d3be671 Author: Tom Tromey Date: Sat Jul 6 15:52:13 2019 -0600 Remove tui_alloc_source_buffer There is no longer any need for tui_alloc_source_buffer. The two callers of this function immediately change the contents of the window, undoing the work done by this function. This required adding a move constructor to tui_source_element -- a mildly surprising find, but without this, resizing the vector will cause crashes. This issue was masked earlier because tui_alloc_source_buffer handled this. Note that a patch for this bug was submitted here: https://sourceware.org/ml/gdb-patches/2019-08/msg00094.html That patch is better, IMO, but the author as yet hasn't responded to a request for a ChangeLog entry. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-winsource.h (tui_alloc_source_buffer): Don't declare. (struct tui_source_element): Add DISABLE_COPY_AND_ASSIGN, and move constructor. * tui/tui-winsource.c (tui_alloc_source_buffer): Remove. * tui/tui-source.c (tui_set_source_content): Update. * tui/tui-disasm.c (tui_set_disassem_content): Update. commit c9033fe839e37a378ff86e614a7d6e939b94f6c9 Author: Tom Tromey Date: Sat Jul 6 15:09:01 2019 -0600 Change tui_line_is_displayed to be a method This changes tui_line_is_displayed to be a method on tui_source_window, now that it is obvious that it can only be called for this type. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-winsource.h (tui_line_is_displayed): Don't declare. * tui/tui-winsource.c (tui_line_is_displayed): Move to tui-source.c. * tui/tui-source.h (struct tui_source_window) : Declare. * tui/tui-source.c (tui_source_window::line_is_displayed): New method. (tui_source_window::maybe_update): Update. commit 088f37dd90eecb647347c1aa53d36b3f5be64b21 Author: Tom Tromey Date: Sat Jul 6 15:06:47 2019 -0600 Change tui_addr_is_displayed into a method This changes tui_addr_is_displayed to be a method on tui_disasm_window, now that it is obvious that it can only be called for this type. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-winsource.h (tui_addr_is_displayed): Don't declare. * tui/tui-winsource.c (tui_addr_is_displayed): Move to tui-disasm.c. * tui/tui-disasm.h (struct tui_disasm_window) : Declare. * tui/tui-disasm.c (tui_disasm_window::addr_is_displayed): New method. (tui_disasm_window::maybe_update): Update. commit a54700c6c45ea424b668f2201ef14906f2052412 Author: Tom Tromey Date: Sat Jul 6 15:04:12 2019 -0600 Move contents of tui_show_frame_info to new method This moves much of the body of tui_show_frame_info to a new method on tui_source_window_base. This removes a check for the type of a window. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. * tui/tui-stack.c (tui_show_frame_info): Call maybe_update method. * tui/tui-source.h (struct tui_source_window) : Declare. * tui/tui-source.c (tui_source_window::maybe_update): New method. * tui/tui-disasm.h (struct tui_disasm_window) : Declare. * tui/tui-disasm.c (tui_disasm_window::maybe_update): New method. commit e2a678a557b52816a7aa45902a6519bc1cae918e Author: Tom Tromey Date: Sat Jul 6 13:52:08 2019 -0600 Avoid string_file in tui_make_status_line tui_make_status_line uses string_file where a simple std::string constructor would do. This makes this change. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-stack.c (tui_make_status_line): Use string constructor. commit f2dda4778417e2d58a5b0416ff9598f68470cbfa Author: Tom Tromey Date: Sat Jul 6 11:32:06 2019 -0600 Move locator code to tui-stack.c The locator is mostly implemented in tui-stack.c. This moves the remaining bits to tui-stack.c and tui-stack.h, as appropriate. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-wingeneral.c: Include tui-stack.h. * tui/tui-stack.h (MAX_LOCATOR_ELEMENT_LEN) (struct tui_locator_window): Move from tui-data.h. * tui/tui-stack.c (_locator, tui_locator_win_info_ptr) (tui_initialize_static_data): Move from tui-data.c. * tui/tui-data.h (MAX_LOCATOR_ELEMENT_LEN) (struct tui_locator_window): Move to tui-stack.c. * tui/tui-data.c (_locator, tui_locator_win_info_ptr) (tui_initialize_static_data): Move to tui-stack.c. commit ed4a1084d725a5d1aecefc6a430d3059a77c102d Author: Tom Tromey Date: Sat Jul 6 08:23:34 2019 -0600 Remove FIXMEs from tui-layout.c An earlier patch added a couple of FIXME comments to tui-layout.c. This removes them. This is possible due to the previous patch that changed how boxing works in the TUI -- now, no special case for the command window is needed in box_win. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-layout.c (show_source_disasm_command) (show_source_or_disasm_and_command): Use make_visible method, not tui_make_window. * tui/tui-command.h (struct tui_cmd_window) : Remove. commit 65962b20b6df7e8961ec4002179dbd51a33a627f Author: Tom Tromey Date: Sat Jul 6 08:21:38 2019 -0600 Simplify TUI boxing In the TUI, whether or not a window can be boxed is a property of the window's type. This adds a can_box method to the window classes, and changes tui_make_window to defer to this, removing the "box_it" paramter. This also lets us remove "enum tui_box", as it is no longer used. gdb/ChangeLog 2019-08-15 Tom Tromey * tui/tui-wingeneral.h (tui_make_window): Update. * tui/tui-wingeneral.c (tui_make_window): Remove "box_it" parameter. (tui_gen_win_info::make_visible): Update. * tui/tui-regs.c (tui_data_window::display_registers_from): Update. * tui/tui-layout.c (show_source_disasm_command) (show_source_or_disasm_and_command): Update. * tui/tui-data.h (struct tui_gen_win_info) : New method. (enum tui_box): Remove. (struct tui_win_info) : New method. * tui/tui-command.h (struct tui_cmd_window) : New method. commit 22a2ab04f58dc7c3f5fb0e6d8f0fa96ee4aa3951 Author: Sandra Loosemore Date: Thu Aug 15 10:23:18 2019 -0700 Disable dw2-dir-file-name.exp on remote and/or Windows host. This test has many hardwired assumptions that pathnames on build and host are the same, and that POSIX pathname syntax is used. This results in dozens of failures on a remote Windows host. Fixing these assumptions would involve nontrivial rewrites; meanwhile, let's make the test results reflect the reality that this testcase isn't supported on remote host. 2019-08-15 Sandra Loosemore gdb/testsuite/ * gdb.dwarf2/dw2-dir-file-name.exp: Skip on remote or Windows host. commit 835b995b576d14fa9b73fb763d5186323b1365b6 Author: Sandra Loosemore Date: Thu Aug 15 10:17:54 2019 -0700 Skip batch-preserve-term-settings.exp tests that cannot work on Windows. This group of tests assume that the gdb "shell" command launches a POSIX-compliant shell supporting the PPID environment variable, which is used to get gdb's pid for killing it from a remote_exec shell. But on Windows host "shell" launches cmd.exe, which doesn't have an equivalent query. 2019-08-15 Sandra Loosemore gdb/testsuite/ * gdb.base/batch-preserve-term-settings.exp (test_terminal_settings_preserved_after_sigterm): Skip on Windows. commit d59b55f0952e95fdbec58021cecce85f4557b485 Author: Tom Tromey Date: Thu Aug 15 11:23:13 2019 -0600 Use gdb::byte_vector in target_write_memory Pedro pointed out that target_write_memory should use gdb::byte_vector rather than std::vector. gdb/gdbserver/ChangeLog 2019-08-15 Tom Tromey * target.c (target_write_memory): Use gdb::byte_vector. commit 97dd8e07d998f5f0fcd0d06fd53e2ae9d337d222 Author: Christian Biesinger Date: Wed Aug 14 18:13:04 2019 -0500 [testsuite] Make the testsuite work on mingw Dejagnu produces an objdir like /c/, but GDB expects something like c:/. So fix it up in lib/gdb.exp. gdb/testsuite/ChangeLog: 2019-08-14 Christian Biesinger * lib/gdb.exp: When running on a mingw target, replace /x/ with x:/. commit 6ae978f133a67d34d01b6bb2053f1ba20ad13eeb Author: Nick Clifton Date: Thu Aug 15 15:23:18 2019 +0100 Add a description of the 'n' symbol type displayed by nm. PR 24767 * doc/binutils.texi (nm): Document the 'n' symbol type. commit 4196ab2a6d348f76c0e5e78252e44d9c631636d2 Author: Tom Tromey Date: Wed Aug 14 09:18:21 2019 -0600 Replace write_inferior_memory with target_write_memory target_write_memory is just a simple wrapper for write_inferior_memory. Because target_write_memory is needed for gdbsupport, and because gdb uses the name "target_write_memory" everywhere, this patch renames write_inferior_memory and removes the wrapper. I think this brings gdb and gdbserver slightly more in sync. gdb/gdbserver/ChangeLog 2019-08-15 Tom Tromey * tracepoint.c (write_inferior_data_pointer) (write_inferior_integer, write_inferior_int8) (write_inferior_uinteger, m_tracepoint_action_download) (r_tracepoint_action_download, x_tracepoint_action_download) (l_tracepoint_action_download, clear_inferior_trace_buffer) (download_agent_expr, download_tracepoint_1) (download_trace_state_variables, upload_fast_traceframes): Update. * server.c (gdb_write_memory): Update. * remote-utils.c (relocate_instruction): Update. * proc-service.c (ps_pdwrite): Update. * mem-break.c (remove_memory_breakpoint) (delete_fast_tracepoint_jump, set_fast_tracepoint_jump) (uninsert_fast_tracepoint_jumps_at) (reinsert_fast_tracepoint_jumps_at): Update. * linux-x86-low.c (append_insns) (i386_install_fast_tracepoint_jump_pad) (amd64_write_goto_address, i386_write_goto_address): Update. * linux-s390-low.c (append_insns, s390_write_goto_address): Update. * linux-ppc-low.c (ppc_relocate_instruction) (ppc_install_fast_tracepoint_jump_pad, emit_insns) (ppc_write_goto_address): Update. * linux-aarch64-low.c (append_insns): Update. * target.h (struct target_ops): Update. (write_inferior_memory): Don't declare. * target.c (target_write_memory): Rename from write_inferior_memory. Remove old target_write_memory. commit c6778d00df0fbc7fe53801717eb934a5d7b9674a Author: Tom Tromey Date: Wed Aug 14 09:11:28 2019 -0600 Simplify write_inferior_memory gdbserver's write_inferior_memory uses a static variable to avoid memory leaks, and has a comment referring to the lack of cleanups. This patch removes this comment and the code in favor of a straightforward use of std::vector. gdb/gdbserver/ChangeLog 2019-08-15 Tom Tromey * target.c (write_inferior_memory): Use std::vector. commit 9177214a228f7d0eb8543725287a6163993fbebf Author: Christophe Vidal Date: Thu Aug 15 14:38:31 2019 +0100 Correct a typo in the documentation for the disassembler. * docs/binutils.texi: Fixed notice message disassembler options section of the man page. commit 05192282ca19f8f5c201f630caed68b1632e2619 Author: Tom Tromey Date: Wed Aug 14 14:01:57 2019 -0600 Fix CU overrun in scan_unit_for_symbols A customer program had a DWARF CU that consisted of just a CU DIE, without any children. In this situation, scan_unit_for_symbols will try to read past the end of the current CU, and will take use the first bytes of the next CU as an abbrev, printing an error message. This patch fixes the bug by changing scan_unit_for_symbols to stop at the end of the CU rather than the end of the .debug_info section. bfd/ChangeLog 2019-08-15 Tom Tromey * dwarf2.c (scan_unit_for_symbols): Check for end of CU, not end of section. commit 6485977b899b2780c575ff1d34ccfa7fa950e492 Author: Nick Clifton Date: Thu Aug 15 12:41:24 2019 +0100 Updatesd Swdish translation for the gas sub-directory. * po/sv.po: Updated Swedish translation. commit 2208ee917050bcc901c7faefdee257ffbf8ef2ab Author: Tom de Vries Date: Thu Aug 15 08:14:31 2019 +0200 [gdb] Fix gdb build on mips64-linux When compiling for mips64-linux, we get: ... src/gdb/linux-nat-trad.c:139:12: error: ‘gdbarch_num_regs’ was not declared \ in this scope 139 | regnum < gdbarch_num_regs (regcache->arch ()); ... Fix this by including gdbarch.h in linux-nat-trad.c, similar to commit b1c896b365 "Fix gdb build on macOS". Build on mips64-linux. gdb/ChangeLog: 2019-08-15 Tom de Vries * linux-nat-trad.c: Include gdbarch.h. commit fc9e754460ccf1c893fc9e67c02c49f58f1bd38e Author: GDB Administrator Date: Thu Aug 15 00:00:21 2019 +0000 Automatic date update in version.in commit 75faf5c41d7fc713b73cbb3523dcc6ca3855f98e Author: Alan Hayward Date: Wed Aug 14 15:47:05 2019 +0100 AArch64: Allow additional sizes in prologue When saving registers to the stack at the start of a function, not all state needs to be saved. For example, only the first 64bits of float registers need saving. However, a program may choose to store extra state if it wishes, there is nothing preventing it doing so. The aarch64_analyze_prologue will error if it detects extra state being stored. Relex this restriction. Tested via aarch64-prologue test. gdb/ChangeLog: * aarch64-tdep.c (aarch64_analyze_prologue): Allow any valid register sizes. gdb/testsuite/ChangeLog: * gdb.arch/aarch64-prologue.c: New test. * gdb.arch/aarch64-prologue.exp: New file. commit b1c896b365f2dbcd14145a88d103623244cf0fb0 Author: Tom Tromey Date: Wed Aug 14 08:40:18 2019 -0600 Fix gdb build on macOS Internal testing showed that the macOS port did not build. The breakage was caused by the patch to remove the gdbarch.h include from defs.h. This patch fixes the problem. gdb/ChangeLog 2019-08-14 Tom Tromey * darwin-nat.c: Include gdbarch.h. * darwin-nat-info.c: Include gdbarch.h. commit dfc19da6a6d43390544fa446bb1a33723b339a77 Author: Alan Modra Date: Wed Aug 14 10:51:22 2019 +0930 PR24623, DWARF errors PR 24623 * dwarf2.c (stash_comp_unit): New function, extracted from.. (_bfd_dwarf2_find_nearest_line): ..here. (find_abstract_instance): Parse comp units and decode line info as needed. commit c327a44f38ad5ab0dfd8da5184c4c030798ef323 Author: Alan Modra Date: Wed Aug 14 11:26:48 2019 +0930 Use comp_unit_maybe_decode_line_info in more places * dwarf2.c (comp_unit_maybe_decode_line_info): Declare. (comp_unit_find_nearest_line): Use it here.. (_bfd_dwarf2_find_symbol_bias): ..and here. commit 9defd221fe3ecffabc90eadd077326b27e898a2b Author: Alan Modra Date: Wed Aug 14 10:40:20 2019 +0930 Remove _bfd_dwarf2_find_nearest_line addr_size parameter This parameter might appear to be used to set up offset_size, but since git commit 024b2372f5 offset_size is either set from the debug_info data or is set to 4. * dwarf2.c (_bfd_dwarf2_find_nearest_line): Remove addr_size parameter. * libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype. * coffgen.c (coff_find_nearest_line_with_names): Adjust _bfd_dwarf2_find_nearest_line calls. * elf.c (_bfd_elf_find_nearest_line, _bfd_elf_find_line): Likewise. * elf32-arm.c (elf32_arm_find_nearest_line): Likewise. * elf64-alpha.c (elf64_alpha_find_nearest_line): Likewise. * elfnn-aarch64.c (elfNN_aarch64_find_nearest_line): Likewise. * elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Likewise. * mach-o.c (bfd_mach_o_find_nearest_line): Likewise. * libbfd.h: Regenerate. commit 414b84043054e9656aad008e6efb49979ec614e9 Author: GDB Administrator Date: Wed Aug 14 00:00:22 2019 +0000 Automatic date update in version.in commit 6405cd73c0d160d9b6f82744bb5510b3e101ad59 Author: Tom Tromey Date: Sat Jul 6 08:18:27 2019 -0600 Remove tui_gen_win_info::last_visible_line The last_visible_line field of tui_gen_win_info is not used, so remove it. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-data.h (struct tui_gen_win_info) : Remove. * tui/tui-data.c (tui_initialize_static_data): Update. commit 5216580d7a1134a9349ec045b475f5b40f499e5e Author: Tom Tromey Date: Sat Jul 6 08:10:50 2019 -0600 Don't track the contents of the execution info window The curses library keeps track of the contents of each window, and can redraw the screen as needed. This means that in most cases is no need for the TUI windows to also keep track of their contents. This patch removes content tracking from the execution window, leaving that to curses. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.h (struct tui_exec_info_window) <~tui_exec_info_window, maybe_allocate_content, get_content, m_content>: Remove. (struct tui_source_window_base) : Don't declare. * tui/tui-winsource.c (tui_exec_info_window::maybe_allocate_content): Remove. (tui_source_window_base::update_exec_info): Rename from set_exec_info_content. (tui_source_window_base::show_exec_info_content) (tui_source_window_base::update_exec_info): Remove. commit 93858ad34ec1d2250d33365468c6721023786f51 Author: Tom Tromey Date: Sat Jul 6 07:37:39 2019 -0600 Remove tui_clear_exec_info_content After the previous patch, all calls to tui_clear_exec_info_content come just after a call to tui_clear_source_content. Because these two windows are linked, I think it makes sense to have tui_clear_source_content simply do the work. So, this patch removes tui_clear_exec_info_content. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.h (tui_clear_exec_info_content): Don't declare. * tui/tui-winsource.c (tui_update_source_window_as_is) (tui_update_source_windows_with_addr, tui_erase_source_content): Update. (tui_clear_exec_info_content): Remove. commit e321e7ce753f27ca9664ca08a8314924b5771d61 Author: Tom Tromey Date: Fri Jul 5 17:36:16 2019 -0600 Remove tui_erase_exec_info_content One call to tui_erase_exec_info_content can be removed. This call is not needed because the function in question then immediately sets the execution info window contents. Once this is done, tui_clear_exec_info_content is just a wrapper for the only call to tui_erase_exec_info_content, so tui_erase_exec_info_content can be renamed and the wrapper function removed. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.h (tui_erase_exec_info_content): Don't declare. * tui/tui-winsource.c (tui_source_window_base::refresh_all): Don't call tui_erase_exec_info_content. (tui_clear_exec_info_content): Rename from tui_erase_exec_info_content. (tui_clear_exec_info_content): Delete. commit 8270ac6229ac323fe7dfc1915b3f52d77df6bb9a Author: Tom Tromey Date: Fri Jul 5 17:35:13 2019 -0600 Turn tui_show_exec_info_content into a method This changes tui_show_exec_info_content to be a method on tui_source_window_base. As it is only called by other methods on this class, it can be private. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. (tui_show_exec_info_content): Don't declare. * tui/tui-winsource.c (tui_source_window_base::show_exec_info_content): Rename from tui_show_exec_info_content. (tui_source_window_base::update_exec_info): Update. commit 7b56485db5187e6c63f330e1eb35f63b50327b74 Author: Tom Tromey Date: Fri Jul 5 17:32:19 2019 -0600 Move code to tui-winsource.h This moves code related to the execution info window from tui-data.h to tui-winsource.h. It fits better here because the execution info is conceptually part of the source and disassembly windows, and tui-winsource.h is where this common class lives. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-data.h (enum tui_bp_flag, tui_bp_flags, struct tui_source_element) (TUI_BP_HIT_POS, TUI_BP_BREAK_POS, TUI_EXEC_POS) (TUI_EXECINFO_SIZE, tui_exec_info_content): Move ... * tui/tui-winsource.h (enum tui_bp_flag, tui_bp_flags, struct tui_source_element, TUI_BP_HIT_POS, TUI_BP_BREAK_POS) (TUI_EXEC_POS, TUI_EXECINFO_SIZE, tui_exec_info_content): ... here. commit 7ba913dcdf2f94cbd501d763f0fc55a46d10331c Author: Tom Tromey Date: Fri Jul 5 17:24:07 2019 -0600 Change tui_update_exec_info to be a method This changes tui_update_exec_info to be a method on tui_source_window_base. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. (tui_update_exec_info): Don't declare. * tui/tui-winsource.c (tui_update_source_window_as_is) (tui_source_window_base::refresh_all) (tui_update_all_breakpoint_info): Update. (tui_source_window_base::update_exec_info): Rename from tui_update_exec_info. * tui/tui-stack.c (tui_show_frame_info): Update. commit 37a4a1310484490878ce0af9ea1924d6c7dbec7b Author: Tom Tromey Date: Fri Jul 5 17:22:05 2019 -0600 Change tui_set_exec_info_content to be a method This changes tui_set_exec_info_content to bea method on tui_source_window_base. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. (tui_set_exec_info_content): Don't declare. * tui/tui-winsource.c (tui_source_window_base::set_exec_info_content): Rename from tui_set_exec_info_content. (tui_update_exec_info): Update. commit 0bd27e079a99d93590fd078c86c0afe51f6d29b8 Author: Tom Tromey Date: Fri Jul 5 17:18:18 2019 -0600 Change tui_show_source_content to be a method This changes tui_show_source_content to be a method on tui_source_window_base. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : Declare. (tui_show_source_content): Don't declare. * tui/tui-winsource.c (tui_update_source_window_as_is): Update. (tui_source_window_base::show_source_content): Rename from tui_show_source_content. (tui_source_window_base::refresh_all): Update. * tui/tui-layout.c (show_source_disasm_command) (show_source_or_disasm_and_command): Update. commit b4ef5aeb3a1880490f9441655d9de74727c9063a Author: Tom Tromey Date: Fri Jul 5 17:14:46 2019 -0600 Change tui_check_and_display_highlight_if_needed to be a method This changes tui_check_and_display_highlight_if_needed to be a method on tui_win_info. This makes it clear that the NULL check in that function is not needed, so it is removed here. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.c (tui_erase_source_content) (tui_show_source_content, tui_source_window_base::refresh_all): Update. * tui/tui-wingeneral.h (tui_check_and_display_highlight_if_needed): Don't declare. * tui/tui-wingeneral.c (tui_win_info::check_and_display_highlight_if_needed): Rename from check_and_display_highlight_if_needed. * tui/tui-win.c (tui_rehighlight_all) (tui_win_info::make_visible_with_new_height): Update. * tui/tui-regs.c (tui_data_window::display_registers_from_line) (tui_data_window::erase_data_content) (tui_data_window::display_all_data): Update. * tui/tui-data.h (struct tui_win_info) : Declare. commit fede52738f3ed3e375d84197380ae1a6cd35c6fe Author: Tom Tromey Date: Fri Jul 5 12:46:23 2019 -0600 Delete invisible TUI windows This changes the TUI so that when the layout changes, any windows that are invisible are now deleted. This makes it simpler to understand window lifetimes. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-win.c (tui_resize_all): Call tui_delete_invisible_windows. * tui/tui-layout.c (show_layout): Call tui_delete_invisible_windows. * tui/tui-data.h (tui_delete_invisible_windows): Declare. * tui/tui-data.c (tui_delete_invisible_windows): New function. commit 22c3f4909af125b457564db66e3cb3c56cb9abd3 Author: Tom Tromey Date: Fri Jul 5 12:38:44 2019 -0600 Simplify tui_show_disassem tui_show_disassem does not need to call tui_add_win_to_layout, because the callers that could change the layout have already ensured that it exists. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-disasm.c (tui_show_disassem): Add assertion. Don't call tui_add_win_to_layout. commit 16cb7910b946bad4b5f4aa69925361004c4e412f Author: Tom Tromey Date: Fri Jul 5 12:35:08 2019 -0600 Make tui_default_win_height static tui_default_win_height is only used in tui-layout.c, so make it static. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-layout.h (tui_default_win_height): Don't declare. * tui/tui-layout.c (tui_default_win_height): Now static. commit cc0c3ffbc975fe764f6c4746611a836e7a4ce379 Author: Tom Tromey Date: Fri Jul 5 12:34:31 2019 -0600 Two simplifications in tui-layout.c This patch simplifies some code in tui-layout.c. In show_layout, all the layout settings can be handled by a single switch statement. In show_source_disasm_command and show_source_or_disasm_and_command, there is no need to check the current layout, as the caller has already done so. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-layout.c (show_layout): Unify all layout cases into a single switch. (show_source_disasm_command, show_source_or_disasm_and_command): Don't check current layout. commit 3f3ffe54e229482bdb0785ae2162f03d60870400 Author: Tom Tromey Date: Fri Jul 5 12:29:18 2019 -0600 Simplify tui_make_all_invisible This simplifies the implementation of tui_make_all_invisible. Also, because show_data is only called by show_layout, this hoists the call to tui_make_all_invisible and removes the call from show_data. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-wingeneral.c (make_all_visible): Remove. (tui_make_all_invisible): Simplify. * tui/tui-layout.c (tui_make_all_invisible): Move from tui-wingeneral.c; simplify. (show_layout): Hoist call to tui_make_all_invisible. (show_data): Don't call tui_make_all_invisible. commit 69258091762bce83b0f3dc9e07800b87bdc0649f Author: Tom Tromey Date: Fri Jul 5 12:27:08 2019 -0600 Remove tui_make_all_visible The function tui_make_all_visible is not used, so remove it. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-wingeneral.h (tui_make_all_visible): Don't declare. * tui/tui-wingeneral.c (tui_make_all_visible): Remove. commit 62cf57fee7d72d0c2df2be4d999d63ea3bfafa43 Author: Tom Tromey Date: Fri Jul 5 12:13:40 2019 -0600 Move current_layout to tui-layout.c This moves the current_layout global to tui-layout.c. This allows for the removal of an accessor function; but also it just seems clearer to have it here. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-layout.c (current_layout, tui_current_layout): Move from tui-data.c. (show_source_disasm_command, show_data) (show_source_or_disasm_and_command): Don't use tui_set_current_layout_to. * tui/tui-data.h (tui_set_current_layout_to): Don't declare. * tui/tui-data.c (current_layout, tui_current_layout): Move to tui-layout.c. (tui_set_current_layout_to): Remove. commit 2afade5dbe1bf99db3f6ab625ca540be030e0e41 Author: Tom Tromey Date: Fri Jul 5 12:11:52 2019 -0600 Remove struct tui_layout_def "layout_def" isn't actually used in the TUI, so remove it. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-layout.c (tui_set_layout): Update. * tui/tui-data.h (struct tui_layout_def): Remove. (tui_layout_def): Don't declare. * tui/tui-data.c (layout_def): Remove. (tui_layout_def): Remove. commit a3504e96544b3f8918c4521116d537a4a07c2106 Author: Tom Tromey Date: Fri Jul 5 12:00:06 2019 -0600 clear_detail can only be called on TUI source windows The clear_detail method can only be called on source windows, so remove definitions from the base of the class hierarchy, leaving only a single non-virtual method. gdb/ChangeLog 2019-08-13 Tom Tromey * tui/tui-winsource.h (struct tui_source_window_base) : No longer "override". * tui/tui-regs.h (struct tui_data_window) : Remove. * tui/tui-regs.c (tui_data_window::clear_detail): Remove. * tui/tui-data.h (struct tui_win_info) : Remove. * tui/tui-command.h (struct tui_cmd_window) : Remove. * tui/tui-command.c (tui_cmd_window::clear_detail): Remove. commit 011168429859e3e3a2342ee043cbc2c7a5cf5e2f Author: Christian Biesinger Date: Tue Aug 13 14:00:58 2019 -0500 [readline] Fix compilation on MinGW S_ISLNK should not be called outside of an #ifdef. However, this specific call is actually unnecessary, because linkok can only be 0 if S_ISLNK is true, per the code above. I have sent a bug report to bug-readline, though it does not show up in the online archive yet. 2019-08-13 Christian Biesinger * colors.c (_rl_print_color_indicator): Remove unnecessary S_ISLNK check to fix compilation on MinGW. commit 29c9291108487e1dd9bc5677dafee58ea2068f77 Author: Tom Tromey Date: Mon Aug 12 12:06:20 2019 -0600 Don't include readline headers from tracepoint.c I was curious why updating readline caused so much to be to rebuilt, so I look at all the uses of the readline headers. Most are included for valid reasons (either readline directory or for tilde_expand); but the includes in tracepoint.c didn't seem to be used. This patch removes them. Tested by rebuilding. gdb/ChangeLog 2019-08-13 Tom Tromey * tracepoint.c: Don't include readline.h or history.h. commit abc6c00fb6cbb199348ec5f0bf4d969ed48bdfad Author: Tom de Vries Date: Tue Aug 13 18:57:50 2019 +0200 [gdb/testsuite] Fix gdb.gdb/selftest.exp regexp With gdb.gdb/selftest.exp, we get: ... (xgdb) PASS: gdb.gdb/selftest.exp: send SIGINT signal to child process ^M Thread 1 "xgdb" received signal SIGINT, Interrupt.^M 0x00007ffff5bf01db in poll () from /lib64/libc.so.6^M (gdb) FAIL: gdb.gdb/selftest.exp: send ^C to child process again ... The failure is due to gdb printing 'Thread 1 "xgdb" received signal SIGINT', but the regexp in the test-case expecting 'Program received signal SIGINT'. Fix this by updating the regexp, similar to how that is done earlier in the test-case. gdb/testsuite/ChangeLog: 2019-08-13 Tom de Vries * gdb.gdb/selftest.exp (send ^C to child process again): Accept also Thread. commit 74c2c1f45f036c4f155cc65a86022ce6eef0c5c5 Author: Sandra Loosemore Date: Tue Aug 13 09:09:30 2019 -0700 Fixes for gdb.python tests on remote Windows host. This patch fixes several test ERRORs and FAILs seen from running gdb.python tests on a remote Windows host. The problems fixed generally fall into these categories: - Failure to copy the .py script to the host. - Confusion between build and host pathnames. - Assuming pathnames printed on the host include "/" as a directory separator. - Tests that need to be conditionally disabled due to missing features on the host, etc. 2019-08-13 Sandra Loosemore gdb/testsuite/ * gdb.python/py-completion.exp: Download the .py file to the host and use its host pathname. Conditionalize tests that use tab completion and manipulate files on the build machine. * gdb.python/py-events.exp: Download the .py file to the host and use its host pathname. * gdb.python/py-evsignal.exp: Likewise. * gdb.python/py-evthreads.exp: Likewise. * gdb.python/py-framefilter-invalidarg.exp: Match Windows pathname syntax. * gdb.python/py-framefilter.exp: Download the .py file to the right place on the host. Match Windows pathname syntax. * gdb.python/py-mi-var-info-path-expression.exp: Download the .py file to the host and use its host pathname. * gdb.python/py-objfile-script.exp: Match Windows pathname syntax. * gdb.python/py-objfile.exp: Expect a host pathname, not a build pathname. Skip symlink test on Windows host. Add missing newline at end of file. * gdb.python/py-pp-maint.exp: Download the .py file to the host and use its host pathname. * gdb.python/py-pp-registration.exp: Match Windows pathname syntax. * gdb.python/py-section-script.exp: Use host location of binfile on safe-path. Use correct path separator on Windows host. Reorder alternatives in gdb_test_multiple to prevent matching the wrong alternative on success. * gdb.python/py-symtab.exp: Match Windows pathname syntax. commit 5067f530c3a26330263649fbef23c7685f27cbb7 Author: GDB Administrator Date: Tue Aug 13 00:00:26 2019 +0000 Automatic date update in version.in commit 86c6b807f50ecec84e55007bf6cb6e54c159727b Author: Tom Tromey Date: Sun Apr 21 13:58:49 2019 -0600 Require readline 7 or newer This changes gdb to require readline 7 or newer at build time. gdb/ChangeLog 2019-08-12 Tom Tromey * configure: Rebuild. * configure.ac: Check for readline 7. * NEWS: Mention readline 7 requirement. * README: Update. gdb/doc/ChangeLog 2019-08-12 Tom Tromey * gdb.texinfo (Configure Options): Document minimum version of readline. commit 5db2718ce48c497e317787caebacd019da59c3b0 Author: Tom Tromey Date: Sun Aug 4 17:39:27 2019 -0600 Remove readline hack from gdb_select As discussed on gdb-patches, this removes the readline hack from the mingw-hdep.c version of gdb_select. It's believed that this is not needed any more. See: https://sourceware.org/ml/gdb-patches/2019-03/msg00465.html gdb/ChangeLog 2019-08-12 Tom Tromey * mingw-hdep.c (gdb_select): Remove readline hack. commit cb41b9e70e6fbd1cb603bb9ba4372fbb8ae87b20 Author: Tom Tromey Date: Mon Aug 12 10:24:03 2019 -0600 Import readline 8.0 This imports readline 8.0. readline/ChangeLog.gdb 2019-08-12 Tom Tromey * Imported readline 8.0. commit ca2589f3bbad1e151abbb293d4c43a87b7a4d5ec Author: Patrick Palka Date: Sun Mar 17 08:32:16 2019 -0600 Fix gdb's selftest.exp after readline import After the sync there is one testsuite regression, the test "signal SIGINT" in gdb.gdb/selftest.exp which now FAILs. Previously, the readline 6.2 SIGINT handler would temporarily reinstall the underlying application's SIGINT handler and immediately re-raise SIGINT so that the orginal handler gets invoked. But now (since readline 6.3) its SIGINT handler does not re-raise SIGINT or directly invoke the original handler; it now sets a flag marking that SIGINT was raised, and waits until readline explicitly has control to call the application's SIGINT handler. Anyway, because SIGINT is no longer re-raised from within readline's SIGINT handler, doing "signal SIGINT" with a stopped inferior gdb process will no longer resume and then immediately stop the process (since there is no 2nd SIGINT to immediately catch). Instead, the inferior gdb process will now just print "Quit" and continue to run. So with this commit, this particular test case is adjusted to reflect this change in behavior (we now have to send a 2nd SIGINT manually to stop it). gdb/testsuite/ChangeLog 2019-08-12 Patrick Palka * gdb.gdb/selftest.exp (test_with_self): Update test to now expect the GDB inferior to no longer immediately stop after being resumed with "signal SIGINT". commit c15a79c78cc0111296b487de3fa59365f13df3bc Author: Tom Tromey Date: Sun Oct 7 15:29:57 2018 -0600 Remove gdb workaround from readline/xfree.c There is a gdb-local patch to deal with interrupts during completion. The original thread adding this patch is here: https://sourceware.org/ml/gdb-patches/2011-06/msg00147.html I believe readline now implements the approach suggested by Chet Ramey: https://sourceware.org/ml/gdb-patches/2011-06/msg00493.html So, I believe this patch can be removed. readline/ChangeLog.gdb 2018-10-07 Tom Tromey * Makefile.in (xfree.o): Don't depend on readline.h. * xfree.c (xfree): Remove gdb workaround. * xmalloc.h (xfree): Remove #define. commit a2d4e4b70945c1704e5249ad6a9be9d5875a4b0e Author: Tom Tromey Date: Sun Oct 7 15:25:44 2018 -0600 Remove gdb workaround from readline/emacs_keymap.c There is a gdb-local patch in readline/emacs_keymap.c that says: /* Temporary - this is a bug in readline 5.1 that should be fixed in readline 5.2. */ So, I think this can be removed now. I have no way to test this, as the patch was specific to mingw. readline/ChangeLog.gdb 2018-10-07 Tom Tromey * emacs_keymap.c: Remove gdb workaround. commit 57a2fe070226852b84eff8f37e49b367daa2a32f Author: Tom Tromey Date: Sun Oct 7 15:24:12 2018 -0600 Remove gdb workaround from readline/complete.c This removes a gdb-local patch from readline's get_y_or_n. The code references a gdb test that continues to work when I remove this patch. So, I think it is not needed any more. readline/ChangeLog.gdb 2018-10-07 Tom Tromey * complete.c (get_y_or_n): Remove gdb workaround. commit 775e241e9c5f2b2ff2b59972ab70e5f20763fae6 Author: Tom Tromey Date: Sun Oct 7 12:52:13 2018 -0600 Import readline 7.0 (patch 5) This imports readline 7.0 (up to patch 5) while preserving all gdb-local changes. This was done by checking out the readline git repository, making a branch based on the gdb baseline revision, applying the gdb changes to that branch, and then merging from readline 7. readline/ChangeLog.gdb 2019-08-12 Tom Tromey * Imported readline 7.0 patch 5. commit 08132bdd876fa1825810f90ecc25390dd4ded457 Author: Srinath Parvathaneni Date: Mon Aug 12 17:17:18 2019 +0100 Modify the ARM encoding and decoding of SQRSHRL and UQRSHLL MVE instructions. This is a change to the first published specifications [1][a] but since there is no hardware out there that uses the old instructions we do not want to support the old variant. This changes are done based on the latest published specifications [1][b]. [1] https://developer.arm.com/architectures/cpu-architecture/m-profile/docs/ddi0553/latest/armv81-m-architecture-reference-manual [a] version bf [b] version bh gas * config/tc-arm.c (enum operand_parse_code): Add the entry OP_I48_I64. (po_imm1_or_imm2_or_fail): Marco to check the immediate is either of 48 or 64. (parse_operands): Add case OP_I48_I64. (do_mve_scalar_shift1): Add function to encode the MVE shift instructions with 4 arguments. * testsuite/gas/arm/mve-shift-bad.l: Modify. * testsuite/gas/arm/mve-shift-bad.s: Likewise. * testsuite/gas/arm/mve-shift.d: Likewise. * testsuite/gas/arm/mve-shift.s: Likewise. opcodes * arm-dis.c (struct mopcode32 mve_opcodes): Modify the mask for cases MVE_SQRSHRL and MVE_UQRSHLL. (print_insn_mve): Add case for specifier 'k' to check specific bit of the instruction. commit 5312fe52e9ae6fd108f161a271315eb2821246eb Author: Barnaby Wilks Date: Mon Aug 12 11:08:36 2019 +0100 Add generic and ARM specific support for half-precision IEEE 754 floating point numbers to the assembler. Half precision floating point numbers will be encoded using the IEEE 754 half precision floating point format - 16 bits in total, 1 for sign, 5 for exponent and 10 bits of mantissa. This patch implements the float16 directive for both the IEEE 754 format and the Arm alternative format for the Arm backend. The syntax of the directive is: .float16 <0-n decimal numbers> e.g. .float16 12.0 .float16 0.23, 433.1, 0.06 The Arm alternative format is almost identical to the IEEE 754 format, except that it doesn't encode for NaNs or Infinity (instead an exponent of 0x1F represents a normalized number in the range 65536 to 131008). The alternative format is documented in the reference manual: https://static.docs.arm.com/ddi0487/db/DDI0487D_b_armv8_arm.pdf?_ga=2.72318806.49764181.1561632697-999473562.1560847439 Which format is used is controlled by the .float16_format directive, where if = ieee, then use the IEEE 754 half-precision format else if = alternative, then use the Arm alternative format Or the format can be set on the command line via the -mfp16-format option that has a similar syntax. -mfp16-format=. This also fixes the format and it cannot be changed by any directives. Once the format has been set (either by the command line option or a directive) it cannot be changed, and any attempts to change it (i.e. with the float16_format directive) will result in a warning and the line being ignored. For ELF targets the appropriate EABI attribute will be written out at the end of assembling if the format has been explicitly specified. If no format has been explicitly specified then no EABI attributes will be written. If the format is not explicitly specified then any float16 directives are encoding using the IEEE 754-2008 format by default until the format is fixed or changed with the float16_format directive. gas * config/tc-arm.c (enum fp_16bit_format): Add enum to represent the 2 float16 encodings. (md_atof): Set precision for float16 type. (arm_is_largest_exponent_ok): Check for whether to encode with the IEEE or alternative format. (set_fp16_format): Parse a float16_format directive. (arm_parse_fp16_opt): Parse the fp16-format command line option. (aeabi_set_public_attributes): For ELF encode the FP16 format EABI attribute. * config/tc-arm.h (TC_LARGEST_EXPONENT_IS_NORMAL): Macro that expands to arm_is_largest_exponent_ok. (arm_is_largest_exponent_ok): Add prototype for arm_is_largest_exponent_ok function. * doc/c-arm.texi: Add documentation for .float16, .float16_format and -mfp16-format= * testsuite/gas/arm/float16-bad.d: New test. * testsuite/gas/arm/float16-bad.l: New test. * testsuite/gas/arm/float16-bad.s: New test. * testsuite/gas/arm/float16-be.d: New test. * testsuite/gas/arm/float16-format-bad.d: New test. * testsuite/gas/arm/float16-format-bad.l: New test. * testsuite/gas/arm/float16-format-bad.s: New test. * testsuite/gas/arm/float16-format-opt-bad.d: New test. * testsuite/gas/arm/float16-format-opt-bad.l: New test. * testsuite/gas/arm/float16-le.d: New test. * testsuite/gas/arm/float16.s: New test. * testsuite/gas/arm/float16-eabi-alternative-format.d: New test. * testsuite/gas/arm/float16-eabi-ieee-format.d: New test. * testsuite/gas/arm/float16-eabi-no-format.d: New test. * testsuite/gas/arm/float16-eabi.s: New test. * config/atof-ieee.c (H_PRECISION): Macro for precision of float16 type. (atof_ieee): Set precision and exponent bits for encoding float16 types. (gen_to_words): NaN and Infinity encoding for float16. (ieee_md_atof): Set precision for encoding float16 type. commit 9bb9c115cd3d0b9de97e02cf2e861972010daa6f Author: Alan Modra Date: Mon Aug 12 11:15:19 2019 +0930 PR24851, gas/testsuite/gas/epiphany/badrelax.s failure with MALLOC_PERTURB_=1 PR 24851 * config/tc-epiphany.c (md_estimate_size_before_relax): Clear extra opcode bytes when changing from a 2-byte to a 4-byte insn. commit b32b0a69fdf24a8b04efe9c2b90c3e830aa0c2c1 Author: GDB Administrator Date: Mon Aug 12 00:00:22 2019 +0000 Automatic date update in version.in commit acdb5f3476c4dd5a0f7182e2e96eafee3a84d856 Author: GDB Administrator Date: Sun Aug 11 00:00:54 2019 +0000 Automatic date update in version.in commit dc02848a69da5b8794a3d7094664e3b4d9a508cf Author: Alan Modra Date: Sat Aug 10 13:02:49 2019 +0930 Sort statement_enum and lang_statement_union To make comparing the two easier. * ldlang.h (enum statement_enum): Sort. (union lang_statement_union): Sort. commit 4cfbdbfd2607a2bcfb9f745410e34aea8f044a9b Author: Alan Modra Date: Sat Aug 10 12:35:20 2019 +0930 Delete unused ldlang.h structs * ldlang.h (lang_common_statement_type): Delete. (lang_object_symbols_statement_type): Delete. (union lang_statement_union): Remove common_statement and object_symbols_statement. commit 988de25b366c74cd62e35f3d5cf63086a964c7aa Author: Alan Modra Date: Sat Aug 10 12:28:31 2019 +0930 stat_alloc casts Casts from a void* just clutter the source. * ldexp.c (exp_intop, exp_bigintop, exp_relop, exp_binop, exp_trinop), (exp_unop, exp_nameop, exp_assop, exp_assert): Remove casts of stat_alloc return value. * ldlang.c (new_statement, new_afile, sort_def_symbol), (lang_memory_region_lookup, lang_memory_region_alias), (ldlang_add_undef, ldlang_add_require_defined, insert_pad), (lang_add_gc_name, lang_new_phdr): Likewise. * lexsup.c (set_segment_start): Likewise. commit 36983a93bb338b7cdd6f7d6f9f91dc9ce9815b4e Author: Alan Modra Date: Sat Aug 10 10:30:19 2019 +0930 lang_input_statement_type next pointers "next" and "next_real_file" in lang_input_statement_type always point to another lang_input_statement_type, so it makes sense for these to not be the generic lang_statement_union_type. This patch also updates a number of variables in ldlang.c for the same reason, and modifies lang_statement_append to reduce the need for casts. * ldlang.h (lang_input_statement_type): Make next and next_real_file a lang_input_statement_type pointer. (lang_statement_append): Delete prototype. (LANG_FOR_EACH_INPUT_STATEMENT): Update for lang_input_statement_type change. * ldmain.c (add_archive_element): Likewise. * ldlang.c: Likewise throughout. (lang_statement_append): Make static. Make element and field void pointers. Remove casts in calls. (lang_check): Use a lang_input_statement_type pointer for "file". (find_rescan_insertion): Similarly for "iter" and return value. (lang_process): Similarly for "insert", "iter" and "temp". * emultempl/spuelf.em (embedded_spu_file): Likewise. * emultempl/aix.em (gld${EMULATION_NAME}_before_allocation): Expand lang_statment_append call. commit 8be90e963138c88d7648c1eb2146e45f048d616e Author: GDB Administrator Date: Sat Aug 10 00:00:29 2019 +0000 Automatic date update in version.in commit 020a839d52fb8a28059dadd075b09a2fec84ef74 Author: Sandra Loosemore Date: Fri Aug 9 13:45:44 2019 -0700 Match Windows pathnames in gdb.linespec/break-ask.exp. 2019-08-09 Sandra Loosemore gdb/testsuite/ * gdb.linespec/break-ask.exp: Generalize regexps to match Windows pathnames too. commit dac36daf78653a8e4688b825cdb15461a88470d2 Author: Pedro Franco de Carvalho Date: Fri Aug 9 16:49:46 2019 -0300 Fix access to uninitialized variable in fill_in_stop_func This patch changes find_pc_partial_function so that *block is set to nullptr when it fails, so that fill_in_stop_func won't access an uninitialized variable. gdb/ChangeLog: 2019-08-09 Pedro Franco de Carvalho * blockframe.c (find_pc_partial_function): Set *block to nullptr when the function fails. commit 1022c627dbd9d7f7f67ac68f16de05474de7a75a Author: Andreas Arnez Date: Fri Aug 9 20:27:03 2019 +0200 s390: Implement 'type_align' gdbarch method The align.exp test case yields many FAILs on s390x, since GDB's _Alignoff doesn't always agree with the compiler's. On s390x, the maximum alignment is 8, but GDB returns an alignment of 16 for 16-byte data types such as "long double". This is fixed by implementing the type_align gdbarch method. The new method returns an alignment of 8 for all integer, floating-point, and vector types larger than 8 bytes. With this change, all align.exp tests pass. gdb/ChangeLog: * s390-tdep.c (s390_type_align): New function. (s390_gdbarch_init): Set it as type_align gdbarch method. commit f211b8c0b91fc7b1657079a495f05a9a4d957821 Author: Nick Clifton Date: Fri Aug 9 16:16:18 2019 +0100 Synchronize libiberty sources with gcc mainline. * libiberty: Sync with gcc. Bring in: 2019-08-08 Martin Liska PR bootstrap/91352 * lrealpath.c (is_valid_fd): New function. 2019-07-24 Martin Liska PR lto/91228 * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): Find first '\0' starting from gnu_lto + 1. 2019-07-12 Ren Kimura * simple-object-elf.c (simple_object_elf_match): Check zero value shstrndx. This fixes a Bug 90924. 2019-07-22 Martin Liska * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): Do not search for gnu_lto_v1, but search for first '\0'. 2019-07-18 Eduard-Mihai Burtescu * cplus-dem.c: Include rust-demangle.h. * rust-demangle.c: Include rust-demangle.h. * rust-demangle.h: New file. 2019-05-31 Michael Forney * cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__ is non-zero. 2019-04-30 Ben L * d-demangle.c (dlang_parse_assocarray): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. * d-demangle.c (dlang_parse_tuple): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. * d-demangle.c (dlang_parse_structlit): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. * d-demangle.c (dlang_parse_arrayliteral): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. * d-demangle.c (dlang_parse_integer): Fix stack underflow. * testsuite/d-demangle-expected: Add testcase. * cp-demangle (d_print_comp_inner): Guard against a NULL 'typed_name'. * testsuite/demangle-expected: Add testcase. * cp-demangle.c (d_encoding): Guard against NULL return values from d_right (dc). * testsuite/demangle-expected: Add testcase. 2019-04-29 Ben L * cp-demangle.c (d_expression_1): Don't peek ahead unless the current char is valid. * testsuite/demangle-expected: Add testcase. 2019-04-10 Nick Clifton PR 89394 * cp-demangle.c (cplus_demangle_fill_name): Reject negative lengths. (d_count_templates_scopes): Replace num_templates and num_scopes parameters with a struct d_print_info pointer parameter. Adjust body of the function accordingly. Add recursion counter and check that the recursion limit is not reached. (d_print_init): Pass dpi parameter to d_count_templates_scopes. Reset recursion counter afterwards, unless the recursion limit was reached. commit f16a9783c5f085443d806646074e9c06fdee9a88 Author: Mihailo Stojanovic Date: Fri Aug 9 11:06:37 2019 +0100 Add support for a MIPS specific .MIPS.xhash section. This patch is a reimplementation of [1] which was submitted in 2015 by Neil Schellenberger. Copyright issue was sorted out [2] last year. It proposed a new section (.gnu.xhash) and related dynamic tag (DT_GNU_XHASH). The new section would be virtually identical to the existing .gnu.hash except for the translation table (xlat) which would contain correct MIPS .dynsym indexes corresponding to the hashvals in chains. This is because MIPS ABI imposes a different ordering on the dynsyms than the one expected by the .gnu.hash section. Another addition would be a leading word (ngnusyms) which would contain the number of entries in the translation table. In this patch, the new section name and dynamic tag are changed to reflect the fact that the section should be treated as MIPS-specific (.MIPS.xhash and DT_MIPS_XHASH). This patch addresses the alignment issue as reported in [3], which is caused by the leading word added to the .MIPS.xhash section. Leading word is removed in this patch, and the number of entries in the translation table is now calculated using DT_MIPS_SYMTABNO dynamic tag (this is addressed by the corresponding glibc patch). Suggestions on coding style in [4] were taken into account. Existing GNU hash testcase was covered, and another one was added in the MIPS part of the testsuite. The other major change is reserving MIPS ABI version 5 for .MIPS.xhash, marking the need of support for .MIPS.xhash in the dynamic linker (again, addressed in the corresponding glibc patch). This is something which I am not sure of, especially after reading [5]. I am confused on whether this ABI version is reserved for IFUNC, or it can be used for this purpose. Already mentioned glibc patch is submitted at: https://sourceware.org/ml/libc-alpha/2019-06/msg00456.html [1] https://sourceware.org/ml/binutils/2015-10/msg00057.html [2] https://sourceware.org/ml/binutils/2018-03/msg00025.html [3] https://sourceware.org/ml/binutils/2016-01/msg00006.html [4] https://sourceware.org/ml/binutils/2016-02/msg00097.html [5] https://sourceware.org/ml/libc-alpha/2016-12/msg00853.html ld * emulparams/elf32bmip.sh: Add .MIPS.xhash section. * emulparams/elf32bmipn32-defs.sh: Add .MIPS.xhash section. * emulparams/elf64bmip-defs.sh: Add .MIPS.xhash section. * emultempl/mipself.em: Remove mips_after_parse function. * testsuite/ld-elf/hash.d: Update comment. * testsuite/ld-mips-elf/hash1.d: New test. * testsuite/ld-mips-elf/hash1.s: Ditto. * testsuite/ld-mips-elf/hash1a.d: Remove. * testsuite/ld-mips-elf/hash1b.d: Ditto. * testsuite/ld-mips-elf/hash1c.d: Ditto * testsuite/ld-mips-elf/hash2.d: New test. * testsuite/ld-mips-elf/mips-elf.exp: New tests. * testsuite/ld-mips-elf/start.s: New test. bfd * elf-bfd.h (struct elf_backend_data): New members. * elflink.c (_bfd_elf_link_create_dynamic_sections): Create .gnu.hash section if necessary. (struct collect_gnu_hash_codes): New member. (elf_gnu_hash_process_symidx): New function name. (elf_renumber_gnu_hash_syms): Ignore local and undefined symbols. Record xlat location for every symbol which should have a .MIPS.xhash entry. (bfd_elf_size_dynamic_sections): Add DT_GNU_HASH dynamic tag to dynamic section if necessary. (GNU_HASH_SECTION_NAME): New define. (bfd_elf_size_dynsym_hash_dynstr): Get .MIPS.xhash section. Update the section size info. * elfxx-mips.c (struct mips_elf_hash_sort_data): New members. (struct mips_elf_link_hash_entry): New member. (mips_elf_link_hash_newfunc): Initialize .MIPS.xhash translation table location. (mips_elf_sort_hash_table): Initialize the pointer to the .MIPS.xhash section. (mips_elf_sort_hash_table_f): Populate the .MIPS.xhash translation table entry with the symbol dynindx. (_bfd_mips_elf_section_from_shdr): Add SHT_MIPS_XHASH. (_bfd_mips_elf_fake_sections): Initialize .MIPS.xhash section info. (_bfd_mips_elf_create_dynamic_sections): Create .MIPS.xhash section. (_bfd_mips_elf_size_dynamic_sections): Add DT_MIPS_XHASH tag to dynamic section. (_bfd_mips_elf_finish_synamic_sections): Add DT_MIPS_XHASH. (_bfd_mips_elf_final_write_processing): Set .MIPS.xhash section sh_link info. (_bfd_mips_elf_get_target_dtag): Get DT_MIPS_XHASH tag. (MIPS_LIBC_ABI_XHASH): New ABI version enum value. (_bfd_mips_post_process_headers): Mark the ABI version as MIPS_LIBC_ABI_XHASH if there exists a .MIPS.xhash section, but not a .hash section. (_bfd_mips_elf_record_xhash_symbol): New function. Record a position in the translation table, associated with the hash entry. * elfxx-mips.h (literal_reloc_p): Define elf_backend_record_xhash_symbol backend hook. * elfxx-target.h: Initialize elf_backend_record_xhash_symbol backend hook. include * elf/mips.h (SHT_GNU_XHASH): New define. (DT_GNU_XHASH): New define. binutils * readelf.c (get_mips_dynamic_type): Return MIPS_XHASH dynamic type. (get_mips_section_type_name): Return MI{S_XHASH name string. (dynamic_section_mips_val): Initialize the .MIPS.xhash dynamic info. (process_symbol_table): Initialize the .MIPS.xhash section pointer. Adjust the readelf output to support the new section. (process_object): Set the .MIPS.xhash dynamic info to zero. commit 1ba7cdcd931ddf672e4a8a6483593f9b94e55965 Author: Alan Hayward Date: Thu Aug 8 09:01:12 2019 +0100 doc: fix PAC typo gdb/doc/ChangeLog: * gdb.texinfo (AArch64 Pointer Authentication): Fix typo. commit 2b2ed2452c0bd2437ff65e71356bece225f0be46 Author: Tamar Christina Date: Fri Aug 9 09:06:50 2019 +0100 Arm: Skip tests on WINCE that require mapping symbols The following tests fail on wince as they rely on mapping symbols to give them a fixed order. This skips them on platforms that don't have mapping symbols. binutils/ChangeLog: * testsuite/binutils-all/arm/in-order-all.d: Skip on pe, wince, coff. * testsuite/binutils-all/arm/in-order.d: Likewise. * testsuite/binutils-all/arm/out-of-order-all.d: Likewise. * testsuite/binutils-all/arm/out-of-order.d: Likewise. commit 678581fc78cffcfd1423b557368c3a0cfb695b87 Author: Jan Beulich Date: Fri Aug 9 09:57:57 2019 +0200 x86-64: generalize SIMD test expectations In order to be able to add/remove insns to/from the middle of these tests, generalize the patterns for the symbol reference comments of RIP- relative operands. commit eba4caf23152a1a66d10ce37c502ec78654cd5eb Author: Tom de Vries Date: Fri Aug 9 06:49:04 2019 +0200 [gdb] Fix gdb.dwarf2/varval.exp with -fPIE/-pie With target board unix/-fPIE/-pie, we get: ... FAIL: gdb.dwarf2/varval.exp: print varval2 ... This is due comparing a get_frame_pc result (which includes the for PIE non-zero relocation offset) with pc_high and pc_low obtained using get_scope_pc_bounds (which do not include the relocation offset). Fix this by adjusting pc_high and pc_low with the relocation offset. Tested on x86_64-linux with target board unix/-fPIE/-pie. gdb/ChangeLog: 2019-08-09 Tom de Vries PR gdb/24591 * dwarf2read.c (dwarf2_fetch_die_loc_sect_off): Adjust pc_high and pc_low with relocation offset. commit 378646f7a4260eecd244ba840ae1af4e663e30a5 Author: GDB Administrator Date: Fri Aug 9 00:00:09 2019 +0000 Automatic date update in version.in commit 128d6509819d9d4fe6f52d1a5dcc458b9cbd0f4c Author: Tom de Vries Date: Thu Aug 8 22:26:28 2019 +0200 [gdb/testsuite] Fix gdb.tui/basic.exp with check-read1 With gdb.tui/basic.exp and check-read1, we run into (using -v for verbose log): ... ^[[0+++ _csi_0 <<<>>> ERROR: (DejaGnu) proc "_csi_0" does not exist. ... In contrast, without check-read1, we have: ... ^[[0;10m+++ _csi_m <<<0;10>>> ... The problem is that this regexp in _accept: ... -re "^\x1b\\\[(\[0-9;\]*)(\[0-9a-zA-Z@\])" { ... while matching the longer sequence '^[' '[' '0' ';' '1' '0' 'm', also matches the shorter sequence '^[' '[' '0'. The regexp attempts to match a CSI (Control Sequence Introducer) sequence, and the final byte of such a sequence cannot be a digit. Fix the regexp accordingly: ... - -re "^\x1b\\\[(\[0-9;\]*)(\[0-9a-zA-Z@\])" { + -re "^\x1b\\\[(\[0-9;\]*)(\[a-zA-Z@\])" { ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-08 Tom de Vries PR testsuite/24862 * lib/tuiterm.exp (_accept): Fix CSI regexp. commit dbe15e4e1dda8e20cc347ced751631d49a5f57de Author: Nick Clifton Date: Thu Aug 8 17:04:31 2019 +0100 Change the output of readelf's note display so that the "Data size" column header is left justified. PR 24887 binutils* readelf.c (process_notes_at): Left justify the "Data size" column heading. * testsuite/binutils-all/i386/empty.d: Adjust for new output format. * testsuite/binutils-all/i386/ibt.d: Likewise. * testsuite/binutils-all/i386/pr21231a.d: Likewise. * testsuite/binutils-all/i386/pr21231b.d: Likewise. * testsuite/binutils-all/i386/shstk.d: Likewise. * testsuite/binutils-all/note-2-32.d: Likewise. * testsuite/binutils-all/note-2-64.d: Likewise. * testsuite/binutils-all/x86-64/empty-x32.d: Likewise. * testsuite/binutils-all/x86-64/empty.d: Likewise. * testsuite/binutils-all/x86-64/ibt-x32.d: Likewise. * testsuite/binutils-all/x86-64/ibt.d: Likewise. * testsuite/binutils-all/x86-64/pr21231a.d: Likewise. * testsuite/binutils-all/x86-64/pr21231b.d: Likewise. * testsuite/binutils-all/x86-64/pr23494a-x32.d: Likewise. * testsuite/binutils-all/x86-64/pr23494a.d: Likewise. * testsuite/binutils-all/x86-64/pr23494c-x32.d: Likewise. * testsuite/binutils-all/x86-64/pr23494c.d: Likewise. * testsuite/binutils-all/x86-64/pr23494d-x32.d: Likewise. * testsuite/binutils-all/x86-64/pr23494d.d: Likewise. * testsuite/binutils-all/x86-64/pr23494e-x32.d: Likewise. * testsuite/binutils-all/x86-64/pr23494e.d: Likewise. * testsuite/binutils-all/x86-64/shstk-x32.d: Likewise. * testsuite/binutils-all/x86-64/shstk.d: Likewise. ld * testsuite/ld-aarch64/bti-plt-2.d: Adjust for new output format from readelf. * testsuite/ld-aarch64/bti-plt-4.d: Likewise. * testsuite/ld-aarch64/bti-plt-6.d: Likewise. * testsuite/ld-aarch64/bti-plt-7.d: Likewise. * testsuite/ld-aarch64/bti-warn.d: Likewise. * testsuite/ld-aarch64/property-bti-pac1.d: Likewise. * testsuite/ld-aarch64/property-bti-pac2.d: Likewise. * testsuite/ld-aarch64/property-bti-pac3.d: Likewise. * testsuite/ld-elf/x86-feature-1a.rd: Likewise. * testsuite/ld-elf/x86-feature-1b.rd: Likewise. * testsuite/ld-elf/x86-feature-1c.rd: Likewise. * testsuite/ld-elf/x86-feature-1d.rd: Likewise. * testsuite/ld-elf/x86-feature-1e.rd: Likewise. * testsuite/ld-i386/ibt-plt-2d.d: Likewise. * testsuite/ld-i386/ibt-plt-3d.d: Likewise. * testsuite/ld-i386/pr23372a.d: Likewise. * testsuite/ld-i386/pr23372c.d: Likewise. * testsuite/ld-i386/pr23486a.d: Likewise. * testsuite/ld-i386/pr23486b.d: Likewise. * testsuite/ld-i386/pr23486c.d: Likewise. * testsuite/ld-i386/pr23486d.d: Likewise. * testsuite/ld-i386/pr24322a.d: Likewise. * testsuite/ld-i386/pr24322b.d: Likewise. * testsuite/ld-i386/property-x86-3.d: Likewise. * testsuite/ld-i386/property-x86-4a.d: Likewise. * testsuite/ld-i386/property-x86-5.d: Likewise. * testsuite/ld-i386/property-x86-cet1.d: Likewise. * testsuite/ld-i386/property-x86-cet2a.d: Likewise. * testsuite/ld-i386/property-x86-cet5a.d: Likewise. * testsuite/ld-i386/property-x86-cet5b.d: Likewise. * testsuite/ld-i386/property-x86-ibt1a.d: Likewise. * testsuite/ld-i386/property-x86-ibt1b.d: Likewise. * testsuite/ld-i386/property-x86-ibt2.d: Likewise. * testsuite/ld-i386/property-x86-ibt3a.d: Likewise. * testsuite/ld-i386/property-x86-ibt3b.d: Likewise. * testsuite/ld-i386/property-x86-ibt4.d: Likewise. * testsuite/ld-i386/property-x86-ibt5.d: Likewise. * testsuite/ld-i386/property-x86-shstk1a.d: Likewise. * testsuite/ld-i386/property-x86-shstk1b.d: Likewise. * testsuite/ld-i386/property-x86-shstk2.d: Likewise. * testsuite/ld-i386/property-x86-shstk3a.d: Likewise. * testsuite/ld-i386/property-x86-shstk3b.d: Likewise. * testsuite/ld-i386/property-x86-shstk4.d: Likewise. * testsuite/ld-i386/property-x86-shstk5.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2d-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-2d.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3d-x32.d: Likewise. * testsuite/ld-x86-64/ibt-plt-3d.d: Likewise. * testsuite/ld-x86-64/pr23372a-x32.d: Likewise. * testsuite/ld-x86-64/pr23372a.d: Likewise. * testsuite/ld-x86-64/pr23372c-x32.d: Likewise. * testsuite/ld-x86-64/pr23372c.d: Likewise. * testsuite/ld-x86-64/pr23486a-x32.d: Likewise. * testsuite/ld-x86-64/pr23486a.d: Likewise. * testsuite/ld-x86-64/pr23486b-x32.d: Likewise. * testsuite/ld-x86-64/pr23486b.d: Likewise. * testsuite/ld-x86-64/pr23486c-x32.d: Likewise. * testsuite/ld-x86-64/pr23486c.d: Likewise. * testsuite/ld-x86-64/pr23486d-x32.d: Likewise. * testsuite/ld-x86-64/pr23486d.d: Likewise. * testsuite/ld-x86-64/pr24322a-x32.d: Likewise. * testsuite/ld-x86-64/pr24322a.d: Likewise. * testsuite/ld-x86-64/pr24322b-x32.d: Likewise. * testsuite/ld-x86-64/pr24322b.d: Likewise. * testsuite/ld-x86-64/pr24458a-x32.d: Likewise. * testsuite/ld-x86-64/pr24458a.d: Likewise. * testsuite/ld-x86-64/pr24458b-x32.d: Likewise. * testsuite/ld-x86-64/pr24458b.d: Likewise. * testsuite/ld-x86-64/pr24458c-x32.d: Likewise. * testsuite/ld-x86-64/pr24458c.d: Likewise. * testsuite/ld-x86-64/property-1.r: Likewise. * testsuite/ld-x86-64/property-1a.r: Likewise. * testsuite/ld-x86-64/property-2.r: Likewise. * testsuite/ld-x86-64/property-2a.r: Likewise. * testsuite/ld-x86-64/property-3.r: Likewise. * testsuite/ld-x86-64/property-3a.r: Likewise. * testsuite/ld-x86-64/property-4.r: Likewise. * testsuite/ld-x86-64/property-4a.r: Likewise. * testsuite/ld-x86-64/property-5.r: Likewise. * testsuite/ld-x86-64/property-5a.r: Likewise. * testsuite/ld-x86-64/property-6.r: Likewise. * testsuite/ld-x86-64/property-7.r: Likewise. * testsuite/ld-x86-64/property-7a.r: Likewise. * testsuite/ld-x86-64/property-x86-3-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-3.d: Likewise. * testsuite/ld-x86-64/property-x86-4a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-4a.d: Likewise. * testsuite/ld-x86-64/property-x86-5-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-5.d: Likewise. * testsuite/ld-x86-64/property-x86-cet1-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-cet1.d: Likewise. * testsuite/ld-x86-64/property-x86-cet2a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-cet2a.d: Likewise. * testsuite/ld-x86-64/property-x86-cet5a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-cet5a.d: Likewise. * testsuite/ld-x86-64/property-x86-cet5b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-cet5b.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt1a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt1a.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt1b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt1b.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt2-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt2.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt4-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt4.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt5-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-ibt5.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk1a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk1a.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk1b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk1b.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk2-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk2.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk4-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk4.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk5-x32.d: Likewise. * testsuite/ld-x86-64/property-x86-shstk5.d: Likewise. gas * testsuite/gas/i386/property-1.d: Adjust for new output format from readelf. * testsuite/gas/i386/property-2.d: Likewise. * testsuite/gas/i386/x86-64-property-1.d: Likewise. * testsuite/gas/i386/x86-64-property-2.d: Likewise. commit 7b1dd701059ead8f3af3c081fc9727b9883a74c3 Author: Yoshinori Sato Date: Thu Aug 8 13:59:17 2019 +0100 Update the handling of shift rotate and load/store multiple instructions in the H8300 assembler. incldue * opcode/h8300.h (EXPAND_UNOP_EXTENDED_B): Add MODEL. (EXPAND_UNOP_EXTENDED_W): Likewise. (EXPAND_UNOP_EXTENDED_L): Likewise. (struct h8_opcode h8_opcodes): Likewise. (struct h8_opcode h8_opcodes): tas / ldm / stm supported H8S or later. commit 8fb49c3c715190a5753980d0ddef721d816bbc3d Author: Yoshinori Sato Date: Thu Aug 8 13:43:13 2019 +0100 Move the h8300 assembler's MOVFPE and MOVTPE tests to the correct location. * gas/testsuite/gas/h8300/h8300.exp: Fix movfpe and movtpe tests. * gas/testsuite/gas/h8300/misc.s: Likewise. * gas/testsuite/gas/h8300/misch.s: Likewise. * gas/testsuite/gas/h8300/miscs.s: Likewise. commit 7d55c1d61edfef2323f5d4675f0367ffb411c3cb Author: Nick Clifton Date: Thu Aug 8 10:24:08 2019 +0100 Fix problem building PE DLL test generator with compilers that do not support c99/c11. * testsuite/gentestdlls.c (main): Move declaration of loop variable outside of the for() statement. commit 178d871928b99112a39e0ca1284d6bbdde50ab6e Author: Jordan Rupprecht via binutils Date: Wed Aug 7 13:48:14 2019 -0700 readelf: mask unknown description data bytes. When printing unknown note types, readelf prints the raw description section byte-by-byte. However, it does not mask appropriately, e.g. it prints the byte 'ba' as 'ffffffba'. * readelf.c (process_note): Mask unknown description data bytes. commit b1791af06ec358d21dbe6a99129f11cc02438962 Author: GDB Administrator Date: Thu Aug 8 00:00:22 2019 +0000 Automatic date update in version.in commit d88bdcb4a52bc041ed9b607dda22f478ec61a67b Author: Phillipe Antoine Date: Wed Aug 7 17:22:29 2019 +0100 Prevent objdump from aborting when asked to disassemble an unknown type of ARC binary file. PR 24854 * arc-dis.c (arc_insn_length): Return 0 rather than aborting when encountering an unknown machine type. (print_insn_arc): Handle arc_insn_length returning 0. In error cases return -1 rather than calling abort. commit 7c1c1904bedb8f873731651b420a23f573785728 Author: Alan Modra Date: Wed Aug 7 23:37:49 2019 +0930 Integer overflows in readelf get_data I noticed the test for overflow of amt = size * nmemb in get_data wasn't effective. An obvious example of nmemb = 3 and size = half max value overflows but doesn't result in amt < nmemb. This patch fixes this problem and reports a size truncation or overflow rather than out of memory in more cases. * readelf.c (get_data): Improve overflow checks. commit f927cc8faff0d2e39561c90f5182ebe99b2f77f6 Author: Nick Clifton Date: Wed Aug 7 15:15:59 2019 +0100 Improve the formatting of the title strings of the binutils manual pages. PR 24777 * doc/binutils.texi: Ensure consistent formating of title strings for man pages. Extend the title of the size man page to be more informative. commit 123cd851480c728845a4c3f85da772dd8331cf19 Author: Tom Tromey Date: Tue Aug 6 13:50:03 2019 -0600 Make struct frame_arg self-managing This changes struct frame_arg to be self-managing and then fixes the various users. Tested by the buildbot. gdb/ChangeLog 2019-08-07 Tom Tromey * stack.c (print_frame_arg, read_frame_local, read_frame_arg) (print_frame_args): Update. * python/py-framefilter.c (py_print_single_arg, enumerate_args): Update. * mi/mi-cmd-stack.c (list_arg_or_local): Update. * frame.h (struct frame_arg): Add initializers. : Now a unique_xmalloc_ptr. commit 3d31bc39e655ea39721754fa0ea539a8a0c9b26c Author: Alan Hayward Date: Wed Aug 7 09:47:57 2019 +0100 AArch64 pauth: Indicate unmasked addresses in backtrace Armv8.3-a Pointer Authentication causes the function return address to be obfuscated on entry to some functions. GDB must unmask the link register in order to produce a backtrace. The following patch adds markers of [PAC] to the bracktrace, to indicate which addresses needed unmasking. This includes the backtrace when using MI. For example, consider the following backtrace: (gdb) bt 0 0x0000000000400490 in puts@plt () 1 0x00000000004005dc in foo ("hello") at cbreak-lib.c:6 2 0x0000000000400604 [PAC] in bar () at cbreak-lib.c:12 3 0x0000000000400620 [PAC] in main2 () at cbreak.c:17 4 0x00000000004005b4 in main () at cbreak-3.c:10 The functions in cbreak-lib use pointer auth, which masks the return address to the previous function, causing the addresses of bar (in the library) and main2 (in the main binary) to require unmasking in order to unwind the backtrace. An extra bool is added alongside the prev_pc in the frame structure. At the point at which the link register is unmasked, the AArch64 port calls into frame to sets the bool. This is the most efficient way of doing it. The marker is also added to the python frame printer, which is always printed if set. The marker is not explicitly exposed to the python code. I expect this will potentially cause issues with some tests in the testsuite when Armv8.3 pointer authentication is used. This should be fixed up in the the future once real hardware is available for full testsuite testing. gdb/ChangeLog: * NEWS: Expand the Pointer Authentication entry. * aarch64-tdep.c (aarch64_frame_unmask_address): Rename from this. (aarch64_frame_unmask_lr): ... to this. (aarch64_prologue_prev_register, aarch64_dwarf2_prev_register): Call aarch64_frame_unmask_lr. * frame.c (struct frame_info): Add "masked" variable. (frame_set_previous_pc_masked) (frame_get_pc_masked): New functions. (fprint_frame): Check for masked pc. * frame.h (frame_set_previous_pc_masked) (frame_get_pc_masked): New declarations. * python/py-framefilter.c (py_print_frame): Check for masked pc. * stack.c (print_frame): Check for masked pc. gdb/doc/ChangeLog: * gdb.texinfo (AArch64 Pointer Authentication): New subsection. commit fca8e23c31e6ec37bdcb5cf1d981a39d1e6fb6f6 Author: Jose E. Marchesi Date: Wed Aug 7 11:40:55 2019 +0200 ld: use a specific linker script in BPF targets This patch makes the elf64bpf emulation to use it's own linker script, based on elf.sc. At the moment, the only change is that the BPF executable doesn't define an entry symbol (BPF programs feature several entry points scattered in several sections.) This is a step towards the goal of generating proper ELF executables that would be loaded by the kernel's libbpf. We are not there yet: BPF "programs" should still be linked with -r. This change removes a warning while linking executables, decreases the number of unsupported tests in the target from 47 to 29, and increases the number of expected passes from 104 to 145. Regtested in x86_64 for all targets. No regressions. ld/ChangeLog: 2019-08-07 Jose E. Marchesi * scripttempl/elf64bpf.sc: Adapted from elf.sc. * emulparams/elf64bpf.sh (SCRIPT_NAME): Use elf64bpf. (EMBEDDED): Define. * testsuite/ld-bpf/call-1.d: Do not expect a warning regarding an undefined entry symbol. * testsuite/ld-bpf/jump-1.d: Likewise. * testsuite/ld-undefined/undefined.exp: Do not pass '-e entry' to ld in BPF targets, and do not expect line number information. * testsuite/ld-srec/srec.exp (run_srec_test): xfail s-record tests in BPF targets. commit fc8de8e227e5146336d654f2fb4f98010d7cf12d Author: Jose E. Marchesi Date: Wed Aug 7 11:33:13 2019 +0200 bfd: use the ELF linker to perform relocations in BPF targets This patch changes the eBPF linker to provide a relocate_section function instead of relying on using special functions in relocation howtos. Tested in x86_64 host. No regressions. bfd/ChangeLog: 2019-08-07 Jose E. Marchesi * elf64-bpf.c (bpf_elf_relocate_section): New function. (bpf_elf_insn_disp_reloc): Delete function. (elf_backend_relocate_section): Define. commit 97b031c5d6d42ff2b1758a8a8c332cb44ba9c06f Author: Alan Modra Date: Wed Aug 7 18:53:09 2019 +0930 PR24644, OOM-Bug in _bfd_archive_64_bit_slurp_armap PR 24644 * archive64.c (_bfd_archive_64_bit_slurp_armap): Properly check for overflow in expressions involving nsymz. commit 7cd00957a57f8d8195baf7a85ea21b879bbbaf91 Author: Omair Majid Date: Wed Aug 7 10:20:56 2019 +0100 Fix the binutils test for .NET assembly support so that it distinguishing between targets which do not support the x86 PE format at all, and those that do support it, but which do not recognise the .NET assembly variants. * testsuite/binutils-all/objdump.exp (test_objdump_dotnet_assemblies): Fix test to distinguish errors in parsing simple pei-i386 and pei-x86-64 vs parsing the newly introduced machine types. * testsuite/gentestdlls.c (write_simple_dll): New function. (main): Generate simple and Linux-specific variants of pei-i386 and pei-x86-64 files so both can be used by tests. commit bc750500af6d0a6cb602a5d00b3f71b26ce96762 Author: Jan Beulich Date: Wed Aug 7 10:46:52 2019 +0200 x86: drop stray FloatMF The flag is supposed to be used in templates which allow for both a "short" and a "long" format memory operand. Drop it from templates not matching this pattern. In the control/status word cases it was (ab)used in place of the intended IgnoreSize. commit 906799036a9bcc2b6f27fbcf894092bdc03f6da9 Author: Alan Modra Date: Wed Aug 7 11:50:28 2019 +0930 PR24876, readelf: heap-buffer-overflow in dump_ia64_unwind PR 24876 * readelf.c (dump_ia64_unwind): Check that buffer is large enough for "stamp" before reading. commit 0cf9feb996cb32939840b13073a49310b1fd71e0 Author: Tom Tromey Date: Sat Jul 13 12:13:15 2019 -0600 Introduce obstack_strndup This introduces obstack_strndup and changes gdb to use it. Note that obstack_strndup works like savestring, and not exactly like xstrndup. The difference is that obstack_strndup uses the passed-in length, while xstrndup uses strnlen to choose the length. gdb/ChangeLog 2019-08-06 Tom Tromey * stabsread.c (patch_block_stabs, read_one_struct_field) (read_enum_type): Use obstack_strndup. * rust-exp.y (rust_parser::copy_name): Use obstack_strndup. * gdb_obstack.h (obstack_strndup): Use obstack_strndup. * dwarf2read.c (guess_full_die_structure_name) (anonymous_struct_prefix): Use obstack_strndup. * dbxread.c (cp_set_block_scope): Use obstack_strndup. * c-exp.y (yylex): Use obstack_strndup. * ada-exp.y (write_object_renaming, write_ambiguous_var) (write_var_or_type): Use obstack_strndup. commit efba19b06a6f2baacb3920599f970d1333ffc358 Author: Tom Tromey Date: Sat Jul 13 12:09:51 2019 -0600 Add obstack_strdup overload taking a std::string This adds an obstack_strdup overload that takes a std::string, and changes a few spots in gdb to use it. gdb/ChangeLog 2019-08-06 Tom Tromey * symfile.c (reread_symbols): Use obstack_strdup. * stabsread.c (read_type): Use obstack_strdup. * gdb_obstack.h (obstack_strdup): New overload. * dwarf2read.c (dwarf2_compute_name, create_dwo_unit_in_dwp_v1) (create_dwo_unit_in_dwp_v2, build_error_marker_type) (dwarf2_canonicalize_name): Use obstack_strdup. * dbxread.c (read_dbx_symtab): Use obstack_strdup. * cp-support.c (inspect_type, replace_typedefs_qualified_name): Use obstack_strdup. commit f25102f7b100337923d2c81ecc12a64d428e98fe Author: Tom Tromey Date: Sat Jul 13 12:03:07 2019 -0600 Make obstack_strdup inline This changes obstack_strdup to be an inline function. This seems better to me, considering how small it is; but also it follows what the code did before the previous patch. gdb/ChangeLog 2019-08-06 Tom Tromey * gdb_obstack.h (obstack_strdup): Define. * gdb_obstack.c (obstack_strdup): Don't define. commit 021887d88a040cf39f3afbd7da10bbe3ff1ad6c3 Author: Tom Tromey Date: Sat May 18 15:56:03 2019 -0600 Use obstack_strdup more This changes gdb to use obstack_strdup when appropriate, rather than the wordier obstack_copy0. gdb/ChangeLog 2019-08-06 Tom Tromey * xcoffread.c (SYMNAME_ALLOC, process_xcoff_symbol): Use obstack_strdup. * typeprint.c (typedef_hash_table::find_global_typedef): Use obstack_strdup. * symfile.c (allocate_compunit_symtab): Use obstack_strdup. * stabsread.c (common_block_start): Use obstack_strdup. * objfiles.c (set_objfile_main_name, objfile): Use obstack_strdup. * namespace.c (add_using_directive): Use obstack_strdup. * mdebugread.c (parse_symbol, parse_type): Use obstack_strdup. * jit.c (finalize_symtab): Use obstack_strdup. * dwarf2read.c (fixup_go_packaging, dwarf2_physname) (guess_partial_die_structure_name, partial_die_info::fixup) (dwarf2_name): Use obstack_strdup. * coffread.c (coff_read_struct_type, coff_read_enum_type): Use obstack_strdup. * c-exp.y (scan_macro_expansion): Use obstack_strdup. * buildsym.c (buildsym_compunit::end_symtab_with_blockvector): Use obstack_strdup. * ada-lang.c (ada_decode_symbol): Use obstack_strdup. commit b3c6d7ff98954032a3e7989dbd1f50f041e010bb Author: GDB Administrator Date: Wed Aug 7 00:00:50 2019 +0000 Automatic date update in version.in commit d2834edcb67b9d9bd7163868fa0239948a2e57b7 Author: Philippe Waroquiers Date: Wed Jul 31 22:44:13 2019 +0200 Add a selftest that checks documentation invariants. Several approaches were discussed (mail or irc) to verify the invariants of the GDB help documentation : checking with apropos ., modifying add_cmd to do the check and output a warning, implement maintenance check-doc. A selftest was finally chosen as: * this can be run on demand, including by users if they want to check user defined commands. * it does not interact with the normal behaviour of apropos, define, python, ... (such as output warnings when a user defines a command help that does not respect the doc). * when the selftest runs, it checks the user defined and python defined commands currently defined. gdb/ChangeLog * unittests/help-doc-selftests.c: New file. * Makefile.in: Add the new file. commit 590042fc45f857c981bee4e0c76f6b3b528a224e Author: Philippe Waroquiers Date: Sun Jun 9 11:16:20 2019 +0200 Make first and last lines of 'command help documentation' consistent. With this patch, the help docs now respect 2 invariants: * The first line of a command help is terminated by a '.' character. * The last character of a command help is not a newline character. Note that the changes for the last invariant were done by Tom, as part of : [PATCH] Remove trailing newlines from help text https://sourceware.org/ml/gdb-patches/2019-06/msg00050.html but some occurrences have been re-introduced since then. Some help docs had to be rephrased/restructured to respect the above invariants. Before this patch, print_doc_line was printing the first line of a command help documentation, but stopping at the first '.' or ',' character. This was giving inconsistent results : * The first line of command helps was sometimes '.' terminated, sometimes not. * The first line of command helps was not always designed to be readable/understandable/unambiguous when stopping at the first '.' or ',' character. This e.g. created the following inconsistencies/problems: < catch exception -- Catch Ada exceptions < catch handlers -- Catch Ada exceptions < catch syscall -- Catch system calls by their names < down-silently -- Same as the `down' command while the new help is: > catch exception -- Catch Ada exceptions, when raised. > catch handlers -- Catch Ada exceptions, when handled. > catch syscall -- Catch system calls by their names, groups and/or numbers. > down-silently -- Same as the `down' command, but does not print anything. Also, the command help doc should not be terminated by a newline character, but this was not respected by all commands. The cli-option -OPT framework re-introduced some occurences. So, the -OPT build help framework was changed to not output newlines at the end of %OPTIONS% replacement. This patch changes the help documentations to ensure the 2 invariants given above. It implied to slightly rephrase or restructure some help docs. Based on the above invariants, print_doc_line (called by 'apropos' and 'help' commands to print the first line of a command help) now outputs the full first line of a command help. This all results in a lot of small changes in the produced help docs. There are less code changes than changes in the help docs, as a lot of docs are produced by some code (e.g. the remote packet usage settings). gdb/ChangeLog 2019-08-07 Philippe Waroquiers * cli/cli-decode.h (print_doc_line): Add for_value_prefix argument. * cli/cli-decode.c (print_doc_line): Likewise. It now prints the full first line, except when FOR_VALUE_PREFIX. In this case, the trailing '.' is not output, and the first character is uppercased. (print_help_for_command): Update call to print_doc_line. (print_doc_of_command): Likewise. * cli/cli-setshow.c (deprecated_show_value_hack): Likewise. * cli/cli-option.c (append_indented_doc): Do not append newline. (build_help_option): Append newline after first appended_indented_doc only if a second call is done. (build_help): Append 2 new lines before each option, except the first one. * compile/compile.c (_initialize_compile): Add new lines after %OPTIONS%, when not at the end of the help. Change help doc or code producing the help doc to respect the invariants. * maint-test-options.c (_initialize_maint_test_options): Likewise. Also removed the new line after 'Options:', as all other commands do not put an empty line between 'Options:' and the first option. * printcmd.c (_initialize_printcmd): Likewise. * stack.c (_initialize_stack): Likewise. * interps.c (interpreter_exec_cmd): Fix "Usage:" line that was incorrectly telling COMMAND is optional. * ada-lang.c (_initialize_ada_language): Change help doc or code producing the help doc to respect the invariants. * ada-tasks.c (_initialize_ada_tasks): Likewise. * breakpoint.c (_initialize_breakpoint): Likewise. * cli/cli-cmds.c (_initialize_cli_cmds): Likewise. * cli/cli-logging.c (_initialize_cli_logging): Likewise. * cli/cli-setshow.c (_initialize_cli_setshow): Likewise. * cli/cli-style.c (cli_style_option::add_setshow_commands, _initialize_cli_style): Likewise. * corelow.c (core_target_info): Likewise. * dwarf-index-cache.c (_initialize_index_cache): Likewise. * dwarf2read.c (_initialize_dwarf2_read): Likewise. * filesystem.c (_initialize_filesystem): Likewise. * frame.c (_initialize_frame): Likewise. * gnu-nat.c (add_task_commands): Likewise. * infcall.c (_initialize_infcall): Likewise. * infcmd.c (_initialize_infcmd): Likewise. * interps.c (_initialize_interpreter): Likewise. * language.c (_initialize_language): Likewise. * linux-fork.c (_initialize_linux_fork): Likewise. * maint-test-settings.c (_initialize_maint_test_settings): Likewise. * maint.c (_initialize_maint_cmds): Likewise. * memattr.c (_initialize_mem): Likewise. * printcmd.c (_initialize_printcmd): Likewise. * python/lib/gdb/function/strfns.py (_MemEq, _StrLen, _StrEq, _RegEx): Likewise. * ravenscar-thread.c (_initialize_ravenscar): Likewise. * record-btrace.c (_initialize_record_btrace): Likewise. * record-full.c (_initialize_record_full): Likewise. * record.c (_initialize_record): Likewise. * regcache-dump.c (_initialize_regcache_dump): Likewise. * regcache.c (_initialize_regcache): Likewise. * remote.c (add_packet_config_cmd, init_remote_threadtests, _initialize_remote): Likewise. * ser-tcp.c (_initialize_ser_tcp): Likewise. * serial.c (_initialize_serial): Likewise. * skip.c (_initialize_step_skip): Likewise. * source.c (_initialize_source): Likewise. * stack.c (_initialize_stack): Likewise. * symfile.c (_initialize_symfile): Likewise. * symtab.c (_initialize_symtab): Likewise. * target-descriptions.c (_initialize_target_descriptions): Likewise. * top.c (init_main): Likewise. * tracefile-tfile.c (tfile_target_info): Likewise. * tracepoint.c (_initialize_tracepoint): Likewise. * tui/tui-win.c (_initialize_tui_win): Likewise. * utils.c (add_internal_problem_command): Likewise. * valprint.c (value_print_option_defs): Likewise. gdb/testsuite/ChangeLog 2019-08-07 Philippe Waroquiers * gdb.base/style.exp: Update tests for help doc new invariants. * gdb.base/help.exp: Likewise. commit 404f29021abaef86a341663444fb069eb1f0282a Author: Frank Ch. Eigler Date: Tue Aug 6 11:23:48 2019 -0400 [PR build/24886] disable glibc mcheck support This patch drops gdb's configury support for glibc's mcheck function. It has been observed to cause false abort()s, because it is thread-unsafe yet interposes every malloc/free operation. So if any library transitively used by gdb also uses threads, then these functions can easily corrupt their own checking data. These days, gcc ASAN and valgrind provide high quality checking, and mcheck is apparently itself being slowly deprecated. So, let's stop linking to it. Attached patch drops the autoconf/Makefile machinery for both gdb and gdbserver. No testsuite-visible impact. IMHO not worth mentioning in NEWS. See also: https://sourceware.org/bugzilla/show_bug.cgi?id=9939 gdb/ChangeLog PR build/24886 * configure.ac: Drop enable-libmcheck support. * configure, config.in: Rebuild. * libmcheck.m4: Remove. * acinclude.m4: Don't include it. * Makefile.in: Don't distribute it. * top.c (print_gdb_configuration): Don't mention it. gdb/gdbserver/ChangeLog PR build/24886 * configure.ac: Drop enable-libmcheck support. * configure, config.in: Rebuild. * acinclude.m4: Don't include it. commit 046bebe1c0a367687bd693eb4594fcdcba0b8f7e Author: Tom Tromey Date: Thu Jul 18 22:07:10 2019 -0600 Add more styling to "disassemble" This adds more styling to the disassemble command. In particular, addresses and function names in the disassembly are now styled. This required fixing a small latent bug in set_output_style. This function always passed NULL to emit_style_escape; but when writing to a file other than gdb_stdout, it should emit the style escape directly. (FWIW this is another argument for better integrating the pager with ui_file and getting rid of this entire layer.) gdb/ChangeLog 2019-08-06 Tom Tromey * utils.c (set_output_style): Sometimes pass stream to emit_style_escape. * ui-out.h (class ui_out) : Declare. * record-btrace.c (btrace_insn_history): Update. * mi/mi-out.h (class mi_ui_out) : New method. * disasm.h (gdb_pretty_print_disassembler): Add uiout parameter. Update initializers. : New field. : Move lower. * disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Remove "uiout" parameter. (dump_insns): Update. * cli-out.h (class cli_ui_out) : Declare. * cli-out.c (cli_ui_out::can_emit_style_escape): New method. gdb/testsuite/ChangeLog 2019-08-06 Tom Tromey * gdb.base/style.exp: Add disassemble test. * gdb.base/style.c (some_called_function): New function. (main): Use it. commit ddbcedf5de138bc83d5d16554a3f44163dcaef7a Author: Christian Biesinger Date: Tue Aug 6 11:50:52 2019 -0500 Replace int with enum block_enum where appropriate. For better readability and type safety. gdb/ChangeLog: 2019-08-06 Christian Biesinger * symtab.c (symbol_cache_lookup): Change int to enum block_enum. (error_in_psymtab_expansion): Likewise. (lookup_symbol_via_quick_fns): Likewise. (basic_lookup_transparent_type_quick): Likewise. (basic_lookup_transparent_type_1): Likewise. commit b08b16c8391bbcd706a4aaa4b09509e7c2b8c676 Author: Tom Tromey Date: Mon Jul 22 15:20:24 2019 -0600 Clean up source file error reporting print_source_lines_base reopens the source file every time that a source line is to be printed. However, there's no need to do this so frequently -- it's enough to do it when switching source files, and otherwise rely on the cache. The code seems to try to avoid these multiple opens; at a guess I'd say something just got confused along the way. This patch fixes the problem by reorganizing the code both to make it more clear, and to ensure that reopens only occur when the "last source visited" changes. gdb/ChangeLog 2019-08-06 Tom Tromey * source.c (last_source_error): Now bool. (print_source_lines_base): Make "noprint" bool. Only open source file when last_source_visited changes. commit cb44333d99548bbbf7be06387a31877ee9322ab4 Author: Tom Tromey Date: Mon Jul 22 14:31:43 2019 -0600 Add file offsets to the source cache Currently, gdb stores the number of lines and an array of file offsets for the start of each line in struct symtab. This patch moves this information to the source cache. This has two benefits. First, it allows gdb to read a source file less frequently. Currently, a source file may be read multiple times: once when computing the file offsets, once when highlighting, and then pieces may be read again while printing source lines. With this change, the file is read once for its source text and file offsets; and then perhaps read again if it is evicted from the cache. Second, if multiple symtabs cover the same source file, then this will share the file offsets between them. I'm not sure whether this happens in practice. gdb/ChangeLog 2019-08-06 Tom Tromey * annotate.c (annotate_source_line): Use g_source_cache. * source-cache.c (source_cache::get_plain_source_lines): Change parameters. Populate m_offset_cache. (source_cache::ensure): New method. (source_cache::get_line_charpos): New method. (extract_lines): Move lower. Change parameters. (source_cache::get_source_lines): Move lower. * source-cache.h (class source_cache): Update comment. : New method. : Update comment. : Clear m_offset_cache. : Change parameters. : New method : New member. * source.c (forget_cached_source_info_for_objfile): Update. (info_source_command): Use g_source_cache. (find_source_lines, open_source_file_with_line_charpos): Remove. (print_source_lines_base, search_command_helper): Use g_source_cache. * source.h (open_source_file_with_line_charpos): Don't declare. * symtab.h (struct symtab) : Remove. * tui/tui-source.c (tui_source_window::do_scroll_vertical): Use g_source_cache. commit 872dceaaff9b54764b8f510b549497b9d904b136 Author: Tom Tromey Date: Mon Jul 22 12:41:23 2019 -0600 Save plain text in the source cache Currently the source cache will only store highlighted text. However, there's no reason it could not also store plain text, when styling is turned off. This patch makes this change. This also simplifies the source cache code somewhat. gdb/ChangeLog 2019-08-06 Tom Tromey * source-cache.c (source_cache::get_plain_source_lines): Remove "first_line" and "last_line" parameters. (source_cache::get_source_lines): Cache plain text. * source-cache.h (class source_cache) : Update. commit 269249d9406096dd59aecd8845e960fdddb1ebfe Author: Tom Tromey Date: Tue Jul 23 08:22:50 2019 -0600 Fix latent bug in source cache The source cache was not returning the final \n of the requested range of lines. This caused regressions with later patches in this series, so this patch pre-emptively fixes the bug. This adds a self-test of "extract_lines" to the source cache code. To make it simpler to test, I changed extract_lines to be a static function, and changed it's API a bit. gdb/ChangeLog 2019-08-06 Tom Tromey * source-cache.c (extract_lines): No longer a method. Changed type of parameter. Include final newline. (selftests::extract_lines_test): New function. (_initialize_source_cache): Likewise. * source-cache.h (class source_cache) : Don't declare. commit c0e8dcd87101119806c5bbca4c7b649c1b8c0996 Author: Tom Tromey Date: Tue Jul 23 12:41:02 2019 -0600 Change breakpoint::filter to be a unique_xmalloc_ptr This changes breakpoint::filter to be a unique_xmalloc_ptr, removing an explicit xfree, as well as a use of a "release" method. gdb/ChangeLog 2019-08-06 Tom Tromey * breakpoint.c (init_breakpoint_sal): Update. (breakpoint): Update. * breakpoint.h (struct breakpoint) : Now a unique_xmalloc_ptr. commit 128bf1fe608badb59d27f9c5c8ffb1a6a6d9d811 Author: Alan Modra Date: Tue Aug 6 15:40:08 2019 +0930 LTO object insertion point This is a mostly cosmetic fix for cases like PR24873 where LTO recompiled objects were supposed to be inserted inside a group. The specific case handled by this patch is when the first file inside a group is an archive, the first file claimed by the plugin. Prior to this patch we would have inserted the recompiled objects before the group, which doesn't matter really since the entire group will be reloaded, but it looks a little wrong in map files. PR 24873 * ldlang.c (find_replacements_insert_point): Return "before" flag. (find_next_input_statement): New function. (lang_process): When placing recompiled LTO objects before a claimed archive, place them immediately before in the statement list. commit b02c4f162335ed055964f603ba3aca18b0e5c5bf Author: Alan Modra Date: Tue Aug 6 15:23:28 2019 +0930 PR24873, gcc -flto objects result in --start-group .. --end-group failure to include --as-needed libraries Reloading of archives (and checking --as-needed DSOs again) is disabled until we hit the plugin insert point. It's necessary to do that because in a case like lib1.a lto.o lib2.a where lib1.a and lib2.a contain duplicate symbols, we want the lto.o recompiled object to pull in objects from lib2.a as necessary, but not from lib1.a. Unfortunately this heuristic fails when the insert point is inside a group, because ld actually loads the symbols from the recompiled object before running over the contours of the script, thus missing the fact that new undefs appeared in the group. PR 24873 * ldlang.c (plugin_undefs): New static var. (open_input_bfds ): Loop on plugin_undefs and hitting plugin_insert point. (lang_process ): Set plugin_undefs. commit b39152b3e5befec363302d5d81ade36ab45d6d08 Author: GDB Administrator Date: Tue Aug 6 00:00:18 2019 +0000 Automatic date update in version.in commit 0b27c27d0d3060171876736f05c39f9c86a65d3e Author: Christian Biesinger Date: Thu Aug 1 17:22:28 2019 -0500 Add block['var'] accessor Currently we support iteration on blocks; this patch extends that to make subscript access work as well. gdb/ChangeLog: 2019-08-05 Christian Biesinger * NEWS: Mention dictionary access on blocks. * python/py-block.c (blpy_getitem): New function. (block_object_as_mapping): New struct. (block_object_type): Use new struct for tp_as_mapping field. gdb/doc/ChangeLog: 2019-08-05 Christian Biesinger * python.texi (Blocks In Python): Document dictionary access on blocks. gdb/testsuite/ChangeLog: 2019-08-05 Christian Biesinger * gdb.python/py-block.exp: Test dictionary access on blocks. commit 4ee94178afbe062bc244d28595f86d63633a7af7 Author: Christian Biesinger Date: Wed Jul 31 17:10:50 2019 -0500 Add a comment briefly explaining partial symbols Based on an explanation by tromey on IRC. gdb/ChangeLog: 2019-08-05 Christian Biesinger * objfiles.h (objfile): Add a comment describing partial symbols. commit 276cbbdf990f3f09acacdf3d9603b054ac7d29da Author: Nick Clifton Date: Mon Aug 5 16:15:14 2019 +0100 Fix objcopy's note merging capabilities so that they no longer insist on the first note being a version note. PR 24874 * objcopy.c (merge_gnu_build_notes): Do not insist on the first note being a version note. commit 580f1034d10934b757703110db068397c0c1e7bb Author: Simon Marchi Date: Mon Aug 5 10:21:22 2019 -0400 Increase timeout in gdb.mi/list-thread-groups-available.exp Running make check-read1 TESTS="gdb.mi/list-thread-groups-available.exp" on my machine results in timeout failures. Running it while having `tail -F testsuite/gdb.log` on the side shows that the test is never really blocked, it is just slow at consuming the large output generated by `-list-thread-groups --available` (which lists all the processes on the system). If I increase the timeout to a large value, the test passes in ~30 seconds (compared to under 1 second normally). Increase the timeout for the particular mi_gdb_test that is long to execute under read1. The new timeout value is a bit arbitrary. The default timeout is 10 seconds, so I set the new timeout to be "old-timeout * 10", so 100 seconds in the typical case. gdb/testsuite/ChangeLog: PR gdb/24863 * gdb.mi/list-thread-groups-available.exp: Increase timeout for -list-thread-groups --available test when running under check-read1. commit d86bd7cba1965c621b63792179febcf9eeb273ad Author: Tom de Vries Date: Mon Aug 5 15:41:04 2019 +0200 [gdb/testsuite] Run read1 timeout tests with with_read1_timeout_factor When running tests with check-read1, we run into some timeouts where the tests are not easy to rewrite using gdb_test_sequence: ... FAIL: gdb.base/help.exp: help data (timeout) FAIL: gdb.base/help.exp: help files (timeout) FAIL: gdb.base/help.exp: help internals (timeout) FAIL: gdb.base/help.exp: help user-defined (timeout) FAIL: gdb.base/help.exp: help breakpoint "b" abbreviation (timeout) FAIL: gdb.base/help.exp: help breakpoint "br" abbreviation (timeout) FAIL: gdb.base/help.exp: help breakpoint "bre" abbreviation (timeout) FAIL: gdb.base/info-macros.exp: info macros 2 (timeout) FAIL: gdb.base/info-macros.exp: next (timeout) FAIL: gdb.base/info-macros.exp: info macros 3 (timeout) FAIL: gdb.base/info-macros.exp: next (timeout) FAIL: gdb.base/info-macros.exp: next (timeout) FAIL: gdb.base/info-macros.exp: info macros (timeout) FAIL: gdb.base/info-macros.exp: next (timeout) FAIL: gdb.base/info-macros.exp: next (timeout) FAIL: gdb.base/info-macros.exp: info macros 7 (timeout) FAIL: gdb.cp/nested-types.exp: ptype S10 (limit = -1) // parse failed (timeout) FAIL: gdb.cp/nested-types.exp: set print type nested-type-limit 1 (timeout) ... Fix these by increasing the timeout by a factor 10. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-05 Tom de Vries PR testsuite/24863 * lib/gdb.exp (with_read1_timeout_factor): New proc. * gdb.base/help.exp: Use with_read1_timeout_factor. * gdb.base/info-macros.exp: Same. * gdb.cp/nested-types.exp: Same. commit 8abfcabcb49fcd8b95854a5b59e7928e3c6000ff Author: Tom Tromey Date: Fri Aug 2 08:12:31 2019 -0600 Use _() in calls to build_help Currently some code in gdb uses build_help with N_(), like: static const std::string compile_print_help = gdb::option::build_help (N_("\ I believe this is incorrect. The N_ macro is used to mark text that should end up in the message catalog, but which will be translated by a later call to gettext. However, in this case, there is no later call to gettext, so (if gdb had translations), this text would remain untranslated. Instead, I think using the ordinary _() macro is correct here. Translators will have to know to preserve "%OPTIONS%" in the text -- but that seems both unavoidable and fine. Tested by rebuilding as there's not much else to do. gdb/ChangeLog 2019-08-05 Tom Tromey * compile/compile.c (_initialize_compile): Use _(), not N_(). * thread.c (_initialize_thread): Use _(), not N_(). * stack.c (_initialize_stack): Use _(), not N_(). * printcmd.c (_initialize_printcmd): Use _(), not N_(). commit 23d188c74e7481bb0af3c42b84fc9cb0c94267e5 Author: Barnaby Wilks Date: Mon Aug 5 12:43:38 2019 +0100 Removes support in the ARM assembler for the unsigned variants of the VQ(R)DMLAH and VQ(R)DMLASH MVE instructions. Previously GAS would accept .u32, .u16 and .u8 suffixes to the VQ(R)DMLAH and VQ(R)DMLASH instructions, however the Armv8.1-M Mainline specification states that these functions only have signed variations (.s32, .s16 and .s8 suffixes). This is documented here: https://static.docs.arm.com/ddi0553/bh/DDI0553B_h_armv8m_arm.pdf?_ga=2.143079093.1892401233.1563295591-999473562.1560847439#page=1183 gas * config/tc-arm.c (do_mve_vqdmlah): Use N_S_32 macro. (do_neon_qrdmlah): Use N_S_32 macro. * testsuite/gas/arm/mve-vqdmlah-bad.d: New test. * testsuite/gas/arm/mve-vqdmlah-bad.l: New test. * testsuite/gas/arm/mve-vqdmlah-bad.s: New test. * testsuite/gas/arm/mve-vqdmlah.d: Remove unsigned instruction tests. * testsuite/gas/arm/mve-vqdmlah.s: Remove unsigned instruction tests. * testsuite/gas/arm/mve-vqdmlash-bad.d: New test. * testsuite/gas/arm/mve-vqdmlash-bad.l: New test. * testsuite/gas/arm/mve-vqdmlash-bad.s: New test. * testsuite/gas/arm/mve-vqdmlash.d: Remove unsigned instruction tests. * testsuite/gas/arm/mve-vqdmlash.s: Remove unsigned instruction tests. opcodes * arm-dis.c: Only accept signed variants of VQ(R)DMLAH and VQ(R)DMLASH instructions. commit a80cf5d88e028fa6a72b37fe50795e70bb6e3559 Author: Tom de Vries Date: Mon Aug 5 12:51:58 2019 +0200 [gdb/testsuite] Fail in gdb_compile if pie results in non-PIE executable When running gdb.base/break-idempotent.exp with --target_board=unix/-fno-PIE/-no-pie, we get: ... nr of expected passes 140 ... The test-case is compiled once with nopie and once with pie, but in both cases we end up with a non-PIE executable. The "-fno-PIE -no-pie" options specified using the target_board are interpreted by dejagnu as multilib_flags, and end up overriding the pie flags. Fix this by checking in gdb_compile if the resulting exec is non-PIE despite of a pie setting, and if so return an error: ... Running gdb/testsuite/gdb.base/break-idempotent.exp ... gdb compile failed, pie failed to generate PIE executable === gdb Summary === nr of expected passes 70 nr of untested testcases 1 ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-05 Tom de Vries * lib/gdb.exp (version_at_least): Factor out of ... (tcl_version_at_least): ... here. (gdb_compile): Fail if pie results in non-PIE executable. (readelf_version, readelf_prints_pie): New proc. (exec_is_pie): Return -1 if unknown. commit d09628385443574b556f2beaaba7588a2a5fb4c0 Author: Tom de Vries Date: Mon Aug 5 12:51:58 2019 +0200 [gdb/testsuite] Fix typo in tcl_version_at_least In tcl_version_at_least we compare a minor against a major version number: ... } elseif { $tcl_version_major == $major \ && $tcl_version_major >= $minor } { ... Fix this by using $tcl_version_minor in the comparison instead. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-05 Tom de Vries * lib/gdb.exp (tcl_version_at_least): Fix typo. commit e17869db99195849826eaaf5d2d0eb2cfdd7a2a7 Author: Nick Clifton Date: Mon Aug 5 10:40:35 2019 +0100 Catch potential integer overflow in readelf when processing corrupt binaries. PR 24829 * readelf.c (apply_relocations): Catch potential integer overflow whilst checking reloc location against section size. commit 2b79f3761c834cd217407f75f867f6a761703ab3 Author: Simon Marchi Date: Sun Aug 4 22:44:05 2019 -0400 Remove some variables in favor of using gdb::optional While reading that code, I noticed that some variables essentially meant whether to consider some other variable or not. I think using gdb::optional (which was not available when this code was written) is clearer, as it embeds the used/not used predicate directly in the type of the variable, making it harder to miss. gdb/ChangeLog: * dwarf2read.c (struct dw2_symtab_iterator): : Remove. : Change type to gdb::optional. (dw2_symtab_iter_init): Remove WANT_SPECIFIC_BLOCK parameter, change type of BLOCK_INDEX parameter to gdb::optional. (dw2_symtab_iter_next): Re-write in function of gdb::optional. (dw2_lookup_symbol): Don't pass argument for WANT_SPECIFIC_BLOCK. (dw2_expand_symtabs_for_function): Don't pass argument for WANT_SPECIFIC_BLOCK, pass empty optional for BLOCK_INDEX. (class dw2_debug_names_iterator) : Remove WANT_SPECIFIC_BLOCK parameter, change BLOCK_INDEX type to gdb::optional. : Remove. : Change type to gdb::optional. (dw2_debug_names_iterator::next): Change type of IS_STATIC to gdb::optional. Re-write in function of gdb::optional. (dw2_debug_names_lookup_symbol): Don't pass argument for WANT_SPECIFIC_BLOCK. (dw2_debug_names_expand_symtabs_for_function): Don't pass argument for WANT_SPECIFIC_BLOCK, pass empty optional for BLOCK_INDEX. commit 188a63736c70060180382e36364a23dcebe3c29c Author: GDB Administrator Date: Mon Aug 5 00:00:29 2019 +0000 Automatic date update in version.in commit 2252ff3d9045b54bf3a2b54c7ba33320ccab9bc7 Author: Sandra Loosemore Date: Sun Aug 4 14:34:31 2019 -0700 Skip GDB test reconnect-ctrl-c.exp if nointerrupts is set. 2019-08-04 Sandra Loosemore gdb/testsuite/ * gdb.server/reconnect-ctrl-c.exp: Skip if nointerrupts. commit 26655f53069a2f8a8ccbc6b60537149383d28be1 Author: Sandra Loosemore Date: Sun Aug 4 14:26:39 2019 -0700 Add check for readline support to more GDB tab-completion tests. 2019-08-04 Sandra Loosemore gdb/testsuite/ * lib/completion-support.exp (test_gdb_complete_none): Skip tab completion tests if no readline support. (test_gdb_complete_unique_re): Likewise. (test_gdb_complete_multiple): Likewise. commit 0b3303472d5fd742198f04dbf4322098be6c158c Author: GDB Administrator Date: Sun Aug 4 00:01:03 2019 +0000 Automatic date update in version.in commit ae60f04e08bf48f65d9101a6ab63f3806e6fca5e Author: Philippe Waroquiers Date: Sat Aug 3 21:20:44 2019 +0200 NEWS and documentation for info sources [-dirname | -basename] [--] [REGEXP]. gdb/ChangeLog 2019-08-03 Philippe Waroquiers * NEWS: Mention changes to "info sources" command. gdb/doc/ChangeLog 2019-08-03 Philippe Waroquiers * gdb.texinfo (Symbols): Document new args -dirname and -basename of "info sources" command. commit db4dc13eebbd73cddfe3abb6c001982c7bdbba3f Author: Philippe Waroquiers Date: Sun Mar 31 20:12:22 2019 +0200 New test for 'info sources [-dirname | -basename] [--] [REGEXP]'. This patch introduces a test for the 'info sources' command and its new arguments [-dirname | -basename] [--] [REGEXP]. gdb/testsuite/ChangeLog 2019-08-03 Philippe Waroquiers * gdb.base/info_sources.exp: New file. * gdb.base/info_sources.c: New file. * gdb.base/info_sources_base.c: New file. commit 28cd9371e84144df3b9b8903770f71d39824f8f8 Author: Philippe Waroquiers Date: Sun Mar 31 20:06:39 2019 +0200 New "info sources" args [-dirname | -basename] [--] [REGEXP] gdb/ChangeLog 2019-08-03 Philippe Waroquiers * symtab.c (filename_partial_match_opts): New struct type. (struct output_source_filename_data): New members regexp, c_regexp, partial_match. (output_source_filename): Use new members to decide to print file. (info_sources_option_defs): New variable. (make_info_sources_options_def_group, print_info_sources_header, info_sources_command_completer): New functions. (info_sources_command): Read new optional arguments. (_initialize_symtab): Update info sources help. commit 6d6231ed5822782b76a2aad268cc4891e4f91dfc Author: GDB Administrator Date: Sat Aug 3 00:00:16 2019 +0000 Automatic date update in version.in commit ca683e3a86d081fcf43685bee840086bd4c07443 Author: Alexandre Oliva Date: Fri Aug 2 15:40:32 2019 -0300 support Ada EH ABI v1 A new pair of hooks used by Ada exception handlers, for correct release of reraised exception occurrences, involves the introduction of new v1 symbols that GDB should use when available. The older, v0 ABI remains available in newer runtimes for bootstrapping purposes only. for gdb/ChangeLog * ada-lang.c (exception_support_info_v0): Renamed from... (default_exception_support_info): ... this. Create new definition for v1. (ada_has_this_exception_support): Look up catch_handlers_sym. (ada_exception_support_info_sniffer): Try v0 after default. commit 89c52ae3a20e8d84a250095781c1e022af542b3f Author: Alan Modra Date: Thu Aug 1 11:50:55 2019 +0930 [GOLD] PowerPC64 pc-relative TLS support Gold version of git commit c213164ad2. elfcpp/ * powerpc.h (R_PPC64_TPREL34, R_PPC64_DTPREL34), (R_PPC64_GOT_TLSGD34, R_PPC64_GOT_TLSLD34), (R_PPC64_GOT_TPREL34, R_PPC64_GOT_DTPREL34): Define. gold/ * powerpc.cc (Target_powerpc::Scan::get_reference_flags): Set flags for new relocations, and some missing older relocs. (Target_powerpc::Scan::local): Handle new pcrel tls relocs. Call set_has_static_tls for tprel relocs. (Target_powerpc::Scan::global): Likewise. (Target_powerpc::Relocate::relocate): Handle new pcrel tls relocs. commit 6a010cf67a96adcaf80c74f926df6b42ce13e7df Author: Alan Modra Date: Thu Aug 1 17:43:29 2019 +0930 [GOLD] PowerPC relocation signed overflow check Relocations with right shifts were calculating wrong overflow status. Since the addr34 split-field reloc is implemented as an 18-bit high part with value shifted right by 16 and a 16-bit low part, most of the pc-relative relocs were affected. * powerpc.cc (Powerpc_relocate_functions::rela, rela_ua): Perform signed right shift for signed overflow check. commit 97c0a07968a7c64e1de96abff8937d089f09b3e7 Author: Alan Modra Date: Fri Aug 2 12:35:39 2019 +0930 PR24871, readelf segv in dump_ia64_unwind PR 24871 * readelf.c (ABSADDR): Delete. (dump_ia64_unwind): Expand ABSADDR. Check validity of info.section. commit 1b611b2dc3075d20372557021f95ec326cdf8aa5 Author: Alan Modra Date: Fri Aug 2 12:34:55 2019 +0930 PowerPC tlsie test fix * testsuite/ld-powerpc/tlsie.s: Correct medium model ELF sequence. commit 371367a95037cac795af5cdc589a2aa0c7a4dcd3 Author: GDB Administrator Date: Fri Aug 2 00:00:28 2019 +0000 Automatic date update in version.in commit 0f52d45acd6c54aa47082778ffcbafddd423a5b4 Author: Jim Wilson Date: Thu Aug 1 16:40:15 2019 -0700 RISC-V: Fix lui relax failure with relro. bfd/ChangeLog Ilia Diachkov * elfnn-riscv.c (_bfd_riscv_relax_lui): Set lui relax safety area to two pages in relro presence. commit 0eba165a74cdb039a5e6ed86e0396d80f68ca22c Author: Pedro Franco de Carvalho Date: Thu Aug 1 16:51:44 2019 -0300 Remove directory names from gdb.base/batch-exit-status.exp Adjust gdb.base/batch-exit-status.exp so that test prefixes don't show directory names for the source scripts passed with -x, to make test results from different build directories comparable. gdb/testsuite/ChangeLog: 2019-08-01 Pedro Franco de Carvalho * gdb.base/batch-exit-status.exp: Call test_exit_status with prefix argument. (test_exit_status): Add prefix argument. commit e0d0c518daa5e10a417d16ad8158e97016562342 Author: Max Filippov Date: Mon Apr 22 12:35:13 2019 -0800 xtensa: bfd: add special case to loop alignment check check_loop_aligned is used during link time relaxation to only allow transformations that don't violate loop body alignment requirements. Assembler can relax loops that have too long body by adding instructions between the loop instruction and the loop body. check_loop_aligned must check alignment of the first instruction of the actual loop body. Detect loop / rsr.lend / wsr.lbeg sequence used in assembly time relaxation and adjust alignment check when it's detected. bfd/ 2019-08-01 Max Filippov * elf32-xtensa.c (insn_num_slots, get_rsr_lend_opcode) (get_wsr_lbeg_opcode): New functions. (check_loop_aligned): Detect relaxed loops and adjust loop_len and insn_len for the first actual instruction of the loop. commit f126416240a3ae1be69792361bca8bcbb84e62e8 Author: Tom Tromey Date: Wed Jul 31 11:50:23 2019 -0600 Fix the ia64 libunwind build This fixes the ia64 libunwind build. gdb/ChangeLog 2019-08-01 Tom Tromey * ia64-libunwind-tdep.h (struct libunwind_descr): Include gdbarch.h. commit 0a7b24850e0cba956bd836ecb1f60959cbf75087 Author: Christian Biesinger Date: Thu Aug 1 11:49:41 2019 -0500 Include s12z-opc.h using ../opcodes. This file exists in binutils-gdb/opcodes, and nothing in Makefile.in adds this to the include path. Default builds work because in-tree readline adds binutils-gdb/ to the include path (!). However, this is broken when compiling with system readline. Other files already use this way to include files in opcodes: ./gdb/lm32-tdep.c:#include "../opcodes/lm32-desc.h" ./gdb/or1k-tdep.h:#include "../opcodes/or1k-desc.h" ./gdb/mep-tdep.c:#include "../opcodes/mep-desc.h" etc. gdb/ChangeLog: 2019-08-01 Christian Biesinger * s12z-tdep.c: Fix include path for s12z-opc.h. commit c6bdbeb7c468489da9468445057d245929c3d91c Author: Alan Hayward Date: Thu Aug 1 16:51:15 2019 +0100 Require GNU make 3.82 Gdbserver has failed to build with GNU make 3.81 since commit 08f10e02be. Update the NEWS file to state that versions earlier than 3.82 are not supported. 3.82 was released in 2010, 3.81 was released 2006. A quick investigation of the default GNU make version provided across various distros found the earliest provided version to be 3.82: *RHEL 7, Centos 6 - make 3.82 *Fedora 27 - make 4.2.1 *OpenSuse 42.2, SLES11 - make 4.2.1 *Ubuntu 16.04/18.04 - make 4.1 *Debian Jessie - make 4.0 Note that Glibc requires at least 4.0, whereas GCC still allows 3.81. gdb/ChangeLog: * NEWS: Require GNU make 3.82. commit 59bd512b9c54c6fa2bd951cd10a1ca1e6ffb3dcf Author: Tom de Vries Date: Thu Aug 1 10:48:11 2019 +0200 [gdb/testsuite] Fix gdb.threads/fork-plus-threads.exp timeout with check-run1 With gdb.threads/fork-plus-threads.exp and check-run1 we get: ... FAIL: gdb.threads/fork-plus-threads.exp: detach-on-fork=off: \ inferior 1 exited (timeout) ... Fix this by calling exp_continue for new thread and thread exited messages. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-01 Tom de Vries PR testsuite/24863 * gdb.threads/fork-plus-threads.exp: Fix check-run1 timeout by calling exp_continue for new thread and thread exited messages. commit 2a3ad588e0758bc2c753dfa216c344036e5a22bc Author: Tom de Vries Date: Thu Aug 1 10:48:11 2019 +0200 [gdb/testsuite] Fix gdb.base/structs.exp timeout with check-read1 With gdb.base/structs.exp and check-read1 we get: ... FAIL: gdb.base/structs.exp: p chartest (timeout) ... Fix this by using gdb_test_sequence. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-01 Tom de Vries PR testsuite/24863 * gdb.base/structs.exp: Fix check-read1 timeout using gdb_test_sequence. * lib/gdb.exp (tcl_version_at_least, lrepeat): New proc. commit 117eb594228cf5447e49475e4fb33480c1f717a7 Author: Tom de Vries Date: Thu Aug 1 10:48:11 2019 +0200 [gdb/testsuite] Fix gdb.base/break-interp.exp timeout with check-read1 With gdb.base/break-interp.exp and check-read1, we run get: ... FAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: \ BINprelinkNOdebugNOpieNO: symbol-less: info files (timeout) FAIL: gdb.base/break-interp.exp: LDprelinkNOdebugNO: \ BINprelinkNOdebugNOpieYES: symbol-less: info files (timeout) FAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: \ BINprelinkNOdebugNOpieNO: symbol-less: info files (timeout) FAIL: gdb.base/break-interp.exp: LDprelinkNOdebugIN: \ BINprelinkNOdebugNOpieYES: symbol-less: info files (timeout) ... Fix this by calling exp_continue after each "info files" line. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-01 Tom de Vries PR testsuite/24863 * gdb.base/break-interp.exp: Use exp_continue after each "info files" line. commit ed5913402bd4d50e342d4350ee5e4662d98a3947 Author: Tom de Vries Date: Thu Aug 1 10:48:11 2019 +0200 [gdb/testsuite] Fix gdb.base/signals.exp timeout with check-read1 With gdb.base/signals.exp and check-read1 we get: ... FAIL: gdb.base/signals.exp: info signals (timeout) ... Fix this by using gdb_test_sequence. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-08-01 Tom de Vries PR testsuite/24863 * gdb.base/signals.exp: Fix check-read1 timeout using gdb_test_sequence. commit 776ab89fe3cdce91cd644058c9fcda0c506f995b Author: Alan Modra Date: Wed Jul 31 23:10:40 2019 +0930 PR24806, Linking with -T inside --start-group/--end-group This patch processes INSERT AFTER and INSERT BEFORE in a user -T script when such a script is invoked on the command line inside --start-group/--end-group. Also, ld now warns when the user simply forgot --end-group. PR 24806 * ldlang.c (process_insert_statements): Add start of list parameter. Use rather than lang_os_list.head. Process insert statements inside group statements with a recursive call. (lang_process): Adjust process_insert_statements call. * lexsup.c (parse_args): Warn when adding missing --end-group. commit 5c1e6d53a518442741f05175dbded0d1880f4759 Author: Alan Modra Date: Wed Jul 31 16:45:14 2019 +0930 Rename lang_output_section_statement to lang_os_list The idea is to make it a little easier to find uses of this list, so searches don't hit occurrences of lang_output_section_statement_type and lang_output_section_statement_enum. * ldlang.h (lang_os_list): Rename from lang_output_section_statement. * ldlang.c: Likewise throughout file. * emultempl/alphaelf.em: Likewise. * emultempl/elf32.em: Likewise. * emultempl/mmo.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/pep.em: Likewise. * emultempl/ppc32elf.em: Likewise. * emultempl/spuelf.em: Likewise. commit 52b5a0c663ba7cb4f1488a7e96addc303fc6e021 Author: GDB Administrator Date: Thu Aug 1 00:00:29 2019 +0000 Automatic date update in version.in commit 0630887d4ee35ab2236d6e2f3be3a86e6d881387 Author: GDB Administrator Date: Wed Jul 31 00:00:21 2019 +0000 Automatic date update in version.in commit a2bd7b82ee2847d0b9bc6994b7248306de3a618f Author: Tom Tromey Date: Sat Jul 6 08:31:57 2019 -0600 Don't declare tui_copy_win or tui_box_win tui_copy_win and tui_box_win are not implemented, so don't declare them. gdb/ChangeLog 2019-07-16 Tom Tromey * tui/tui-wingeneral.h (tui_copy_win, tui_box_win): Don't declare. commit c0d6f62fcec939ab896e4839f6aa14ebfcd43565 Author: Jim Wilson Date: Tue Jul 30 14:42:16 2019 -0700 RISC-V: Fix minor issues with FP csr instructions. Mel Chen gas/ * testsuite/gas/riscv/alias-csr.s: Add testcase for CSR-access alias instructions. * testsuite/gas/riscv/no-aliases-csr.d: Run testcase alias-csr.s with -Mno-aliases. * testsuite/gas/riscv/alias-csr.d: Run testcase alias-csr.s. * testsuite/gas/riscv/priv-reg.d: Update. opcodes/ * riscv-opc.c (riscv_opcodes): Set frsr, fssr, frcsr, fscsr, frrm, fsrm, fsrmi, frflags, fsflags, fsflagsi to alias instructions. * riscv-opc.c (riscv_opcodes): Adjust order of frsr, frcsr, fssr, fscsr. commit aa3b653351504e262fb455af5efb6eea6d981597 Author: Tom Tromey Date: Thu Jun 6 11:20:51 2019 -0600 Allow nested function displays In Ada, it's possible to have nested functions. However, block.c:contained_in does not recognize this. Normally, this is no problem, but if gdb is stopped inside a nested function, then you can end up in the unexpected situation that "print" of an expression will work, whereas "display" of the same expression will not -- because contained_in returns 0. This patch simply removes the BLOCK_FUNCTION check from contained_in. The rationale here is that in languages without nested functions, this will not cause any issues. gdb/ChangeLog 2019-07-30 Tom Tromey * block.c (contained_in): Remove BLOCK_FUNCTION check. gdb/testsuite/ChangeLog 2019-07-30 Tom Tromey * gdb.ada/display_nested.exp: New file. * gdb.ada/display_nested/foo.adb: New file. * gdb.ada/display_nested/pack.adb: New file. * gdb.ada/display_nested/pack.ads: New file. commit a1530dc7319595b5980e8501092782724c946351 Author: Kevin Buettner Date: Sun Jun 2 18:12:28 2019 -0700 Allow display of negative offsets in print_address_symbolic() When examining addresses associated with blocks with non-contiguous address ranges, it's not uncommon to see large positive offsets which, for some address width, actually represent a smaller negative offset. Here's an example taken from the test case (using the dw2-ranges-func-lo-cold executable): (gdb) x/5i foo_cold 0x40110d : push %rbp 0x40110e : mov %rsp,%rbp 0x401111 : callq 0x401106 0x401116 : nop 0x401117 : pop %rbp This commit, in conjuction with an earlier patch from this series, causes cases like the above to be displayed like this (below) instead: (gdb) x/5i foo_cold 0x40110d : push %rbp 0x40110e : mov %rsp,%rbp 0x401111 : callq 0x401106 0x401116 : nop 0x401117 : pop %rbp Note that the address of foo_cold is now (due to another patch) being displayed as instead of . The subsequent lines are shown as negative offsets from foo. Disassembly using the "disassemble" command is somewhat affected by these changes: Before: (gdb) disassemble foo_cold Dump of assembler code for function foo: Address range 0x401120 to 0x40113b: 0x0000000000401120 <+0>: push %rbp 0x0000000000401121 <+1>: mov %rsp,%rbp 0x0000000000401124 <+4>: callq 0x401119 0x0000000000401129 <+9>: mov 0x2ef1(%rip),%eax # 0x404020 0x000000000040112f <+15>: test %eax,%eax 0x0000000000401131 <+17>: je 0x401138 0x0000000000401133 <+19>: callq 0x40110d 0x0000000000401138 <+24>: nop 0x0000000000401139 <+25>: pop %rbp 0x000000000040113a <+26>: retq Address range 0x40110d to 0x401119: 0x000000000040110d <+-19>: push %rbp 0x000000000040110e <+-18>: mov %rsp,%rbp 0x0000000000401111 <+-15>: callq 0x401106 0x0000000000401116 <+-10>: nop 0x0000000000401117 <+-9>: pop %rbp 0x0000000000401118 <+-8>: retq End of assembler dump. After: (gdb) disassemble foo_cold Dump of assembler code for function foo: Address range 0x401120 to 0x40113b: 0x0000000000401120 <+0>: push %rbp 0x0000000000401121 <+1>: mov %rsp,%rbp 0x0000000000401124 <+4>: callq 0x401119 0x0000000000401129 <+9>: mov 0x2ef1(%rip),%eax # 0x404020 0x000000000040112f <+15>: test %eax,%eax 0x0000000000401131 <+17>: je 0x401138 0x0000000000401133 <+19>: callq 0x40110d 0x0000000000401138 <+24>: nop 0x0000000000401139 <+25>: pop %rbp 0x000000000040113a <+26>: retq Address range 0x40110d to 0x401119: 0x000000000040110d <-19>: push %rbp 0x000000000040110e <-18>: mov %rsp,%rbp 0x0000000000401111 <-15>: callq 0x401106 0x0000000000401116 <-10>: nop 0x0000000000401117 <-9>: pop %rbp 0x0000000000401118 <-8>: retq End of assembler dump. Note that negative offsets are now displayed without the leading "+". Also, the callq to foo_cold is now displayed as such instead of a callq to foo with a large positive offset. gdb/ChangeLog: * printcmd.c (print_address_symbolic): Print negative offsets. (build_address_symbolic): Force signed arithmetic when computing offset. commit 2906593ffecef89f8d64e0f1ca21494be71d0ebd Author: Christian Biesinger Date: Tue Jul 30 11:04:37 2019 -0500 [PR/24474] Add gdb.lookup_static_symbol to the python API Similar to lookup_global_symbol, except that it checks the STATIC_SCOPE. gdb/ChangeLog: 2019-07-30 Christian Biesinger PR/24474: Add a function to lookup static variables. * NEWS: Mention this new function. * python/py-symbol.c (gdbpy_lookup_static_symbol): New function. * python/python-internal.h (gdbpy_lookup_static_symbol): New function. * python/python.c (python_GdbMethods): Add new function. gdb/doc/ChangeLog: 2019-07-30 Christian Biesinger * python.texi (Symbols In Python): Document new function gdb.lookup_static_symbol. gdb/testsuite/ChangeLog: 2019-07-30 Christian Biesinger * gdb.python/py-symbol.c: Add a static variable and one in an anonymous namespace. * gdb.python/py-symbol.exp: Test gdb.lookup_static_symbol. commit 5c4dde850c0d4874d3bbe6dd1989bf0f7a5ed1c3 Author: Christian Biesinger Date: Tue Jul 30 10:32:01 2019 -0500 Add missing changelog entry I forgot to commit the change before pushing commit 25ec8924842a215e7f684d3a5076607409ac822f commit 0f575925b6ff89def089e6b6ba810ee547d3978d Author: Tom de Vries Date: Tue Jul 30 16:15:46 2019 +0200 [gdb/testsuite] Work around tcl bug in libsegfault.exp with check-read1 When running libsegfault.exp with check-read1, I get: ... Running gdb/testsuite/gdb.base/libsegfault.exp ... ERROR: tcl error sourcing gdb/testsuite/gdb.base/libsegfault.exp. ERROR: no such variable (read trace on "env(LD_PRELOAD)") invoked from within "set env(LD_PRELOAD)" ("uplevel" body line 1) invoked from within "uplevel 1 [list set $var]" invoked from within "if [uplevel 1 [list array exists $var]] { set saved_arrays($var) [uplevel 1 [list array get $var]] } else { set saved_scalars($var) [uplevel ..." invoked from within "if [uplevel 1 [list info exists $var]] { if [uplevel 1 [list array exists $var]] { set saved_arrays($var) [uplevel 1 [list array get $var]] ..." (procedure "save_vars" line 11) invoked from within "save_vars { env(LD_PRELOAD) } { if { ![info exists env(LD_PRELOAD) ] || $env(LD_PRELOAD) == "" } { set env(LD_PRELOAD) "$lib" } else { ..." (procedure "gdb_spawn_with_ld_preload" line 4) invoked from within "gdb_spawn_with_ld_preload $libsegfault """ ... There are several things here interacting with environment variable LD_PRELOAD: - the expect "binary" build/gdb/testsuite/expect-read1 with does export LD_PRELOAD=build/gdb/testsuite/read1.so before calling native expect - read1.so which does unsetenv ("LD_PRELOAD") upon first call to read - the test-case, which wants to set or append libSegFault.so to LD_PRELOAD The error occurs when accessing $env(LD_PRELOAD), in a branch where "info exists env(LD_PRELOAD)" returns true. AFAIU, this is https://core.tcl-lang.org/tcl/tktview?name=67fd4f973a "incorrect results of 'info exists' when unset env var in one interp and check for existence from another interp". Work around the tcl bug by not unsetting the variable, but setting it to "" instead: ... - unsetenv ("LD_PRELOAD"); + setenv ("LD_PRELOAD", "", 1); ... Verified that reverting commit de28a3b72e "[gdb/testsuite, 2/2] Fix gdb.linespec/explicit.exp with check-read1" reintroduced the check-read1 failure in gdb.linespec/explicit.exp. This fixes a similar error in attach-slow-waitpid.exp, which also sets LD_PRELOAD. Tested on x86_64-linux with check-read1. gdb/testsuite/ChangeLog: 2019-07-30 Tom de Vries * lib/read1.c (read): Don't use unsetenv (v), use setenv (v, "", 1) instead. commit b13057d9ceaa4944dc2d0ebf5df750d9350d0727 Author: Tom de Vries Date: Tue Jul 30 09:42:07 2019 +0200 [gdb/testsuite] Fail in gdb_compile if nopie results in PIE executable When running gdb.base/dump.exp with --target_board=unix/-fPIE/-pie, we get: ... Running gdb/testsuite/gdb.base/dump.exp ... FAIL: gdb.base/dump.exp: dump array as value, intel hex ... The FAIL happens because although the test specifies nopie, the exec is in fact compiled as PIE. The "-fPIE -pie" options specified using the target_board are interpreted by dejagnu as multilib_flags, and end up overriding the nopie flags. Fix this by checking in gdb_compile if the resulting exec is PIE despite of a nopie setting, and if so return an error: ... Running gdb/testsuite/gdb.base/dump.exp ... gdb compile failed, nopie failed to prevent PIE executable === gdb Summary === nr of untested testcases 1 ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-30 Tom de Vries PR testsuite/24834 * lib/gdb.exp (gdb_compile): Fail if nopie results in PIE executable. (exec_is_pie): New proc. commit 34d5c40a07be4bc195d5ed9aecf4eb2faa1482bc Author: Alan Modra Date: Tue Jul 30 13:14:36 2019 +0930 Re: Support .gnu.lto_.lto section in ELF files PR 24768 * bfd.c (struct bfd): Add lto_slim_object flag. * bfd-in2.h: Regenerate. commit 25ec8924842a215e7f684d3a5076607409ac822f Author: Christian Biesinger Date: Mon Jul 29 21:00:21 2019 -0500 Fix misspelling (nonexistant -> nonexistent) gdb/testsuite/ChangeLog: 2019-07-29 Christian Biesinger * gdb.python/py-objfile.exp: Fix misspelling (nonexistant -> nonexistent) commit c620ed8866cc90ccfa363daf98ce7061d076d598 Author: Christian Biesinger Date: Tue Jun 25 15:45:41 2019 -0500 Add Objfile.lookup_{global,static}_symbol functions This is essentially the inverse of Symbol.objfile. This allows handling different symbols with the same name (but from different objfiles) and can also be faster if the objfile is known. gdb/ChangeLog: 2019-07-29 Christian Biesinger * NEWS: Mention new functions Objfile.lookup_{global,static}_symbol. * python/py-objfile.c (objfpy_lookup_global_symbol): New function. (objfpy_lookup_static_symbol): New function. (objfile_object_methods): Add new functions. gdb/doc/ChangeLog: 2019-07-29 Christian Biesinger * python.texi (Objfiles In Python): Document new functions Objfile.lookup_{global,static}_symbol. gdb/testsuite/ChangeLog: 2019-07-29 Christian Biesinger * gdb.python/py-objfile.c: Add global and static vars. * gdb.python/py-objfile.exp: Test new functions Objfile. lookup_global_symbol and lookup_static_symbol. commit e48de49be52cb6e0fe3edbcdc3e63bbc2465d930 Author: GDB Administrator Date: Tue Jul 30 00:00:19 2019 +0000 Automatic date update in version.in commit 3d2357068b03edc850b3d84a27dbe6ad12a66d6f Author: Tom Tromey Date: Sun Jul 28 15:02:35 2019 -0600 Two fixes for test suite's terminal Exactly which escape sequences are emitted by gdb in TUI mode are determined largely by the curses implementation. Testing my latest (as yet unsubmitted) series to refactor the TUI showed a couple of failures that I tracked to the test suite's terminal implementation. In particular, the CSI "@" sequence was not implemented; and the CSI "X" sequence was implemented incorrectly. This patch fixes both of these problems. Tested on x86-64 Fedora 28. gdb/testsuite/ChangeLog 2019-07-29 Tom Tromey * lib/tuiterm.exp (Term::_csi_@): New proc. (Term::_csi_X): Don't move cursor. commit bc4268a5d926c8f29e42d245322145dad131627f Author: Philippe Waroquiers Date: Sat May 4 23:48:36 2019 +0200 Document 'set print frame-info|frame-arguments presence'. gdb/ChangeLog 2019-06-19 Philippe Waroquiers * NEWS: Mention 'set|show print frame-info'. Mention new 'presence' value for 'frame-arguments'. Mention new '-frame-info' backtrace argument. Mention that python frame filtering code is now consistent with what 'backtrace' command prints. gdb/doc/ChangeLog 2019-07-29 Philippe Waroquiers * gdb.texinfo (Backtrace): Document the new '-frame-info' backtrace option. Reference 'set print frame-info'. (Print Settings): Document 'set|show print frame-info'. Document new 'presence' value for 'set print frame-arguments. commit c7e4c0a6482cebcf8b129d1008a2c553a0183aee Author: Philippe Waroquiers Date: Sat May 4 23:47:57 2019 +0200 Test 'set print frame-info|frame-arguments presence'. Updated tests to test the new options and new values. Test the default for print_what in python frame filtering. Updated the tests impacted by the default in python frame filtering which is now consistent with the backtrace command. gdb/testsuite/ChangeLog 2019-07-29 Philippe Waroquiers * gdb.base/options.exp: Update backtrace - completion to new option -frame-info. * gdb.base/frame-args.exp: Test new 'frame-arguments presence'. Test new 'set print frame-info'. Test backtrace -frame-info overriding 'set print frame-info'. * gdb.python/py-framefilter.exp: Test new 'frame-arguments presence'. Test new 'set print frame-info'. Verify consistency of backtrace with and without filters, with and without -no-filters. * gdb.python/py-framefilter-invalidarg.exp: Update to new print_what default. commit 4b5e8d19afe4accc3dd87aeba58d6704e71c610d Author: Philippe Waroquiers Date: Sat May 4 23:40:56 2019 +0200 Implement 'set print frame-info|frame-arguments presence'. New settings allow to better control what frame information is printed. 'set print frame-info' allows to override the default frame information printed when a GDB command prints a frame. The backtrace command has a new option -frame-info to override this global setting. It is now possible to have very short frame information by using the new 'set print frame-arguments presence' and 'set print frame-info short-location'. Combined with 'set print address off', a backtrace will only show the essential information to see the function call chain, e.g.: (gdb) set print address off (gdb) set print frame-arguments presence (gdb) set print frame-info short-location (gdb) bt #0 break_me () #1 call_me (...) #2 main () (gdb) This is handy in particular for big backtraces with functions having many arguments. Python frame filter printing logic has been updated to respect the new setting in non MI mode. Also, the default frame information printed was inconsistent when backtrace was printing the frame information itself, or when the python frame filtering code was printing the frame information. This patch changes the default of python frame filtering to have a consistent behaviour regarding printed frame-information, whatever the presence/activity/matches of python filters. 2019-07-29 Philippe Waroquiers * frame.h (enum print_what): New value 'SHORT_LOCATION', update comments. (print_frame_info_auto, print_frame_info_source_line, print_frame_info_location, print_frame_info_source_and_location, print_frame_info_location_and_address, print_frame_info_short_location): New declarations. (struct frame_print_options): New member print_frame_info. * extension.h (enum ext_lang_frame_args): New value CLI_PRESENCE. * stack.h (get_user_print_what_frame_info): New declaration. (frame_show_address): New declaration. * stack.c (print_frame_arguments_choices): New value 'presence'. (print_frame_info_auto, print_frame_info_source_line, print_frame_info_location, print_frame_info_source_and_location, print_frame_info_location_and_address, print_frame_info_short_location, print_frame_info_choices, print_frame_info_print_what): New definitions. (print_frame_args): Only print dots for args if print frame-arguments is 'presence'. (frame_print_option_defs): New element for "frame-info". (get_user_print_what_frame_info): New function. (frame_show_address): Make non static. Move comment to stack.h. (print_frame_info_to_print_what): New function. (print_frame_info): Update comment. Use fp_opts.print_frame_info to decide what to print. (backtrace_command_1): Handle the new print_frame_arguments_presence value. (_initialize_stack): Call add_setshow_enum_cmd for frame-info. * python/py-framefilter.c (py_print_args): Handle CLI_PRESENCE. (py_print_frame): In non-mi mode, use LOCATION as default for print_what, similarly to frame information printed directly by backtrace command. Handle frame-info user option in non MI mode. commit de28a3b72e4e85233c6ece9063696b13ef170c00 Author: Tom de Vries Date: Mon Jul 29 16:24:57 2019 +0200 [gdb/testsuite, 2/2] Fix gdb.linespec/explicit.exp with check-read1 When running gdb.linespec/explicit.exp with check-read1, we get: ... (gdb) PASS: gdb.linespec/explicit.exp: set max-completions unlimited break  -function ... top (gdb) PASS: gdb.linespec/explicit.exp: complete with no arguments break -function ... top (gdb) FAIL: gdb.linespec/explicit.exp: complete with no arguments (clearing input line) ... The problem is that the send_gdb "\t\t" triggers completion twice: ... set tst "complete with no arguments" send_gdb "break \t" gdb_test_multiple "" $tst { "break \\\x07" { send_gdb "\t\t" gdb_test_multiple "" $tst { ... } clear_input_line $tst ... but the following gdb_test_multiple only parses it once, so the second completion is left for clear_input_line, which fails. Fix this by triggering completion only once. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries * gdb.linespec/explicit.exp: Fix completion trigger for "complete with no arguments". commit 507dd60e28d0ef35ffb7c0880933d6b88cc3f5bd Author: Tom de Vries Date: Mon Jul 29 16:24:57 2019 +0200 [gdb/testsuite, 1/2] Fix gdb.linespec/explicit.exp with check-read1 When running gdb.linespec/explicit.exp with check-read1, we get: ... (gdb) PASS: gdb.linespec/explicit.exp: complete unique file name: break -source "3explicit.c" break -source exp^Glicit^G^M explicit.c explicit2.c ^M (gdb) FAIL: gdb.linespec/explicit.exp: complete non-unique file name ... The problem is that we have a gdb_test_multiple where we match two regexps: ... set tst "complete non-unique file name" send_gdb "break -source exp\t" gdb_test_multiple "" $tst { -re "break -source exp\\\x07licit" { ... } -re "break -source exp\\\x07l" { # This pattern may occur when glibc debuginfo is installed. ... } } ... but since second is a substring of the first, we'll usually match the first, but with check-read1 we'll match the second. Fix this by using a single regexp and merging the related code. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries * gdb.linespec/explicit.exp: Fix gdb_test_multiple regexps where second is a substring of the first for "complete non-unique file name". commit 5beafce944b6b200d1fa80d7f4a8656cb2ecf2fa Author: Tom de Vries Date: Mon Jul 29 15:07:47 2019 +0200 [gdb/testsuite] Fix python.exp with check-read1 when running python/python.exp with check-read1, we get: ... (gdb) PASS: gdb.python/python.exp: prompt substitution readline - end python gdb.prompt_hook = error_prompt^M Python Exception Python exception calledPASS: gdb.python/python.exp: set hook : ^M (gdb) PASS: gdb.python/python.exp: set the hook to default python gdb.prompt_hook = None^M (gdb) PASS: gdb.python/python.exp: set print-stack full for prompt error test set python print-stack full^M (gdb) FAIL: gdb.python/python.exp: set the hook python gdb.prompt_hook = error_prompt^M Traceback (most recent call last):^M File "", line 3, in error_prompt^M RuntimeError: Python exception called^M (gdb) FAIL: gdb.python/python.exp: set the hook to default ... The problem is that gdb_test_multiple here: ... gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" { -re "Python Exception (exceptions.RuntimeError|<(type 'exceptions.|class ')RuntimeError'>) Python excepti on called.*" { pass "set hook" } } ... specifies a regexp that ends with ".*" but doesn't specify the expected $gdb_prompt. Consequently, due to check-read1, the ".*" is matched to "" and the remaining $gdb_prompt is read by the the following gdb_py_test_silent_cmd, which has its own $gdb_prompt read by the following gdb_py_test_silent_cmd, which has its own $gdb_prompt causing a mismatch for the following gdb_test_multiple: ... gdb_test_multiple "python gdb.prompt_hook = error_prompt" "set the hook" { -re "Traceback.*File.*line.*RuntimeError.*Python exception called.*" { pass "set hook" } } ... which causes both FAILs. The second gdb_test_multiple has the same problem as the first, but it happens not to cause a FAIL because it's followed by a gdb_py_test_silent_cmd and a clean_restart. Fix the regexps in both gdb_test_multiple calls. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries * gdb.python/python.exp: Don't terminate gdb_test_multiple regexp with ".*". commit 2d274232f3e693d54f8dd561de73810d1a03ddf7 Author: Tom de Vries Date: Mon Jul 29 14:11:13 2019 +0200 [gdb/testsuite] Fix mi-catch-cpp-exceptions.exp and mi-nonstop.exp with check-read1 With check-read1 we get: ... FAIL: gdb.mi/mi-catch-cpp-exceptions.exp: check for stap probe in libstdc++ FAIL: gdb.mi/mi-nonstop.exp: probe for target remote ... In both cases this is due to using gdb_test_multiple (which expects $gdb_prompt by default) in combination with gdb using $gdb_mi_prompt, similar to the problem fixed by commit d17725d72f "Don't expect gdb_prompt in mi_skip_python_test". Fix this by adding the $prompt_regexp argument to the gdb_test_multiple calls. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries * lib/gdb.exp (skip_libstdcxx_probe_tests_prompt, gdb_is_target_1): Pass prompt_regexp parameter to gdb_test_multiple calls. commit 9197cd8b52aa41a04b883d83df863ecb5afc5d35 Author: Tom de Vries Date: Mon Jul 29 11:24:04 2019 +0200 [gdb/testsuite] Fix gdb.base/maint.exp with check-read1 With gdb.base/maint.exp and check-read1, we get: ... FAIL: gdb.base/maint.exp: maint print registers ... Using this patch: ... diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index a7675ea215..b81d7ec660 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -81,7 +81,9 @@ gdb_test_multiple $test $test { exp_continue } -re "$gdb_prompt $" { - gdb_assert { $saw_registers && $saw_headers } $test + gdb_assert { $saw_headers } "$test: saw headers" + gdb_assert { $saw_registers } "$test: saw registers" + pass "$test: got prompt" } } ... We get more information: ... PASS: gdb.base/maint.exp: maint print registers: saw headers FAIL: gdb.base/maint.exp: maint print registers: saw registers PASS: gdb.base/maint.exp: maint print registers: got prompt ... The problem is that when matching: ... (gdb) maint print registers^M Name Nr Rel Offset Size Type ^M rax 0 0 0 8 int64_t ^M ... the regexp for $saw_headers ends in "\[\r\n\]+", which allows it to match only the "\r". The remaining "\n" then start the next line to be matched, which doesn't match for the $saw_registers regexp since it starts with "^\[^\r\n\]+". Fix this by ending the regexps with "\r\n". Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries * gdb.base/maint.exp: Use "\r\n" instead of "\[\r\n\]+" in "maint print registers" regexps. commit b528dae0954436ab103fb8ab6fc1ca632b4a7c51 Author: Tom de Vries Date: Mon Jul 29 11:24:04 2019 +0200 [gdb/testsuite] Fix gdb.base/define.exp with check-read1 When running gdb.base/define.exp with check-read1, we get: ... show prompt^M Gdb's prompt is "(gdb) ".^M (gdb) PASS: gdb.base/define.exp: save gdb_prompt set prompt \(blah\) ^M (blah) PASS: gdb.base/define.exp: set gdb_prompt set prompt (gdb) PASS: gdb.base/define.exp: reset gdb_prompt ^M (gdb) FAIL: gdb.base/define.exp: define do-define ... The problem is that the "$gdb_prompt $" regexp here: ... gdb_test_multiple "set prompt $prior_prompt " "reset gdb_prompt" { -re "$gdb_prompt $" { pass "reset gdb_prompt" } } ... triggers for the echoing of the command "set prompt $prior_prompt " rather than for the prompt after the command has executed. Fix this by changing the regexp to "\r\n$gdb_prompt $". Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries * gdb.base/define.exp: Add "\r\n" to "reset gdb_prompt" regexp. commit d17725d72f25812acc8bd16a368c0e889c4b4d1e Author: Tom de Vries Date: Mon Jul 29 11:24:04 2019 +0200 [gdb/testsuite] Don't expect gdb_prompt in mi_skip_python_test When running gdb.python/py-mi-events.exp with make check-read1, we get: ... (gdb) ^M python print ('test')^M &"python print ('test')\n"^M ~"test\n"^M ^done^M (gdb) FAIL: gdb.python/py-mi-events.exp: verify python support ^M python print (sys.version_info[0])^M &"python print (sys.version_info[0])\n"^M ~"2\n"^M ^done^M (gdb) FAIL: gdb.python/py-mi-events.exp: check if python 3 ^M ... The FAILs happen as follows. On one hand, skip_python_tests_prompt uses the prompt_regexp parameter for the user_code argument of gdb_test_multiple: ... proc skip_python_tests_prompt { prompt_regexp } { global gdb_py_is_py3k gdb_test_multiple "python print ('test')" "verify python support" { -re "not supported.*$prompt_regexp" { unsupported "Python support is disabled." return 1 } -re "$prompt_regexp" {} } gdb_test_multiple "python print (sys.version_info\[0\])" "check if python 3" { -re "3.*$prompt_regexp" { set gdb_py_is_py3k 1 } -re ".*$prompt_regexp" { set gdb_py_is_py3k 0 } } ... On the other hand, gdb_test_multiple itself uses $gdb_prompt: ... -re "\r\n$gdb_prompt $" { if ![string match "" $message] then { fail "$message" } set result 1 } ... So when mi_skip_python_test calls skip_python_tests_prompt with prompt_regexp set to $mi_gdb_prompt: ... proc mi_skip_python_tests {} { global mi_gdb_prompt return [skip_python_tests_prompt "$mi_gdb_prompt$"] } ... and expect reads "(gdb) " and tries to match it (due to the READ1=1 setting), the user_code regexps using $prompt_regexp (set to $mi_gdb_prompt) don't match, but the $gdb_prompt regexp in gdb_test_multiple does match. Fix this by adding a prompt_regexp parameter to gdb_test_multiple, and using the parameter in skip_python_tests_prompt. Tested gdb.python/py-mi-events.exp with make check READ1=1 x86_64-linux. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-29 Tom de Vries PR gdb/24855 * lib/gdb.exp (gdb_test_multiple): Add prompt_regexp parameter. (skip_python_tests_prompt): Add prompt_regexp argument to gdb_test_multiple calls. commit cc5277b173701364c10204f316db28198f2c683b Author: Martin Liska Date: Thu Jul 4 16:39:08 2019 +0200 Support .gnu.lto_.lto section in ELF files (PR 24768). bfd/ChangeLog: 2019-07-22 Martin Liska PR 24768 * archive.c (_bfd_compute_and_write_armap): Come up with report_plugin_err variable. * bfd-in2.h (struct bfd): Add lto_slim_object flag. * elf.c (struct lto_section): New. (_bfd_elf_make_section_from_shdr): Parse content of .gnu_lto_.lto section. * elflink.c: Report error for a missing LTO plugin. * linker.c (_bfd_generic_link_add_one_symbol): Likewise. binutils/ChangeLog: 2019-07-22 Martin Liska PR 24768 * nm.c (filter_symbols): Set report_plugin_err if error is reported. (display_rel_file): Report error for a missing LTO plugin. gold/ChangeLog: 2019-07-22 Martin Liska PR 24768 * layout.h (class Layout): Add is_lto_slim_object and set_lto_slim_object. * object.cc (struct lto_section): Add lto_slim_object_. (big_endian>::do_layout): Parse content of .gnu_lto_.lto section. (big_endian>::do_add_symbols): Report error for a missing LTO plugin. commit ac50aea1311b01c745afc4dba102a8d20d0eea6e Author: GDB Administrator Date: Mon Jul 29 00:00:28 2019 +0000 Automatic date update in version.in commit 4538d1c7c46e67b472d8d5ebf163f3dfd9c67714 Author: Alan Modra Date: Sun Jul 28 14:56:37 2019 +0930 PR24857, ld: error adding symbols: bad value This fixes two cases where elf_link_add_object_symbols returns an error, setting the catch-all bfd_error_bad_value without explaining the error. The second one is an internal error that can only be caused by a target elf_add_symbol_hook, so make that one abort. The first one is my PR24339 fix. PR24339 is another of those fuzzing bugs and the fix I made catches the problem when loading symbols, rather than when symbols are used in relocs. While ld is correct to reject the object file as not complying with the ELF standard, let's be a little more forgiving for dynamic objects. PR 24857 PR 24339 * elflink.c (elf_link_add_object_symbols): Report an informative error on finding local symbols with index equal or greater than symbol table sh_info. Correct comment. Allow such symbols in dynamic objects. Abort on NULL section for symbol. commit 52b75bf1dc759e8d9eda9a71caa52e458e57e4ff Author: Tom Tromey Date: Sun Jul 21 08:13:58 2019 -0600 Add test that "file" shows "main" This adds a new test that checks that the "file" command will show the program's "main". gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey * gdb.tui/main.exp: New file. commit 2b1d00c2b828ea98fb61f07496882f8a7aa99f5f Author: Tom Tromey Date: Sat Jul 20 14:46:29 2019 -0600 Add test case for empty TUI windows My original intent here was to add a test case to test that empty TUI windows re-render their contents after a resize. However, this seems pretty broken at the moment, so a lot of the test is actually disabled. gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey * lib/tuiterm.exp (Term::clean_restart): Make "executable" optional. * gdb.tui/empty.exp: New file. commit ded631d57dec8c75ff5713f062b1c5667c31ec23 Author: Tom Tromey Date: Fri Jul 19 16:15:58 2019 -0600 Add TUI resizing test This adds a test case that resizes the terminal and then checks that the TUI updates properly. gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey * lib/tuiterm.exp (spawn): New proc. (Term::resize): New proc. * gdb.tui/resize.exp: New file. commit 58ac439d385a285382733a35ca1fb2666edf6540 Author: Tom Tromey Date: Sat Jul 20 14:49:29 2019 -0600 Add TUI test for "list" This adds a test to check that the "list" command will update the TUI source window. gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey * gdb.tui/list.exp: New file. commit fe1f56ee14b2c30f088dc65bb4b67b9793199cea Author: Tom Tromey Date: Thu Jul 18 18:07:59 2019 -0600 Add TUI register window test This adds a very simple test of the TUI register window. gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey * gdb.tui/regs.exp: New file. commit f790b310d2c29f08be79d6af8d8c391bf793fce7 Author: Tom Tromey Date: Thu Jul 18 16:54:32 2019 -0600 Add "layout split" test This adds a test of "layout split" to the TUI test suite. gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey * gdb.tui/basic.exp: Add "layout split" test. commit d95fc6eec07344f83ec0aba4a1e4f17fb53da45b Author: Tom Tromey Date: Thu Jul 18 16:21:45 2019 -0600 Add test for "layout asm" This adds a very simple test for "layout asm". gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey * gdb.tui/basic.exp: Add "layout asm" test. commit c3786b3aa311e7fba247623a98135d63d1d51c99 Author: Tom Tromey Date: Mon Jul 1 16:01:58 2019 -0600 A virtual terminal for the test suite This patch implements a simple ANSI terminal emulator for the test suite. It is still quite basic, but it is good enough to allow some simple TUI testing to be done. gdb/testsuite/ChangeLog 2019-07-27 Tom Tromey * lib/tuiterm.exp: New file. * gdb.tui/basic.exp: New file. commit 1c316af29ff2db118796de1486bf4e9673ac2922 Author: GDB Administrator Date: Sun Jul 28 00:00:51 2019 +0000 Automatic date update in version.in commit 6bdfee81576aae55666a9245cfc0a316a6849957 Author: Kevin Buettner Date: Thu Jul 25 18:27:20 2019 -0700 Fix gdb.python/py-thrhandle.exp failures for -m32 multilib This patch fixes the following failures when testing with "target_board unix/-m32" using a x86_64-pc-linux-gnu native GDB. FAIL: gdb.python/py-thrhandle.exp: print thread for bogus handle thrs[3] FAIL: gdb.python/py-thrhandle.exp: print thread for bogus handle thrs[4] FAIL: gdb.python/py-thrhandle.exp: print thread id for thrs[0] FAIL: gdb.python/py-thrhandle.exp: print thread id for thrs[1] FAIL: gdb.python/py-thrhandle.exp: print thread id for thrs[2] FAIL: gdb.python/py-thrhandle.exp: thread 0: fetch thread handle from thread FAIL: gdb.python/py-thrhandle.exp: thread 0: verify that handles are the same FAIL: gdb.python/py-thrhandle.exp: thread 1: fetch thread handle from thread FAIL: gdb.python/py-thrhandle.exp: thread 1: verify that handles are the same FAIL: gdb.python/py-thrhandle.exp: thread 2: fetch thread handle from thread FAIL: gdb.python/py-thrhandle.exp: thread 2: verify that handles are the same I've written it so that it might work for other 64-bit host / 32-bit target combos too. gdb/ChangeLog: * linux-thread-db.c (thread_db_target::thread_handle_to_thread_info): Add case for debugging 32-bit target on 64-bit host. Revise comment. commit 98a617f8d5cf9bfb53b2e1d5cf3f0e0f188d9e53 Author: Kevin Buettner Date: Sat Jul 13 15:59:44 2019 -0700 Fix stepping bug associated with non-contiguous blocks I recently noticed the following behavior while debugging dw2-ranges-func-low-cold. This is one of the test programs associated with the test gdb.dwarf2/dw2-ranges-func.exp. (gdb) b 70 Breakpoint 1 at 0x401129: file dw2-ranges-func-lo-cold.c, line 70. (gdb) run Starting program: dw2-ranges-func-lo-cold Breakpoint 1, foo () at dw2-ranges-func-lo-cold.c:70 70 if (e) foo_cold (); /* foo foo_cold call */ (gdb) set var e=1 (gdb) step [Inferior 1 (process 12545) exited normally] This is incorrect. When stepping, we expect a step to occur. We do not expect the program to exit. Instead, we should see the following behavior: ... (gdb) set var e=1 (gdb) step foo () at dw2-ranges-func-lo-cold.c:54 54 baz (); /* foo_cold baz call */ (Note that I've shortened the paths in the above sessions to improve readability.) The bug is in fill_in_stop_func() in infrun.c. While working on non-contiguous address range improvements in 2018, I replaced the call to find_pc_partial_function() with a call to find_function_entry_range_from_pc(). Although this seemed like the right thing to do at the time, I now think that calling find_pc_partial_function (along with some other tweaks) is the right thing to do. For blocks with a single contiguous range, these functions do pretty much the same thing: when the function succeeds, the function name, start address, and end address are all filled in. Additionally, find_pc_partial_function contains an additional output parameter which is set to the block containing that PC. For blocks with non-contiguous ranges, find_pc_partial_function sets the start and end addresses to the start and end addresses of the range containing the pc. find_function_entry_range_from_pc does what it says; it sets the start and end addresses to those of the range containing the entry pc. The reason that I had thought that using the entry pc range was correct is due to the fact that fill_in_stop_func() contains some code for advancing past the function start and entry point. To do this, we'd need the range that contains the entry pc. However, when stepping, we actually want the range that contains the stop pc. If that range also contains the entry pc, we should then attempt to advance stop_func_start past the start offset and entry point. (I haven't thought very hard about the reason for advancing the stop_func_start in this manner. Since it's been there for quite a while, I'm assuming that it's still a good idea.) Back when I wrote the test case, I had included a test for doing the step shown in the example above. I had problems with it, however. At the time, I thought it was due to differing compiler versions, so I disabled that portion of the test. I have now reenabled those tests, but have left in place the logic which may be used to disable it. The changes to dw2-ranges-func.exp depend on my other recent changes to the file which have not been pushed yet. Finally, I'll note that the only caller of find_function_entry_range_from_pc() is/was fill_in_stop_func(). Once this commit goes in, it'll be dead code. I considered removing it, but I think that it ought to be used (instead of find_pc_partial_function) for determining the correct range to scan for prologue analysis, so I'm going to leave it in place for now. gdb/ChangeLog: * infrun.c (fill_in_stop_func): Use find_pc_partial_function instead of find_function_entry_range_from_pc. testsuite/ChangeLog: * gdb.dwarf2/dw2-ranges-func.exp (enable_foo_cold_stepping): Enable tests associated with this flag. Adjust regex referencing "foo_low" to now refer to "foo_cold" instead. commit 5c076da45ce9a24d47046ddb0bac02e158e6bf58 Author: Kevin Buettner Date: Sun Jun 2 18:31:22 2019 -0700 Improve test gdb.dwarf2/dw2-ranges-func.exp The original dw2-ranges-func.exp test caused a function named foo to be created with two non-contiguous address ranges. In the C source file, a function named foo_low was incorporated into the function foo which was also defined in that file. The DWARF assembler is used to do this manipulation. The source file had been laid out so that foo_low would likely be placed (by the compiler and linker) at a lower address than foo(). The case where a range at a higher set of addresses (than foo) was not being tested. In a recent discussion on gdb-patches, it became clear that performing such tests are desirable because bugs were discovered which only became evident when the other range was located at high(er) addresses than the range containing the entry point for the function. This other (non entry pc) address range is typically used for "cold" code which executes less frequently. Thus, I renamed foo_low to foo_cold and renamed the C source file from dw-ranges-func.c to dw-ranges-func-lo.c. I then made a copy of this file, naming it dw-ranges-func-hi.c. (That was my intent anyway. According to git, I renamed dw-ranges-func.c to dw-ranges-func-hi.c and then modified it. dw-ranges-func-lo.c shows up as an entirely new file.) Within dw-ranges-func-hi.c, I changed the placement of foo_cold() along with some of the other functions so that foo_cold() would be at a higher address than foo() while also remaining non-contiguous. The two files, dw-ranges-func-lo.c and dw-ranges-func-hi.c, are essentially the same except for the placement of some of the functions therein. The tests in dw2-ranges-func.exp where then wrapped in a new proc named do_test which was then called in a loop from the outermost level. The loop causes each of the source files to have the same tests run upon them. I also added a few new tests which test functionality fixed by the other commits to this patch series. Due to the reorganization of the file, it's hard to identify these changes in the patch. So, here are the tests which were added: with_test_prefix "no-cold-names" { # Due to the calling sequence, this backtrace would normally # show function foo_cold for frame #1. However, we don't want # this to be the case due to placing it in the same block # (albeit at a different range) as foo. Thus it is correct to # see foo for frames #1 and #2. It is incorrect to see # foo_cold at frame #1. gdb_test_sequence "bt" "backtrace from baz" { "\[\r\n\]#0 .*? baz \\(\\) " "\[\r\n\]#1 .*? foo \\(\\) " "\[\r\n\]#2 .*? foo \\(\\) " "\[\r\n\]#3 .*? main \\(\\) " } # Doing x/2i foo_cold should show foo_cold as the first symbolic # address and an offset from foo for the second. We also check to # make sure that the offset is not too large - we don't GDB to # display really large offsets that would (try to) wrap around the # address space. set foo_cold_offset 0 set test "x/2i foo_cold" gdb_test_multiple $test $test { -re " (?:$hex) .*?\n (?:$hex) .*${gdb_prompt}" { set foo_cold_offset $expect_out(1,string) pass $test } } gdb_assert {$foo_cold_offset <= 10000} "offset to foo_cold is not too large" # Likewise, verify that second address shown by "info line" is at # and offset from foo instead of foo_cold. gdb_test "info line *foo_cold" "starts at address $hex and ends at $hex .*" } When run against a GDB without the requisite bug fixes (from this patch series), these 6 failures should be seen: FAIL: gdb.dwarf2/dw2-ranges-func.exp: lo-cold: no-cold-names: backtrace from baz (pattern 4) FAIL: gdb.dwarf2/dw2-ranges-func.exp: lo-cold: no-cold-names: x/2i foo_cold FAIL: gdb.dwarf2/dw2-ranges-func.exp: lo-cold: no-cold-names: info line *foo_cold FAIL: gdb.dwarf2/dw2-ranges-func.exp: hi-cold: no-cold-names: backtrace from baz (pattern 3) FAIL: gdb.dwarf2/dw2-ranges-func.exp: hi-cold: no-cold-names: x/2i foo_cold FAIL: gdb.dwarf2/dw2-ranges-func.exp: hi-cold: no-cold-names: info line *foo_cold gdb/testsuite/ChangeLog: * gdb.dwarf2/dw2-ranges-func.c: Rename to... * gdb.dwarf2/dw2-ranges-func-lo-cold.c: ...this. * gdb.dwarf2/dw2-ranges-func-lo-cold.c (foo_low): Change name to foo_cold. Revise comments to match. * gdb.dwarf2/dw2-ranges-func-hi-cold.c: New file. * gdb.dwarf2/dw2-ranges-func.exp (do_test): New proc. Existing tests were wrapped into this proc; Call do_test in loop from outermost level. (foo_low): Rename all occurrences to "foo_cold". (backtrace from baz): New test. (x2/i foo_cold): New test. (info line *foo_cold): New test. commit 1aff7173105c9540bbbef75727aa200f5c288b2e Author: Kevin Buettner Date: Sat Jun 1 13:42:29 2019 -0700 dwarf2-frame.c: Fix FDE processing bug involving non-contiguous ranges In the course of revising the test case for gdb.dwarf2/dw2-ranges-func.exp, I added a new .c file which would cause the "cold" range to be at a higher address than the rest of the function. In these tests, the range in question isn't really cold in the sense that a compiler has determined that it'll be executed less frequently. Instead, it's simply the range that does not include the entry pc. These tests are intended to mimic the output of such a compiler, so I'll continue to refer to this range as "cold" in the following discussion. The original test case had only tested a cold range placed at lower addresses than the rest of the function. During testing of the new code where the cold range was placed at higher addresses, I found that I could produce the following backtrace: (gdb) bt #0 0x0000000000401138 in baz () at dw2-ranges-func-hi-cold.c:72 #1 0x0000000000401131 in foo_cold () at dw2-ranges-func-hi-cold.c:64 #2 0x000000000040111e in foo () at dw2-ranges-func-hi-cold.c:50 #3 0x0000000000401144 in main () at dw2-ranges-func-hi-cold.c:78 This is correct, except that we'd like to see foo() listed instead of foo_cold(). (I handle that problem in another patch.) Now look at what happens for a similar backtrace where the cold range is at a lower address than the foo's entry pc: (gdb) bt #0 0x000000000040110a in baz () at dw2-ranges-func-lo-cold.c:48 #1 0x0000000000401116 in foo () at dw2-ranges-func-lo-cold.c:54 #2 0x00007fffffffd4c0 in ?? () #3 0x0000000000401138 in foo () at dw2-ranges-func-lo-cold.c:70 Note that the backtrace doesn't go all the way back to main(). Moreover, frame #2 is messed up. I had seen this behavior when I had worked on the non-contiguous address problem last year. At the time I convinced myself that the mangled backtrace was "okay" since we're doing strange things with the DWARF assembler. We're taking a function called foo_cold (though it was originally called foo_low - my recent changes to the test case changed the name) and via the magic of the DWARF assembler, we're combining it into a separate (non-contiguous) range for foo. Thus, it was a surprise to me when I got a good and complete backtrace when the cold symbol is placed at an address that's greater than entry pc. The function dwarf2_frame_cache (in dwarf2-frame.c) is making this call: if (get_frame_func_if_available (this_frame, &entry_pc)) ... If that call succeeds (returns a true value), the FDE is then processed up to the entry pc. It doesn't make sense to do this, however, when the FDE in question does not contain the entry pc. This can happen when the function in question is comprised of more than one (non-contiguous) address range. My fix is to add some comparisons to the test above to ensure that ENTRY_PC is within the address range covered by the FDE. gdb/ChangeLog: * dwarf2-frame.c (dwarf2_frame_cache): Don't decode FDE instructions for entry pc when entry pc is out of range for that FDE. commit 2dc80cf8a5799120fd4e00199688f721e7de2a62 Author: Kevin Buettner Date: Wed Jul 3 17:35:21 2019 -0700 Restrict use of minsym names when printing addresses in disassembled code build_address_symbolic contains some code which causes it to prefer the minsym over the the function symbol in certain cases. The cases where this occurs are the same as the "certain pathological cases" that used to exist in find_frame_funname(). This commit largely disables that code; it will only prefer the minsym when the address of minsym is identical to that of the address under consideration AND the function address for the symbtab sym is not the same as the address under consideration. So, without this change, when using the dw2-ranges-func-lo-cold executable from the gdb.dwarf2/dw2-ranges-func.exp test, GDB exhibits the following behavior: (gdb) x/5i foo_cold 0x40110d : push %rbp 0x40110e : mov %rsp,%rbp 0x401111 : callq 0x401106 0x401116 : nop 0x401117 : pop %rbp On the other hand, still without this change, using the dw2-ranges-func-hi-cold executable from the same test, GDB does this instead: (gdb) x/5i foo_cold 0x401128 : push %rbp 0x401129 : mov %rsp,%rbp 0x40112c : callq 0x401134 0x401131 : nop 0x401132 : pop %rbp This is inconsistent behavior. When foo_cold is at a lower address than the function's entry point, the symtab symbol (foo) is displayed along with a large positive offset which would wrap around the address space if the address space were only 32 bits wide. (A later patch fixes this problem by displaying negative offsets.) This commit makes the behavior uniform for both the "lo-cold" and "hi-cold" cases: lo-cold: (gdb) x/5i foo_cold 0x40110d : push %rbp 0x40110e : mov %rsp,%rbp 0x401111 : callq 0x401106 0x401116 : nop 0x401117 : pop %rbp hi-cold: (gdb) x/5i foo_cold 0x401128 : push %rbp 0x401129 : mov %rsp,%rbp 0x40112c : callq 0x401134 0x401131 : nop 0x401132 : pop %rbp In both cases, the symbol shown for the address at which foo_cold resides is shown as . Subsequent offsets are shown as either negative or positive offsets from the entry pc for foo. When disassembling a function, care must be taken to NOT display <+0> as the offset for the second range. For this reason, I found it necessary to add the "prefer_sym_over_minsym" parameter to build_address_symbolic. The type of this flag is a bool; do_demangle ought to be a bool also, so I made this change at the same time. gdb/ChangeLog: * valprint.h (build_address_symbolic): Add "prefer_sym_over_minsym" parameter. Change type of "do_demangle" to bool. * disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Pass suitable "prefer_sym_over_minsym" flag to build_address_symbolic(). Don't output "+" for negative offsets. * printcmd.c (print_address_symbolic): Update invocation of build_address_symbolic to include a "prefer_sym_over_minsym" flag. (build_address_symbolic): Add "prefer_sym_over_minsym" parameter. Restrict cases in which use of minimal symbol is preferred to that of a found symbol. Update comments. commit 567238c956c4e5530bd143bfae9393c7ae5524cd Author: Kevin Buettner Date: Wed Jul 3 17:32:21 2019 -0700 Prefer symtab symbol over minsym for function names in non-contiguous blocks The discussion on gdb-patches which led to this patch may be found here: https://www.sourceware.org/ml/gdb-patches/2019-05/msg00018.html Here's a brief synopsis/analysis: Eli Zaretskii, while debugging a Windows emacs executable, found that functions comprised of more than one (non-contiguous) address range were not being displayed correctly in a backtrace. This is the example that Eli provided: (gdb) bt #0 0x76a63227 in KERNELBASE!DebugBreak () from C:\Windows\syswow64\KernelBase.dll #1 0x012e7b89 in emacs_abort () at w32fns.c:10768 #2 0x012e1f3b in print_vectorlike.cold () at print.c:1824 #3 0x011d2dec in print_object (obj=, printcharfun=XIL(0), escapeflag=true) at print.c:2150 The function print_vectorlike consists of two address ranges, one of which contains "cold" code which is expected to not execute very often. There is a minimal symbol, print_vectorlike.cold.65, which is the address of the "cold" range. GDB is prefering this minsym over the the name provided by the DWARF info due to some really old code in GDB which handles "certain pathological cases". This comment reads as follows: /* In certain pathological cases, the symtabs give the wrong function (when we are in the first function in a file which is compiled without debugging symbols, the previous function is compiled with debugging symbols, and the "foo.o" symbol that is supposed to tell us where the file with debugging symbols ends has been truncated by ar because it is longer than 15 characters). This also occurs if the user uses asm() to create a function but not stabs for it (in a file compiled with -g). So look in the minimal symbol tables as well, and if it comes up with a larger address for the function use that instead. I don't think this can ever cause any problems; there shouldn't be any minimal symbols in the middle of a function; if this is ever changed many parts of GDB will need to be changed (and we'll create a find_pc_minimal_function or some such). */ In an earlier version of this patch, I had left the code for the pathological case intact, but those who reviwed that patch recommended removing it. So that's what I've done - I've removed it. gdb/ChangeLog: * stack.c (find_frame_funname): Remove code which preferred minsym over symtab sym in "certain pathological cases". commit c89f9f2a528e490733ace16204752e9af945454e Author: GDB Administrator Date: Sat Jul 27 00:00:25 2019 +0000 Automatic date update in version.in commit 89b085acaf8d449d6c9c0b0490c6a0c9a745db5d Author: Brian Callahan Date: Fri Jul 26 14:48:15 2019 -0400 Fix return type typo in obsd-nat.c that breaks build on OpenBSD To recap the bug report: Commit a068643 introduced a small typo that breaks the gdb build on OpenBSD. Line 38 of obsd-nat.c needs to be changed from std::sring to std::string. gdb/ChangeLog 2019-07-26 Brian Callahan PR gdb/24839: * gdb/obsd-nat.c (obsd_nat_target::pid_to_str): Fix typo in return type. commit 1512d3b7b9de3a1943623f2e1f373459d5d80a98 Author: Tom de Vries Date: Fri Jul 26 21:49:45 2019 +0200 [gdb/testsuite] Fix unterminated string in i386-pkru.exp I ran into this error: ... ERROR: tcl error sourcing gdb/testsuite/gdb.arch/i386-pkru.exp. ERROR: missing " while executing "untested "" invoked from within "if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ [list debug additional_flags=${comp_flags}]] } { untested "failed to c..." (file "gdb/testsuite/gdb.arch/i386-pkru.exp" line 25) invoked from within ... caused by: ... untested "failed to compile x86 PKEYS test. ... Fix the unterminated string. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-26 Tom de Vries * gdb.arch/i386-pkru.exp: Fix unterminated string. commit 8e2e3c6c346c1c8142e714715e5a86b32f7e31ea Author: Alan Modra Date: Fri Jul 26 12:58:52 2019 +0930 PR24798, buffer overflow in process_cu_tu_index PR 24798 * dwarf.c (process_cu_tu_index): Avoid integer overflow on 64-bit systems by casting ncols and nslots expressions to size_t. Display number of columns and slots before giving up due to buffer overflow. Use %u to display unsigned ints. Perform more pointer wrap tests. commit 6dd17ae0f9b0d9fc230e75ce345da9793498554d Author: Alan Modra Date: Fri Jul 26 10:02:12 2019 +0930 Begone elf_linker This field effectively became usused a long time ago, perhaps as early as 1994. * elf-bfd.h (struct output_elf_obj_tdata): Delete "linker" field. (elf_linker): Don't define. * elflink.c (bfd_elf_final_link): Don't set elf_linker. commit 6e99a238f01fcf6f77ae25e8ade57e509a724b1f Author: Alan Modra Date: Fri Jul 26 09:54:18 2019 +0930 Ajdust lto-3r and lto-5r tests for powerpc64 * testsuite/ld-plugin/lto-3r.d: Accept D for powerpc64 descriptors. * testsuite/ld-plugin/lto-5r.d: Likewise. commit db2307377ffcd295f212cfa753e3ff45f1b85fb0 Author: GDB Administrator Date: Fri Jul 26 00:00:23 2019 +0000 Automatic date update in version.in commit f32feb4ab3c30a9a80e890a51ceb94b7446bd4ea Author: Christian Biesinger Date: Thu Jul 25 17:17:49 2019 -0500 Fix comment about the signature of add_separate_debug_file Also fixes the date in the changelog of my last commit. gdb/ChangeLog: 2019-07-25 Christian Biesinger * python/py-objfile.c (add_separate_debug_file): Fix comment about this function's Python signature. commit 297989a10c56aec56eab0ee63f1e61c33ab20905 Author: Tom de Vries Date: Thu Jul 25 18:39:31 2019 +0200 [gdb/testsuite] Test skip_libstdcxx_probe_tests in mi-catch-cpp-exceptions.exp On a system without SDT probes in libstdc++, we run into: ... FAIL: gdb.mi/mi-catch-cpp-exceptions.exp: all with invalid regexp: run until \ breakpoint in main (unknown output after running) ... The test-case uses a regexp argument for the catch throw/rethrow/catch command, which is only supported on systems with SDT probes in libstdc++. Fix this by marking the portions of the test-case that use a regexp argument as unsupported on a system without SDT probes. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-25 Tom de Vries PR testsuite/24830 * gdb.mi/mi-catch-cpp-exceptions.exp: Call mi_skip_libstdcxx_probe_tests, and skip unsupported tests. * lib/gdb.exp (skip_libstdcxx_probe_tests_prompt): Factor out of ... (skip_libstdcxx_probe_tests): ... here. * lib/mi-support.exp (mi_skip_libstdcxx_probe_tests): New proc. commit d079b9c04afb48ecba42c42632c34974f5a32ce8 Author: Nick Clifton Date: Thu Jul 25 17:29:01 2019 +0100 Fix attributation of DWARF augmentation patch. commit 48467cb99b04c9d908ce2dd74422c9c3f322ccc3 Author: Tom de Vries Date: Thu Jul 25 17:24:22 2019 +0100 Have readelf and objdump display the contents of the DWARF augmentation data as a string, if it is printable. PR 24809 * dwarf.c (display_debug_names): Display the contents of the augmentation string, if it is printable. commit c7c860d2d29ca3e774c29f328d2af42eeb031958 Author: YunQiang Su Date: Thu Jul 25 16:34:58 2019 +0100 When linking binary files into MIPS executables, default to MIPS 3 emaulation for 64-bit objects. PR 24832 * elfxx-mips.c (mips_set_isa_flags): Default to MIPS 3 for 64-bit mips inputs. commit 2e6be59c8de57c32260771ac5307968d18793a0a Author: Nick Clifton Date: Thu Jul 25 13:05:27 2019 +0100 Stop an illegal memory access by readelf when parsing a corrupt MIPS binary file. PR 24837 * readelf.c (process_mips_specific): Check for buffer overflow before reading reginfo information. commit 442853af244e0352956a5d91ad5e169a85b58710 Author: Christian Biesinger Date: Tue Jun 25 15:45:41 2019 -0500 Allow passing a block to lookup_global_symbol_from_objfile This has no behavior change in itself, but allows a future patch to add a function to the Python API to look up symbols in the static block. gdb/ChangeLog: 2019-07-24 Christian Biesinger * compile/compile-object-load.c (compile_object_load): Pass GLOBAL_SCOPE. * solib-spu.c (spu_lookup_lib_symbol): Pass GLOBAL_SCOPE. * solib-svr4.c (elf_lookup_lib_symbol): Pass GLOBAL_SCOPE. * symtab.c (lookup_global_symbol_from_objfile): Add a scope parameter. * symtab.h (lookup_global_symbol_from_objfile): Likewise. commit 75b493d0f95c6037753e0d250e1ecc6fe8d46c38 Author: GDB Administrator Date: Thu Jul 25 00:00:42 2019 +0000 Automatic date update in version.in commit b3b965fb91e1671da5b7d42349fa0d78e80c29f4 Author: Tom de Vries Date: Wed Jul 24 19:01:59 2019 +0200 [gdb/testsuite] Fix implicit declaration of printf in gdb.objc/*.m When running gdb.objc/objcdecode.exp we get: ... objcdecode.m: In function '-[Decode multipleDef]': objcdecode.m:14:3: warning: incompatible implicit declaration of built-in \ function 'printf' printf("method multipleDef\n"); ^~~~~~ objcdecode.m:14:3: note: include '' or provide a declaration of \ 'printf' ... Fix this in the three gdb.objc/*.m test-cases by including stdio.h. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-24 Tom de Vries PR testsuite/24807 * gdb.objc/basicclass.m: Include stdio.h. * gdb.objc/nondebug.m: Same. * gdb.objc/objcdecode.m: Same. commit 8f79c1075e8f258ac5a909b39704009ebc440e76 Author: H.J. Lu Date: Wed Jul 24 08:15:56 2019 -0700 Revert "Remove tests that test __gnu_lto_v1 symbol." Revert commit 8c728a9d93e2342c57039fcdd6e4a502875b9e09 Author: Martin Liska Date: Mon Jul 22 14:23:32 2019 +0200 Remove tests that test __gnu_lto_v1 symbol. since outputs of these tests are used by later tests. Check the normal symbol, foo, instead of __gnu_lto_v.*, which GCC stopped emitting after r273662. * testsuite/ld-plugin/lto-3r.d: Restored. Check foo instead of __gnu_lto_v.*. * testsuite/ld-plugin/lto-5r.d: Likewise. * testsuite/ld-plugin/lto.exp: Run lto-3r and lto-5r tests. commit 4625b4d081eb0a243c6c7370f9a12c97bf6bcf65 Author: Tom de Vries Date: Wed Jul 24 17:16:01 2019 +0200 [gdb/testsuite] Fix infoline-reloc-main-from-zero.exp compilation When running gdb.base/infoline-reloc-main-from-zero.exp, I see: ... Running gdb/testsuite/gdb.base/infoline-reloc-main-from-zero.exp ... gdb compile failed, ld: infoline-reloc-main-from-zero: \ not enough room for program headers, try linking with -N ld: final link failed: bad value collect2: error: ld returned 1 exit status UNTESTED: gdb.base/infoline-reloc-main-from-zero.exp: infoline-reloc-main-from-zero.exp UNTESTED: gdb.base/infoline-reloc-main-from-zero.exp: failed to compile ... Fix this by following the suggestion: ... -set opts {debug "additional_flags=-nostdlib -emain -Wl,-Ttext=0x00"} +set opts {debug "additional_flags=-nostdlib -emain -Wl,-Ttext=0x00 -Wl,-N"} ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-24 Tom de Vries PR testsuite/24612 * gdb.base/infoline-reloc-main-from-zero.exp: Add -Wl,-N to additional_flags. commit 9596751830b82b3ceaf8e6bb0c333181dfc96257 Author: Claudiu Zissulescu Date: Wed Jul 24 17:53:00 2019 +0300 [ARC] [COMMITTED] Fix formatting. Small formatting fixes. 2019-07-24 Claudiu Zissulescu * elf32-arc.c (bfd_get_32_me): Add a small description, fix formatting. (reloc_type_to_name): Fix formatting. (arc_elf_object_p): Likewise. (debug_arc_reloc): Likewise. (arc_do_relocation): Likewise. commit dac6552d4a203db908e11ba4803c7e39e090716f Author: Nick Clifton Date: Wed Jul 24 15:21:24 2019 +0100 Update the Swedish translation for the gas sub-directory. commit 0f3f71676a8971e0376d7d99b383660f06ff4d95 Author: Claudiu Zissulescu Date: Wed Jul 24 16:52:23 2019 +0300 [ARC] Update disassembler opcode selection New instruction are added, and some of them are overlapping. Update disassembler to correctly recognize them. Introduce nps400 option. opcodes/ xxxx-xx-xx Claudiu Zissulescu * arc-dis.c (skip_this_opcode): Check also for 0x07 major opcodes, and MPY class instructions. (parse_option): Add nps400 option. (print_arc_disassembler_options): Add nps400 info. gas/ xxxx-xx-xx Claudiu Zissulescu * testsuite/gas/arc/nps400-6.d: Update test. commit 7e126ba31ab6536b1dd779e483b72f47d3a76742 Author: Claudiu Zissulescu Date: Wed Jul 24 16:46:01 2019 +0300 [ARC] Update ARC opcode table Update ARC opcode table by cleaning up invalid instructions, and fixing wrong encodings. opcodes/ xxxx-xx-xx Claudiu Zissulescu * arc-ext-tbl.h (bspeek): Remove it, added to main table. (bspop): Likewise. (modapp): Likewise. * arc-opc.c (RAD_CHK): Add. * arc-tbl.h: Regenerate. include/ xxxx-xx-xx Claudiu Zissulescu * include/opcode/arc.h (FASTMATH): Add. (SWITCH): Likewise. commit ef551643dc282159185cb9916c7cb0308ae03cdd Author: Claudiu Zissulescu Date: Wed Jul 24 16:33:29 2019 +0300 [ARC] Add linker relaxation. Add linker relaxation. The first relaxation added is converting GOTPC32 to PCREL relocations. This relaxation doesn't change the size of the binary. bfd/ xxxx-xx-xx Claudiu Zissulescu * elf32-arc.c (bfd_get_32_me): New function. (bfd_put_32_me): Likewise. (arc_elf_relax_section): Likewise. (bfd_elf32_bfd_relax_section): Define. ld/testsuite/ xxxx-xx-xx Claudiu Zissulescu * ld-arc/relax-local-pic.d: New test. * ld-arc/relax-local-pic.s: New file. commit c54e42531adb7bf8d58bd4c3c8e0c710305959e1 Author: Yoshinori Sato Date: Wed Jul 24 20:51:52 2019 +0900 gdb/h8300-tdep.c: Fix register name in h8300h machine. H8/300H general register name "ER0" - "ER7". But gdb using "R0" - "R7". This changes register name "ER0" - "ER7" in h8300h machine mode. gdb/ChangeLog: * h8300-tdep.c (h8300_register_name_common): New. h8300_register_name): Use h8300_register_name_common. (h8300s_register_name): Likewise. (h8300sx_register_name): Likewise. (h8300h_register_nam): New. (h8300_gdbarch_init): Use h8300h_register_name in h8300h machine. commit 2f86d5594071a16665711ae13da88af1cc904371 Author: Nick Clifton Date: Wed Jul 24 12:17:37 2019 +0100 Fix ar so that it can correctly detect non-dash prefixed options that appear after dash prefixed options. PR 13256 * ar.c (decode_options): Restart option scanning if no operation is detected and argument remain to be scanned. commit cc364be6ff45669150077387f22723de33d5f1b1 Author: Alan Modra Date: Wed Jul 24 09:43:30 2019 +0930 Complain about mbind, ifunc, and unique in final_write It's not as good as complaining in gas/config/obj-elf.c since you lose any reference to the source file. bfd/ * elf-bfd.h (struct elf_backend_data): Return bfd_boolean from elf_backend_final_write_processing, don't pass linker arg. (_bfd_elf_final_write_processing): Update prototype. * elf.c (_bfd_elf_write_object_contents): Adjust call. (_bfd_elf_final_write_processing): Return error on incompatible OSABI and has_gnu_osabi. Remove linker arg. * elf-nacl.h (nacl_final_write_processing): Update prototype. * elf-vxworks.h (elf_vxworks_final_write_processing): Likewise. * elfxx-mips.h (_bfd_mips_final_write_processing): Likewise. (_bfd_mips_elf_final_write_processing): Likewise. * elf-hppa.h (elf_hppa_final_write_processing): Return status and remove linker arg. * elf-m10300.c (_bfd_mn10300_elf_final_write_processing): Likewise. * elf-nacl.c (nacl_final_write_processing): Likewise. * elf-vxworks.c (elf_vxworks_final_write_processing): Likewise. * elf32-arc.c (arc_elf_final_write_processing): Likewise. * elf32-arm.c (arm_final_write_processing): Likewise. (elf32_arm_final_write_processing): Likewise. (elf32_arm_nacl_final_write_processing): Likewise. (elf32_arm_vxworks_final_write_processing): Likewise. * elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise. * elf32-bfin.c (elf32_bfin_final_write_processing): Likewise. * elf32-cr16.c (_bfd_cr16_elf_final_write_processing): Likewise. * elf32-cris.c (cris_elf_final_write_processing): Likewise. * elf32-h8300.c (elf32_h8_final_write_processing): Likewise. * elf32-lm32.c (lm32_elf_final_write_processing): Likewise. * elf32-m32r.c (m32r_elf_final_write_processing): Likewise. * elf32-m68k.c (elf_m68k_final_write_processing): Likewise. * elf32-mips.c (mips_vxworks_final_write_processing): Likewise. * elf32-msp430.c (bfd_elf_msp430_final_write_processing): Likewise. * elf32-nds32.c (nds32_elf_final_write_processing): Likewise. * elf32-or1k.c (or1k_elf_final_write_processing): Likewise. * elf32-pj.c (pj_elf_final_write_processing): Likewise. * elf32-ppc.c (ppc_final_write_processing): Likewise. (ppc_elf_final_write_processing): Likewise. (ppc_elf_vxworks_final_write_processing): Likewise. * elf32-sparc.c (sparc_final_write_processing): Likewise. (elf32_sparc_final_write_processing): Likewise. (elf32_sparc_vxworks_final_write_processing): Likewise. * elf32-v850.c (v850_elf_final_write_processing): Likewise. * elf32-xc16x.c (elf32_xc16x_final_write_processing): Likewise. * elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise. * elf64-ia64-vms.c (elf64_vms_final_write_processing): Likewise. * elfnn-ia64.c (elfNN_ia64_final_write_processing): Likewise. * elfxx-mips.c (_bfd_mips_final_write_processing): Likewise. (_bfd_mips_elf_final_write_processing): Likewise. gas/ * config/obj-elf.c (obj_elf_section, obj_elf_type): Set has_gnu_osabi. * testsuite/gas/elf/section12a.d: Update xfails. * testsuite/gas/elf/section12b.d: Likewise. commit c5e20471be97e2dcd3498ac284487e2546715f66 Author: Alan Modra Date: Wed Jul 24 10:11:08 2019 +0930 Re: ELF final_write_processing I missed some early exits from final_write_processing that mean _bfd_elf_final_write_processing could be missed. * elf-vxworks.c (elf_vxworks_final_write_processing): Don't return early. * elf32-arc.c (arc_elf_final_write_processing): Likewise. * elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise. commit 7613ca5e3885b8e79d9096a53f3e5492a5c06cd7 Author: Alan Modra Date: Wed Jul 24 10:51:56 2019 +0930 Define ELF_OSABI for visium and update expected results for gas mbind tests. bfd/ * elf32-visium.c (visium_elf_post_process_headers): Don't set EI_OSABI header byte here. (ELF_OSABI): Define. gas/ * testsuite/gas/elf/section12a.d: xfail visium and cloudabi. * testsuite/gas/elf/section12b.d: Likewise. * testsuite/gas/elf/section13.d: Likewise. commit 7137a1ed0ad9afdd57e6ef44abbfaeaeb44dd17e Author: Alan Modra Date: Wed Jul 24 15:03:49 2019 +0930 PT_GNU_MBIND section mapping * elf/internal.h (ELF_SECTION_IN_SEGMENT_1): Exclude non-alloc sections in GNU_MBIND segments. commit 024a5840006aba9ba698aa9d868a7394016dd4a0 Author: Tom de Vries Date: Wed Jul 24 08:36:17 2019 +0200 Update expected info threads error messages in gdb.multi/tids.exp We currently have these FAILs: ... FAIL: gdb.multi/tids.exp: two inferiors: info threads -1 FAIL: gdb.multi/tids.exp: two inferiors: info threads -$one ... because we're expecting: ... Invalid thread ID: -1 ... but instead we have: ... Unrecognized option at: -1 ... This error message for info threads has changed since commit 54d6600669 'Make "info threads" use the gdb::option framework'. Update the test accordingly. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-24 Tom de Vries PR testsuite/24831 * gdb.multi/tids.exp: Update error messages for info threads. commit c76ddaa3f4f8313976670ba8f15163a3544eb1af Author: Tom de Vries Date: Wed Jul 24 08:04:59 2019 +0200 [gdb/testsuite] Fix info-types.exp for debug info from more than one file On openSUSE Leap 15.0, I get: ... FAIL: gdb.base/info-types.exp: l=c: info types FAIL: gdb.base/info-types.exp: l=c++: info types ... because the info type command prints info for files info-types.c, stddef.h, elf-init.c and init.c, while the regexp in the test-case expect only info for info-types.c. Fix this by extending the regexp. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-24 Tom de Vries * gdb.base/info-types.exp: Allow info types to print info for more than one file. commit 407bcc63bda3d78bedffb49ddebf0b41294218d9 Author: GDB Administrator Date: Wed Jul 24 00:00:22 2019 +0000 Automatic date update in version.in commit 2e8136f9453e21414cc328d025bec33218176b66 Author: Nick Clifton Date: Tue Jul 23 17:54:32 2019 +0100 Fix objdump's display of indirect strings in object files, which was broken by the link following code. PR 24818 * objdump.c (is_relocateable): Delete. (load_specific_debug_section): Test the abfd for relocations directly, rather than relying upon is_relocateable. (dump_dwarf): Delete initlialization of is_relocateable. commit 19889a58358ec7f6981c9b20b9541bcb95a839bf Author: H.J. Lu Date: Tue Jul 23 08:40:23 2019 -0700 Add missing ChangeLog entries for commit 8c728a9d93e2342c57039fcdd6e4a502875b9e09 Author: Martin Liska Date: Mon Jul 22 14:23:32 2019 +0200 Remove tests that test __gnu_lto_v1 symbol. commit a028026d2f9bbeaa2217aa8aafa1463bd88463ba Author: Kyrylo Tkachov Date: Tue Jul 23 15:54:54 2019 +0100 [AArch64] Add support for GMID_EL1 register for +memtag We're missing support for the GMID_EL1 system register from the Memory Tagging Extension in binutils. This is specified at: https://developer.arm.com/docs/ddi0595/latest/aarch64-system-registers/gmid_el1 This simple patch adds the support for this read-only register. Tested make check on gas. commit 9a618ef61593ea5103aaf17bbe968bf552aa3de0 Author: Tom de Vries Date: Tue Jul 23 15:15:20 2019 +0200 [gdb/testsuite] Add missing initial prompt read in multidictionary.exp When running multidictionary.exp in conjunction with: ... $ stress -c $(($(cat /proc/cpuinfo | grep -c "^processor") + 1)) ... we get: ... Running gdb/testsuite/gdb.dwarf2/multidictionary.exp ... ERROR: Couldn't load multidictionary into gdb. === gdb Summary === nr of unresolved testcases 1 ... The multidictionary test-case needs -readnow, and achieves this using: ... gdb_spawn_with_cmdline_opts "-readnow" gdb_load ... but the initial gdb prompt is not read. Usually, the following gdb_load command accidentally consumes that initial prompt (at the gdb_expect for the kill command in gdb_file_cmd). But under high load, that doesn't happen and we run into the error. Fix this by consuming the initial gdb prompt after spawning gdb. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-23 Tom de Vries PR testsuite/24842 * gdb.dwarf2/multidictionary.exp: Consume initial prompt after gdb_spawn_with_cmdline_opts. commit 40eadf04ff1f0eaec82dc911cf079555cdbb03d0 Author: Srinath Parvathaneni Date: Tue Jul 23 11:21:11 2019 +0100 [gdb][Arm]: gdb cannot step across CMSE secure entry function code. GDB is not able to execute "step" command on function calls of Armv8-M cmse secure entry functions. Everytime GNU linker come across definition of any cmse secure entry function in object file(s), it creates two new instructions secure gateway (sg) and original branch destination (b.w), place those two instructions in ".gnu.sgstubs" section of executable. Any function calls to these cmse secure entry functions is re-directed through secure gateway (sg) present in ".gnu.sgstubs" section. Example: Following is a function call to cmse secure entry function "foo": ... bl xxxx --->(a) ... xxxx: push {r7, lr} GNU linker on finding out "foo" is a cmse secure entry function, created sg and b.w instructions and place them in ".gnu.sgstubs" section (marked by c). The "bl" instruction (marked by a) which is a call to cmse secure entry function is modified by GNU linker (as marked by b) and call flow is re-directly through secure gateway (sg) in ".gnu.sgstubs" section. ... bl yyyy ---> (b) ... section .gnu.sgstubs: ---> (c) yyyy yyyy: sg // secure gateway b.w xxxx <__acle_se_foo> // original_branch_dest ... 0000xxxx <__acle_se_foo> xxxx: push {r7, lr} ---> (d) On invoking GDB, when the control is at "b" and we pass "step" command, the pc returns "yyyy" (sg address) which is a trampoline and which does not exist in source code. So GDB jumps to next line without jumping to "__acle_se_foo" (marked by d). The above details are published on the Arm website [1], please refer to section 5.4 (Entry functions) and section 3.4.4 (C level development flow of secure code). [1] https://developer.arm.com/architectures/cpu-architecture/m-profile/docs/ecm0359818/latest/armv8-m-security-extensions-requirements-on-development-tools-engineering-specification This patch fixes above problem by returning target pc "xxxx" to GDB on executing "step" command at "b", so that the control jumps to "__acle_se_foo" (marked by d). gdb/ChangeLog: * arm-tdep.c (arm_skip_cmse_entry): New function. (arm_is_sgstubs_section): New function. (arm_skip_stub): Add call to arm_skip_cmse_entry function. gdb/testsuite/ChangeLog: * gdb.arch/arm-cmse-sgstubs.c: New test. * gdb.arch/arm-cmse-sgstubs.exp: New file. commit 8c728a9d93e2342c57039fcdd6e4a502875b9e09 Author: Martin Liska Date: Mon Jul 22 14:23:32 2019 +0200 Remove tests that test __gnu_lto_v1 symbol. ld/ChangeLog: 2019-07-22 Martin Liska * testsuite/ld-plugin/lto-3r.d: Remove. * testsuite/ld-plugin/lto-5r.d: Remove. * testsuite/ld-plugin/lto.exp: Do not run lto-3r and lto-5r tests. commit df3a023bd614133fe69afb02cd0e8f3e590a36a9 Author: Alan Modra Date: Tue Jul 23 17:54:42 2019 +0930 SHF_GNU_MBIND requires ELFOSABI_GNU When SHF_GNU_MBIND was added in the SHF_LOOS to SHF_HIOS range, it should have required ELFOSABI_GNU since these flags are already in use by other OSes. HPUX SHF_HP_TLS in fact has the same value. That means no place in binutils should test SHF_GNU_MBIND without first checking OSABI, and SHF_GNU_MBIND should not be set without also setting OSABI. At least, that's the ideal, but the patch accepts SHF_GNU_MBIND on ELFOSABI_NONE object files since gas didn't always set OSABI. However, to reinforce the fact that SHF_GNU_MBIND isn't proper without a non-zero OSABI, readelf will display the flag as LOOS+0 if OSABI isn't set. The clash with SHF_HP_TLS means that hppa64-linux either has that flag on .tbss sections or supports GNU_MBIND, not both. (hppa64-linux users, if there are any, may have noticed that GNU ld since 2017 mysteriously aligned their .tbss sections to a 4k boundary. That was one consequence of SHF_HP_TLS being blindly interpreted as SHF_GNU_MBIND.) Since it seems that binutils, gdb, gcc, glibc, and the linux kernel don't care about SHF_HP_TLS I took that flag out of .tbss for hppa64-linux. bfd/ * elf-bfd.h (enum elf_gnu_osabi): Add elf_gnu_osabi_mbind. * elf.c (_bfd_elf_make_section_from_shdr): Set elf_gnu_osabi_mbind. (get_program_header_size): Formatting. Only test SH_GNU_MBIND when elf_gnu_osabi_mbind is set. (_bfd_elf_map_sections_to_segments): Likewise. (_bfd_elf_init_private_section_data): Likewise. (_bfd_elf_final_write_processing): Update comment. * elf64-hppa.c (elf64_hppa_special_sections): Move .tbss entry. (elf_backend_special_sections): Define without .tbss for linux. binutils/ * readelf.c (get_parisc_segment_type): Split off hpux entries.. (get_ia64_segment_type): ..and these.. (get_hpux_segment_type): ..to here. (get_segment_type): Condition GNU_MBIND on osabi. Use get_hpux_segment_type. (get_symbol_binding): Do not print UNIQUE for ELFOSABI_NONE. (get_symbol_type): Do not print IFUNC for ELFOSABI_NONE. gas/ * config/obj-elf.c (obj_elf_change_section): Don't emit a fatal error for non-SHF_ALLOC SHF_GNU_MBIND here. (obj_elf_parse_section_letters): Return SHF_GNU_MBIND in new gnu_attr param. (obj_elf_section): Adjust obj_elf_parse_section_letters call. Formatting. Set SHF_GNU_MBIND and elf_osabi from gnu_attr. Emit normal error for non-SHF_ALLOC SHF_GNU_MBIND and wrong osabi. (obj_elf_type): Set elf_osabi for ifunc. * testsuite/gas/elf/section12a.d: xfail msp430 and hpux. * testsuite/gas/elf/section12b.d: Likewise. * testsuite/gas/elf/section13.d: Likewise. * testsuite/gas/elf/section13.l: Adjust expected error. ld/ * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Condition SHF_GNU_MBIND on osabi. Set output elf_gnu_osabi_mbind. commit 06f44071ccbeca33fff70b928b71d95a15982740 Author: Alan Modra Date: Tue Jul 23 17:46:38 2019 +0930 ELF final_write_processing Move setting of OSABI to final_write_processing, after symbols are written. This allows OSABI to be set based on symbols actually written to the output rather than assuming input symbols will be output. Corrects object files such as the one generated on powerpc64le-linux by ld-powerpc/pr23927.s which has a local STT_GNU_IFUNC symbol but prior to this patch the file was marked ELFOSABI_NONE. * elf-bfd.h (enum elf_gnu_osabi): Rename from elf_gnu_symbols. Remove none, any, all enums. (struct elf_obj_tdata): Rename has_gnu_symbols field to has_gnu_osabi. (_bfd_elf_final_write_processing): Declare. * elf.c (_bfd_elf_write_object_contents): Unconditionally call elf_backend_final_write_processing. (_bfd_elf_post_process_headers): Move body of function to.. (_bfd_elf_final_write_processing): ..here, but set EI_OSABI byte only when not already set. Adjust for rename. * elfxx-target.h (elf_backend_final_write_processing): Default to _bfd_elf_final_write_processing. * elf-hppa.h (elf_hppa_final_write_processing): Call _bfd_elf_final_write_processing. * elf-m10300.c (_bfd_mn10300_elf_final_write_processing): Likewise. * elf-nacl.c (nacl_final_write_processing): Likewise. * elf-vxworks.c (elf_vxworks_final_write_processing): Likewise. * elf32-arc.c (arc_elf_final_write_processing): Likewise. * elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise. * elf32-bfin.c (elf32_bfin_final_write_processing): Likewise. * elf32-cr16.c (_bfd_cr16_elf_final_write_processing): Likewise. * elf32-cris.c (cris_elf_final_write_processing): Likewise. * elf32-h8300.c (elf32_h8_final_write_processing): Likewise. * elf32-lm32.c (lm32_elf_final_write_processing): Likewise. * elf32-m32r.c (m32r_elf_final_write_processing): Likewise. * elf32-m68k.c (elf_m68k_final_write_processing): Likewise. * elf32-msp430.c (bfd_elf_msp430_final_write_processing): Likewise. * elf32-nds32.c (nds32_elf_final_write_processing): Likewise. * elf32-or1k.c (or1k_elf_final_write_processing): Likewise. * elf32-pj.c (pj_elf_final_write_processing): Likewise. * elf32-v850.c (v850_elf_final_write_processing): Likewise. * elf32-xc16x.c (elf32_xc16x_final_write_processing): Likewise. * elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise. * elf64-ia64-vms.c (elf64_vms_final_write_processing): Likewise. * elfnn-ia64.c (elfNN_ia64_final_write_processing): Likewise. * elf32-arm.c (arm_final_write_processing): Split out from.. (elf32_arm_final_write_processing): ..here. Call _bfd_elf_final_write_processing. (elf32_arm_nacl_final_write_processing): Adjust. * elfxx-mips.c (_bfd_mips_final_write_processing): Split out from.. (_bfd_mips_elf_final_write_processing): ..here. Call _bfd_elf_final_write_processing. * elfxx-mips.h (_bfd_mips_final_write_processing): Declare. * elf32-mips.c (mips_vxworks_final_write_processing): Adjust. * elf32-ppc.c (ppc_final_write_processing): Split out from.. (ppc_elf_final_write_processing): ..here. Call _bfd_elf_final_write_processing. (ppc_elf_vxworks_final_write_processing): Adjust. * elf32-sparc.c (sparc_final_write_processing): Split out from.. (elf32_sparc_final_write_processing): ..here. Call _bfd_elf_final_write_processing. (elf32_sparc_vxworks_final_write_processing): Adjust. * elf32-d10v.c (elf_backend_final_write_processing): Don't define. * elf32-d30v.c (elf_backend_final_write_processing): Don't define. * elf32-m68hc11.c (elf_backend_final_write_processing): Don't define. * elf32-m68hc12.c (elf_backend_final_write_processing): Don't define. * elf32-s12z.c (elf_backend_final_write_processing): Don't define. * elf32-i386.c (elf_i386_check_relocs): Don't set has_gnu_symbols. * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise. * elflink.c (elf_link_add_object_symbols): Likewise. (elf_link_output_symstrtab): Set has_gnu_osabi for symbols here instead. commit ec49711a16785636a5b9eac3a92bd00382fcb1a9 Author: Alan Modra Date: Tue Jul 23 17:45:25 2019 +0930 Move ld-scripts size tests Also restore them somewhat closer to the original. They originally failed on many targets, and a month later I "simplified" them as part of a larger patch fixing other failing tests. That unfortunately lost their main purpose, which was to test TLS layout. * testsuite/ld-elf/size-1.d, * testsuite/ld-elf/size-1.s, * testsuite/ld-elf/size-1.t: New test. * testsuite/ld-elf/size-2.d, * testsuite/ld-elf/size-2.s, * testsuite/ld-elf/size-2.t: New test. * testsuite/ld-scripts/size-1.d, * testsuite/ld-scripts/size-1.s, * testsuite/ld-scripts/size-1.t, * testsuite/ld-scripts/size-2.s, * testsuite/ld-scripts/size-2.d, * testsuite/ld-scripts/size-2.t, * testsuite/ld-scripts/size.exp: Delete. commit acea835faa6e14c0b008f001ab145e301ff215f6 Author: Alan Modra Date: Tue Jul 23 17:44:19 2019 +0930 binutils testsuite test for ELF32 vs ELF64 * testsuite/binutils-all/objcopy.exp (elf64): Correct object file used to set this variable. commit 89ebb345e7f5e3ab97638eff7b5914ed2b2e0df1 Author: Alan Modra Date: Tue Jul 23 17:43:28 2019 +0930 gas "mbind sections" test Doesn't fail on rx-elf * testsuite/gas/elf/section12a.d: Don't skip for rx. commit ac79ff9ed2f2d6e87a46146eee28a1d8fa631398 Author: Nick Clifton Date: Tue Jul 23 09:47:06 2019 +0100 Add Changelog entry missing from previous delta. 2019-07-22 Barnaby Wilks * arm-dis.c (is_mve_unpredictable): Stop marking some MVE instructions as UNPREDICTABLE. commit 1dd1bc4daf99ec7ad1f9a6feea8cf4ebe715a92d Author: Omar Majid Date: Tue Jul 23 09:44:57 2019 +0100 Allow objdump to recognise the System.Runtime.dll files that get shipped with .NET Core 2.1. include * coff/i386.h (IMAGE_FILE_MACHINE_NATIVE_APPLE_OVERRIDE): Define. (IMAGE_FILE_MACHINE_NATIVE_FREEBSD_OVERRIDE): Define. (IMAGE_FILE_MACHINE_NATIVE_LINUX_OVERRIDE): Define. (IMAGE_FILE_MACHINE_NATIVE_NETBSD_OVERRIDE): Define. (I386_APPLE_MAGIC): Define. (I386_FREEBSD_MAGIC): Define. (I386_LINUX_MAGIC): Define. (I386_NETBSD_MAGIC): Define. (I386BADMAG): Extend macro to allow new magic numbers. * coff/x86_64.h (IMAGE_FILE_MACHINE_NATIVE_APPLE_OVERRIDE): Define. (IMAGE_FILE_MACHINE_NATIVE_FREEBSD_OVERRIDE): Define. (IMAGE_FILE_MACHINE_NATIVE_LINUX_OVERRIDE): Define. (IMAGE_FILE_MACHINE_NATIVE_NETBSD_OVERRIDE): Define. (AMD64_APPLE_MAGIC): Define. (AMD64_FREEBSD_MAGIC): Define. (AMD64_LINUX_MAGIC): Define. (AMD64_NETBSD_MAGIC): Define. (AMD64BADMAG): Extend macro to allow new magic numbers. bfd * coffcode.h (coff_set_arch_mach_hook): Handle I386_APPLE_MAGIC, I386_FREEBSD_MAGIC, I386_LINUX_MAGIC, I386_NETBSD_MAGIC, AMD64_APPLE_MAGIC, AMD64_FREEBSD_MAGIC, AMD64_LINUX_MAGIC, AMD64_NETBSD_MAGIC. * peXXigen.c: Add comment about source of .NET magic numbers. binutils* Makefile.am (AUTOMAKE_OPTIONS): Add subdir-objects (GENTESTDLLSPROG): Define. (TEST_PROGS): Add GENTESTDLLSPROG. * Makefile.in: Regenerate. * testsuite/binutils-all/objdump.exp (test_objdump_dotnet_assemblies): New proc. Run the new proc. * testsuite/gentestdlls.c: New source file. commit 5ba29434765feed692b6342a8b0f853050be2402 Author: Tom de Vries Date: Tue Jul 23 10:38:33 2019 +0200 [gdb/testsuite] Fix command result testing in mi-complete.exp When running gdb.mi/mi-complete.exp in conjunction with: ... $ stress -c $(($(cat /proc/cpuinfo | grep -c "^processor") + 1)) ... we get less than 50% full passes: ... $ for n in $(seq 1 100); do \ make V=1 -O check \ 'RUNTESTFLAGS=gdb.mi/mi-complete.exp --target_board=unix'; \ done 2>&1 \ | grep "expected passes" | sort | uniq -c 45 # of expected passes 7 9 # of expected passes 8 46 # of expected passes 9 ... A diff between a passing and failing gdb.log shows this difference: ... -&"set max-completions 1\n" 2-complete br +&"set max-completions 1\n" ... The problem is that the test-case issues the "set max-completion " command, and without waiting for the output issues a next command, and tries to parse the results of both commands, expecting a specific interleaving of the various output streams. Fix the FAIL by waiting for the result of the "set max-completion " command before issuing another command. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-07-23 Tom de Vries PR testsuite/24711 * gdb.mi/mi-complete.exp: Wait for "set max-completions" result before issuing next command. commit 89356123a17c27548c7e71f4f000b1f74e551c31 Author: GDB Administrator Date: Tue Jul 23 00:00:36 2019 +0000 Automatic date update in version.in commit bfa2a36d94d124eb7b54fd271a543047579b47ee Author: Tom Tromey Date: Mon Jul 22 08:34:25 2019 -0600 Remove self-assign from make_invisible_and_set_new_height In https://sourceware.org/ml/gdb-patches/2019-07/msg00509.html, Jan pointed out that clang points out that make_invisible_and_set_new_height self-assigns "height". This patch fixes the bug by renaming the formal parameter. gdb/ChangeLog 2019-07-22 Tom Tromey * tui/tui-win.c (tui_win_info::make_invisible_and_set_new_height): Don't self-assign. commit 0c628bba5afd16e0ab3d78ca81ab3f2d5342c50c Author: Srinath Parvathaneni Date: Mon Jul 22 14:46:11 2019 +0100 Fixes the linker testcase "Secure gateway veneers:cmse functions debug information missing" which was failing due to output regular expression mismatch on arm-none-linux-gnueabihf targets. * ld/testsuite/ld-arm/cmse_main_sec_debug.d: Modify regexps to allow for output from a arm-none-linux-gnueabihf target. commit 236ab0c60c9cedecd4fc23b526a588ee25636c13 Author: Barnaby Wilks Date: Mon Jul 22 13:18:27 2019 +0100 This patch addresses the change in the June Armv8.1-M Mainline specification, that marks certain MVE instructions as no longer UNPREDICTABLE when a source operand is the same as a destination operand for a 32-bit element size. The instructions that this change apply to are: VQDMLADH, VQRDMLADH, VQDMLSDH, VQRDMLSDH The updated documentation is here: https://static.docs.arm.com/ddi0553/bh/DDI0553B_h_armv8m_arm.pdf Fixed this by removing the check for this warning from GAS as well as opcodes. Added testcases to test that the warning is not generated for the instructions that have a 32-bit element size and the same source and destination operand. Also fixed tests that would previously check for this warning. gas * config/tc-arm.c (do_mve_vqdmladh): Remove check for UNPREDICTABLE. * testsuite/gas/arm/mve-vqdmladh-bad.l: Remove tests. * testsuite/gas/arm/mve-vqdmladh-bad.s: Remove tests. * testsuite/gas/arm/mve-vqdmladh.d: New tests. * testsuite/gas/arm/mve-vqdmladh.s: New tests. * testsuite/gas/arm/mve-vqdmlsdh-bad.l: Remove tests. * testsuite/gas/arm/mve-vqdmlsdh-bad.s: Remove tests. * testsuite/gas/arm/mve-vqdmlsdh.d: New tests. * testsuite/gas/arm/mve-vqdmlsdh.s: New tests. opcodes * arm-dis.c (is_mve_unpredictable): Stop marking some MVE instructions as UNPREDICTABLE. commit a8e9d2471806ef86ff7aec43164a6fe347efba3b Author: Andrew Burgess Date: Fri Jul 12 11:26:32 2019 +0100 gdb: Show type summary for anonymous structures from c_print_typedef Currently each language has a la_print_typedef method, this is only used for the "info types" command. The documentation for "info types" says: Print a brief description of all types whose names match the regular expression @var{regexp} (or all types in your program, if you supply no argument). However, if we consider this C code: typedef struct { int a; } my_type; Then currently with "info types" this will be printed like this: 3: typedef struct { int a; } my_type; I see two problems with this, first the indentation is clearly broken, second, if the struct contained more fields then it feels like the actual type names could easily get lost in the noise. Given that "info types" is about discovering type names, I think there is an argument to be made that we should focus on giving _only_ the briefest summary for "info types", and if the user wants to know more they can take the type name and plug it into "ptype". As such, I propose that a better output would be: 3: typedef struct {...} my_type; The user understands that there is a type called `my_type`, and that it's an alias for an anonymous structure type. The change to achieve this turns out to be pretty simple, but only effects languages that make use of c_print_typedef, which are C, C++, asm, minimal, d, go, objc, and opencl. Other languages will for now do whatever they used to do. The patch to change how anonymous structs are displayed also changes the display of anonymous enums, consider this code sample: typedef enum { AA, BB, CC } anon_enum_t; This used to be displayed like this: 3: typedef enum {AA, BB, CC} anon_enum_t; Which will quickly become cluttered for enums with a large number of values. The modified output looks like this: 3: typedef enum {...} anon_enum_t; Again, the user can always make use of ptype if they want to see the details of the anon_enum_t type. It is worth pointing out that this change (to use {...}) only effects anonymous structs and enums, named types don't change with this patch, consider this code: struct struct_t { int i; }; enum enum_t { AA, BB, CC }; The output from 'info types' remains unchanged, like this: 4: enum enum_t; 1: struct struct_t; An additional area of interest is how C++ handles anonymous types used within a typedef; enums are handled basically inline with how C handles them, but structs (and classes) are slightly different. The behaviour before the patch is different, and is unchanged by this patch. Consider this code compiled for C++: typedef struct { int i; } struct_t; Both before and after this patch, this is show by 'info types' as: 3: typedef struct_t struct_t; Unions are displayed similarly to structs in both C and C++, the handling of anonymous unions changes for C in the same way that it changes for anonymous structs. I did look at ada, as this is the only language to actually have some tests for "info types", however, as I understand it ada doesn't really support typedefs, however, by forcing the language we can see what ada would print. So, if we 'set language ada', then originally we printed this: 3: record a: int; end record Again the indentation is clearly broken, but we also have no mention of the type name at all, which is odd, but understandable given the lack of typedefs. If I make a similar change as I'm proposing for C, then we now get this output: 3: record ... end record Which is even less informative I think. However, the original output _is_ tested for in gdb.ada/info_auto_lang.exp, and its not clear to me if the change is a good one or not, so for now I have left this out. gdb/ChangeLog: * c-typeprint.c (c_print_typedef): Pass -1 instead of 0 to type_print. gdb/testsuite/ChangeLog: * gdb.ada/info_auto_lang.exp: Update expected results. * gdb.base/info-types.c: Add additional types to check. * gdb.base/info-types.exp: Update expected results. commit eb86c5e2e824787875187901b12fba52ef873278 Author: Andrew Burgess Date: Tue Jul 9 18:05:59 2019 +0100 gdb: Improve output from "info types" commad This commit makes two changes to the "info types" command: First, only use typedef_print for printing typedefs, and use type_print for printing non-typedef scalar (non-struct) types. The result of this is the output for builtin types goes from this: typedef double; typedef float; typedef int; to this: double; float; int; which seems to make more sense. Next GDB no longer matches msymbols as possible type names. When looking for function symbols it makes sense to report matching msymbols from the text sections, and for variables msymbols from the data/bss sections, but when reporting types GDB would match msymbols of type absolute. But I don't see why these are likely to indicate type names. As such I've updated the msymbol matching lists in symtab.c:search_symbols so that when searching in the TYPES_DOMAIN, we never match any msymbols. gdb/ChangeLog: * symtab.c (search_symbols): Adjust msymbol matching type arrays so that GDB doesn't match any msymbols when searching in the TYPES_DOMAIN. (print_symbol_info): Print using typedef_print or type_print based on the type of the symbol. Add updated FIXME comment moved from... (_initialize_symtab): ... move and update FIXME comment to above. gdb/testsuite/ChangeLog: * gdb.base/info-types.c: New file. * gdb.base/info-types.exp: New file. commit a8eab7c6d529ddd248ff5243bb22e9346196e376 Author: Andrew Burgess Date: Thu Jul 11 21:02:59 2019 +0100 gdb: Switch "info types" over to use the gdb::options framework Adds a new -q flag to "info types" using the gdb::option framework. This -q flag is similar to the -q flag already present for "info variables" and "info functions". gdb/ChangeLog: * NEWS: Mention adding -q option to "info types". * symtab.c (struct info_types_options): New struct. (info_types_options_defs): New variable. (make_info_types_options_def_group): New function. (info_types_command): Use gdb::option framework to parse options. (info_types_command_completer): New function. (_initialize_symtab): Extend the help text on "info types" and register command completer. gdb/doc/ChangeLog: * gdb.texinfo (Symbols): Add information about -q flag to "info types". commit b4603c34644847e2113e8c29408db09049c5c30f Author: Christian Biesinger Date: Sun Jul 21 22:27:07 2019 -0500 Add ChangeLog entry for the last commit Forgot to commit before pushing :( commit c32e6a04f42b8e4a1392ee4b87d040c06b917ef5 Author: Christian Biesinger Date: Thu Jul 11 13:35:13 2019 -0500 Use block_enum instead of int for better typesafety gdb/ChangeLog: 2019-07-21 Christian Biesinger * symtab.c (lookup_symbol_in_objfile_symtabs): Change int to block_enum. (lookup_symbol_in_objfile): Change int to block_enum and add a gdb_assert to make sure block_index is GLOBAL_BLOCK or STATIC_BLOCK. commit c8cdc1e08312a238a9138b55ae080ceeab14845c Author: Christian Biesinger Date: Sat Jul 20 11:55:32 2019 -0500 [FYI] Add myself to gdb/MAINTAINERS gdb/Changelog: * MAINTAINERS (Write After Approval): Add myself. commit 7fec04c365ae2468d283fb3529a9ea334d6e528f Author: GDB Administrator Date: Mon Jul 22 00:00:29 2019 +0000 Automatic date update in version.in commit 86ceaf9867288530af927aa98680526c897cf4cc Author: Kevin Buettner Date: Wed Jun 26 19:38:24 2019 -0700 Make documentation of "python" command match actual behavior The example in the documentation for the "python" command shows GDB outputting instructions for how to terminate a sequence of python commands entered from the command line. The documentation shows that the following two lines are being output, though this does not occur when actually using the "python" command from GDB: Type python script End with a line saying just "end". While display of this text might be helpful, GDB has several other commands which also use the "end" terminator that offer no such text. Examples include the "if" and "while" commands. For example, (gdb) if 1==1 >print "a" >end $1 = "a" This seems similar to doing: (gdb) python >print 23 >end 23 If we decide that we want the "python" command to print such a message, we should also adjust the behavior for other GDB commands which also use "end" to terminate a command list. I.e, if this decision is made, the "if" and "while" commands ought to also print similar messages. So, for the moment anyway, this commit adjusts the documentation of the python command to match its implementation. This patch was taken from a larger body of work originating from the Archer project. I haven't been able to determine its original author, though I did find a commit log from Jan Kratochvil (in the Archer repository) which suggests that the change had originally been made to gdb.texinfo, but got inadvertently dropped when the python related documentation was split out to python.texi. gdb/doc/ChangeLog: * python.texi (python command): Revise example to match command behavior. commit f720d67c59a4c7e6bf92538c6bfc8dc76f7c7224 Author: GDB Administrator Date: Sun Jul 21 00:00:45 2019 +0000 Automatic date update in version.in commit 9ab3a74416dac187d56fcf292b39b681d1362dae Author: Alan Modra Date: Sat Jul 20 10:47:20 2019 +0930 PR24827, Linker loops forever if unterminated multi-line comment in script YY_INPUT returns 0 on end of input, not EOF. PR 24827 * ldlex.l (comment): Check for 0 return from input(), not EOF. commit bcbaec5c407a9301ed987d380ac49426a84c3a0e Author: GDB Administrator Date: Sat Jul 20 00:00:24 2019 +0000 Automatic date update in version.in commit 01e175fe1b21950982642713513e442fc09614e6 Author: Andrew Burgess Date: Fri Jul 19 10:34:47 2019 +0100 gdb/riscv: Write 4-byte nop to dummy code region before inferior calls When making inferior function calls GDB sets up a dummy code region on the stack, and places a breakpoint within that region. If the random stack contents appear to be a compressed instruction then GDB will place a compressed breakpoint, which can cause problems if the target doesn't support compressed instructions. This commit prevents this issue by writing a 4-byte nop instruction to the dummy region at the time the region is allocated. With this nop instruction in place, when we come to insert the breakpoint then an uncompressed breakpoint will be used. This is similar to other targets, for example mips. gdb/ChangeLog: * riscv-tdep.c (riscv_push_dummy_code): Write a 4-byte nop instruction to the dummy code region. gdb/testsuite/ChangeLog: * gdb.arch/riscv-bp-infcall.c: New file. * gdb.arch/riscv-bp-infcall.exp: New file. commit ec38ac465d632cbc7fbecffcaadb7c6ffc4b5f39 Author: H.J. Lu Date: Fri Jul 19 11:07:59 2019 -0700 x86: Pass -O0 to assembler in noextreg.d * testsuite/gas/i386/noextreg.d: Pass -O0 to assembler. commit 56f79b630766bb134400b4a8da43941cfc31c0c0 Author: Tom Tromey Date: Mon Jul 15 10:41:18 2019 -0600 Change ARI to mention C++11, and remove some rules I noticed that ARI mentions "ISO C 90", but now gdb uses C++11. This patch updates some text to reflect this change. I also noticed that a few rules can be removed now. ARGSUSED doesn't seem to be an issue any more (there's no code mentioning this and I doubt most of us even remember this convention); PARAMS was specific to K&R C; and __func__ is available in C++11. gdb/ChangeLog 2019-07-19 Tom Tromey * contrib/ari/gdb_ari.sh: Mention C++11, not ISO C 90. (ARGSUSED, PARAMS, __func__): Remove rules. commit 4c5aa8e0b1b4439f73ef1f82344e408b989f85df Author: Alan Hayward Date: Fri Jul 19 15:06:38 2019 +0100 Arm: Remove unused feature files and tests Remove the xml tests. Now that it has been proven the new descriptions are identical, there is no need to keep testing that. Also, it would prevent the old xml files from being removed. Remove the old xml files from gdbserver and delete them. gdb/ChangeLog: * arm-tdep.c (_initialize_arm_tdep): Remove xml tests. * features/arm/arm-with-iwmmxt.c: Remove. * features/arm/arm-with-iwmmxt.xml: Remove. * features/arm/arm-with-m-fpa-layout.c: Remove. * features/arm/arm-with-m-fpa-layout.xml: Remove. * features/arm/arm-with-m-vfp-d16.c: Remove. * features/arm/arm-with-m-vfp-d16.xml: Remove. * features/arm/arm-with-m.c: Remove. * features/arm/arm-with-m.xml: Remove. * features/arm/arm-with-neon.c: Remove. * features/arm/arm-with-neon.xml: Remove. * features/arm/arm-with-vfpv2.c: Remove. * features/arm/arm-with-vfpv2.xml: Remove. * features/arm/arm-with-vfpv3.c: Remove. * features/arm/arm-with-vfpv3.xml: Remove. gdb/gdbserver/ChangeLog: 2019-07-05 Alan Hayward * configure.srv: Remove Arm xml files. commit 7cc17433020a62935e4d91053251fe900d83c7f0 Author: Alan Hayward Date: Fri Jul 19 15:04:48 2019 +0100 Arm: Use read_description funcs in gdbserver Switch gdbserver over to using feature target descriptions. Add a function for determining the type of a given target description, and use where required. gdb/gdbserver/ChangeLog: * configure.srv: Add new files. Remove xml generated files. * linux-aarch32-low.c (initialize_low_arch_aarch32): Don't init registers. * linux-aarch32-low.h (tdesc_arm_with_neon): Remove. * linux-aarch32-tdesc.c: New file. * linux-aarch32-tdesc.h: New file. * linux-aarch64-low.c (aarch64_arch_setup): Call aarch32_linux_read_description. * linux-arm-low.c (init_registers_arm, tdesc_arm) (init_registers_arm_with_iwmmxt, tdesc_arm_with_iwmmxt) (init_registers_arm_with_vfpv2, tdesc_arm_with_vfpv2) (init_registers_arm_with_vfpv3, tdesc_arm_with_vfpv3): Remove. (arm_fill_wmmxregset, arm_store_wmmxregset, arm_fill_vfpregset) (arm_store_vfpregset): Call arm_linux_get_tdesc_fp_type. (arm_read_description): Call arm_linux_read_description. (initialize_low_arch): Don't init registers. * linux-arm-tdesc.c: New file. * linux-arm-tdesc.h: New file. commit f42b26179a8606d31959207a2d8eb8582b650c99 Author: Alan Hayward Date: Fri Jul 19 15:02:41 2019 +0100 Arm: Add xml unit tests Use the record_xml_tdesc tests to prove the new target descriptions are identical to the previous xml file ones. This is tested as part of gdb.gdb/unittest.exp. gdb/ChangeLog: * arm-tdep.c (_initialize_arm_tdep): Add xml regression tests. commit f29ec966436f98e761f7a2a7183ad8ebab68c2ea Author: Alan Hayward Date: Fri Jul 19 15:01:11 2019 +0100 Arm: Use feature target descriptions In arm arm_create_target_description and aarch32_create_target_description create feature based target descriptions instead of returning the old style descriptions. Ensure the descriptions are created in exactly the same way as the old xml files. Remove the old initialize calls. gdb/ChangeLog: * arch/aarch32.c (aarch32_create_target_description): Create target descriptions using features. * arch/arm.c (arm_create_target_description) (arm_create_mprofile_target_description): Likewise. * arm-tdep.c (_initialize_arm_tdep): Remove tdesc init calls. commit d105cce5dd8d6a5218b044fc161ce89c6b245432 Author: Alan Hayward Date: Fri Jul 19 14:59:10 2019 +0100 Arm: Add read_description read funcs and use in GDB Switch the Arm target to get target descriptions via arm_read_description and aarch32_read_description, in the same style as other feature targets. Add an enum to specify the different types - this will also be of use to gdbserver in a later patch. Under the hood return the same existing pre-feature target descriptions. gdb/ChangeLog: * Makefile.in: Add new files. * aarch32-tdep.c: New file. * aarch32-tdep.h: New file. * aarch64-linux-nat.c (aarch64_linux_nat_target::read_description): Call aarch32_read_description. * arch/aarch32.c: New file. * arch/aarch32.h: New file. * arch/arm.c (arm_create_target_description) (arm_create_mprofile_target_description): New function. * arch/arm.h (arm_fp_type, arm_m_profile_type): New enum. (arm_create_target_description) (arm_create_mprofile_target_description): New declaration. * arm-fbsd-tdep.c (arm_fbsd_read_description_auxv): Call read_description functions. * arm-linux-nat.c (arm_linux_nat_target::read_description): Likewise. * arm-linux-tdep.c (arm_linux_core_read_description): Likewise. * arm-tdep.c (tdesc_arm_list): New variable. (arm_register_g_packet_guesses): Call create description functions. (arm_read_description) (arm_read_mprofile_description): New function. * arm-tdep.h (arm_read_description) (arm_read_mprofile_description): Add declaration. * configure.tgt: Add new files. commit 231097b03afffd0c5a2b520cd999dbcbe8d64eda Author: Jose E. Marchesi Date: Fri Jul 19 15:35:43 2019 +0200 cpu,opcodes,gas: use %r0 and %r6 instead of %a and %ctf in eBPF disassembler This patch changes the eBPF CPU description to prefer the register names %r0 and %r6 instead of %a and %ctx when disassembling. This matches better with the current practice, vs. cBPF. It also updates the GAS tests in order to reflect this change. Tested in a x86_64 host. cpu/ChangeLog: 2019-07-19 Jose E. Marchesi * bpf.cpu (h-gpr): when disassembling, use %r0 and %r6 instead of %a and %ctx. opcodes/ChangeLog: 2019-07-19 Jose E. Marchesi * bpf-desc.c: Regenerated. gas/ChangeLog: 2019-07-19 Jose E. Marchesi * testsuite/gas/bpf/alu.d: Use %r6 instead of %ctx. * testsuite/gas/bpf/lddw-be.d: Likewise. * testsuite/gas/bpf/lddw.d: Likewise. * testsuite/gas/bpf/alu-be.d: Likewise. * testsuite/gas/bpf/alu32.d: Likewise. commit 1802aae8449a4d693ba1f4efb8a7917c2f20990b Author: Jose E. Marchesi Date: Fri Jul 19 15:35:02 2019 +0200 gas: make .lcomm to accept an optional aligmnet in eBPF targets Tested in a x86_64 host. gas/ChangeLog: 2019-07-19 Jose E. Marchesi * config/tc-bpf.c (pe_lcomm_internal): Adapted from tc-i386.c. (pe_lcomm): Likewise. (md_pseudo_table): Use pe_lcomm to implement .lcomm. commit ccbdd22fb96b8680ebeaecd829e8e51958845a8f Author: Richard Sandiford Date: Fri Jul 19 12:18:02 2019 +0100 [AArch64] Rename +bitperm to +sve2-bitperm After some discussion, we've decided to rename the +bitperm feature flag to +sve2-bitperm, so that it's consistent with the other SVE2 feature flags. The associated internal macros already used "SVE2_BITPERM", so only the feature flag itself needs to change. 2019-07-19 Richard Sandiford gas/ * doc/c-aarch64.texi: Remame the +bitperm extension to +sve2-bitperm. * config/tc-aarch64.c (aarch64_features): Likewise. * testsuite/gas/aarch64/illegal-sve2-aes.d: Update accordingly. * testsuite/gas/aarch64/illegal-sve2-sha3.d: Likewise. * testsuite/gas/aarch64/illegal-sve2-sm4.d: Likewise. * testsuite/gas/aarch64/illegal-sve2.d: Likewise. * testsuite/gas/aarch64/sve2.d: Likewise. commit c213164ad2505cba5263602b7f9fa9a4dd1adf39 Author: Alan Modra Date: Fri Jul 19 15:36:58 2019 +0930 [PowerPC64] pc-relative TLS relocations This patch supports using pcrel instructions in TLS code sequences. A number of new relocations are needed, gas operand modifiers to generate those relocations, and new TLS optimisation. For optimisation it turns out that the new pcrel GD and LD sequences can be distinguished from the non-pcrel GD and LD sequences by there being different relocations on the new sequence. The final "add ra,rb,13" on IE sequences similarly needs a new relocation, or as I chose, a modification of R_PPC64_TLS. On pcrel IE code, the R_PPC64_TLS points one byte into the "add" instruction rather than being on the instruction boundary. GD: pla 3,z@got@tlsgd@pcrel # R_PPC64_GOT_TLSGD34 bl __tls_get_addr@notoc(z@tlsgd) # R_PPC64_TLSGD and R_PPC64_REL24_NOTOC edited to IE pld 3,z@got@tprel@pcrel add 3,3,13 edited to LE paddi 3,13,z@tprel nop LD: pla 3,z@got@tlsld@pcrel # R_PPC64_GOT_TLSLD34 bl __tls_get_addr@notoc(z@tlsld) # R_PPC64_TLSLD and R_PPC64_REL24_NOTOC .. paddi 9,3,z2@dtprel pld 10,z3@got@dtprel@pcrel add 10,10,3 edited to LE paddi 3,13,0x1000 nop IE: pld 9,z@got@tprel@pcrel # R_PPC64_GOT_TPREL34 add 3,9,z@tls@pcrel # R_PPC64_TLS at insn+1 ldx 4,9,z@tls@pcrel lwax 5,9,z@tls@pcrel stdx 5,9,z@tls@pcrel edited to LE paddi 9,13,z@tprel nop ld 4,0(9) lwa 5,0(9) std 5,0(9) LE: paddi 10,13,z@tprel include/ * elf/ppc64.h (R_PPC64_TPREL34, R_PPC64_DTPREL34), (R_PPC64_GOT_TLSGD34, R_PPC64_GOT_TLSLD34), (R_PPC64_GOT_TPREL34, R_PPC64_GOT_DTPREL34): Define. (IS_PPC64_TLS_RELOC): Include new tls relocs. bfd/ * reloc.c (BFD_RELOC_PPC64_TPREL34, BFD_RELOC_PPC64_DTPREL34), (BFD_RELOC_PPC64_GOT_TLSGD34, BFD_RELOC_PPC64_GOT_TLSLD34), (BFD_RELOC_PPC64_GOT_TPREL34, BFD_RELOC_PPC64_GOT_DTPREL34), (BFD_RELOC_PPC64_TLS_PCREL): New pcrel tls relocs. * elf64-ppc.c (ppc64_elf_howto_raw): Add howtos for pcrel tls relocs. (ppc64_elf_reloc_type_lookup): Translate pcrel tls relocs. (must_be_dyn_reloc, dec_dynrel_count): Add R_PPC64_TPREL64. (ppc64_elf_check_relocs): Support pcrel tls relocs. (ppc64_elf_tls_optimize, ppc64_elf_relocate_section): Likewise. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. gas/ * config/tc-ppc.c (ppc_elf_suffix): Map "tls@pcrel", "got@tlsgd@pcrel", "got@tlsld@pcrel", "got@tprel@pcrel", and "got@dtprel@pcrel". (fixup_size, md_assemble): Handle pcrel tls relocs. (ppc_force_relocation, ppc_fix_adjustable): Likewise. (md_apply_fix, tc_gen_reloc): Likewise. ld/ * testsuite/ld-powerpc/tlsgd.d, * testsuite/ld-powerpc/tlsgd.s, * testsuite/ld-powerpc/tlsie.d, * testsuite/ld-powerpc/tlsie.s, * testsuite/ld-powerpc/tlsld.d, * testsuite/ld-powerpc/tlsld.s: New tests. * testsuite/ld-powerpc/powerpc.exp: Run them. commit 7a708984176cc2d247d7dd96d84c7d7501bae6eb Author: Alan Modra Date: Fri Jul 19 14:30:36 2019 +0930 [PowerPC] Rename testcase Just making room for a new tlsld test. * testsuite/ld-powerpc/tlsldopt.d: Rename from tlsld.d. * testsuite/ld-powerpc/tlsldopt.s: Rename from tlsld.s. * testsuite/ld-powerpc/tlsldopt32.d: Rename from tlsld32.d. * testsuite/ld-powerpc/tlsldopt32.s: Rename from tlsld32.s. * testsuite/ld-powerpc/powerpc.exp: Update. commit 88468fe09628974cde7dc891d088cc1e0015fa0d Author: Alan Modra Date: Fri Jul 19 17:07:36 2019 +0930 Re: ld -r: Don't merge with member of output section group PR 24819 * testsuite/ld-elf/pr24819.d: xfail for genelf targets. commit 6cbb8e87ee4682c47eafbec670d62ea2a7a89540 Author: GDB Administrator Date: Fri Jul 19 00:00:39 2019 +0000 Automatic date update in version.in commit 12a0b67d289e2c3ed266d93e8a8c80087f7d18f8 Author: Nick Alcock Date: Thu Jul 18 18:44:21 2019 +0100 libctf: introduce ctf_func_type_{info,args}, ctf_type_aname_raw The first two of these allow you to get function type info and args out of the types section give a type ID: astonishingly, this was missing from libctf before now: so even though types of kind CTF_K_FUNCTION were supported, you couldn't find out anything about them. (The existing ctf_func_info and ctf_func_args only allow you to get info about functions in the function section, i.e. given symbol table indexes, not type IDs.) The second of these allows you to get the raw undecorated name out of the CTF section (strdupped for safety) without traversing subtypes to build a full C identifier out of it. It's useful for things that are already tracking the type kind etc and just need an unadorned name. include/ * ctf-api.h (ECTF_NOTFUNC): Fix description. (ctf_func_type_info): New. (ctf_func_type_args): Likewise. libctf/ * ctf-types.c (ctf_type_aname_raw): New. (ctf_func_type_info): Likewise. (ctf_func_type_args): Likewise. * ctf-error.c (_ctf_errlist): Fix description. commit afe09f0b6311a4dd1a7e2dc6491550bb228734f8 Author: Guillaume LABARTHE Date: Thu Jul 18 17:20:04 2019 +0100 Fix for using named pipes on Windows On Windows, passing a named pipe as terminal argument to the new-ui command does not work. The problem is that the new_ui_command function in top.c opens the same tty three times, for stdin, stdout and stderr. With Windows named pipes, the second and third calls to open fail. Opening the file only once and passing the same stream for stdin, stdout and stderr makes it work. Pedro says: I tried it on GNU/Linux and things still work. I ran all the MI tests with forced new-ui, with: $ make check TESTS="gdb.mi/*.exp" RUNTESTFLAGS="FORCE_MI_SEPARATE_UI=1" and saw no regressions. gdb/ChangeLog: 2019-07-18 Guillaume LABARTHE * top.c (new_ui_command): Open specified terminal just once. commit cd215b2eb74c179d936a3b28577753a08de1cf83 Author: Tom Tromey Date: Thu Jul 18 09:29:15 2019 -0600 Constify main_name This patch constifies the return type of main_name. There is a comment indicating that this wasn't possible at some point in the past, but whatever the barrier was, it is gone now. Tested by rebuilding. gdb/ChangeLog 2019-07-18 Tom Tromey * symtab.c (main_name): Constify return type. * symfile.c (set_initial_language): Update. * symtab.h (main_name): Constify return type. commit 54d7dae59a2239720c848985a7d50a0a8b3319eb Author: H.J. Lu Date: Thu Jul 18 08:01:45 2019 -0700 ld -r: Don't merge with member of output section group When doing a relocatable link, members of input section group are placed in their own output sections. We need to make sure that no input sections are merged with member of output section group. PR ld/24819 * emultempl/elf32.em (elf_orphan_compatible): Return FALSE for member of output section group when doing a relocatable link. * testsuite/ld-elf/pr24819.d: New file. * testsuite/ld-elf/pr24819.s: Likewise. commit 71c4e95abe66ec9fc2c064268e3f9640a5b951d8 Author: Alan Modra Date: Thu Jul 18 11:12:40 2019 +0930 [PowerPC64] Use STN_UNDEF internally for edited relocs It's not correct to use non-STT_TLS symbols with TLS relocation, not that it matters much when editing relocs, but this edited reloc can be output by --emit-relocs. So don't use a symbol on the reloc. * elf64-ppc.c (ppc64_elf_relocate_section): Don't bother selecting a TLS section symbol for edited relocs. Tighten TLS symbol/reloc match test. commit 46e9995a207140408309dbea40c64f11843db777 Author: Alan Modra Date: Thu Jul 18 11:04:06 2019 +0930 [PowerPC64] Don't store TLS_EXPLICIT in tls_mask This saves a bit in tls_mask, and fixes a bug that could be triggered in the unlikely case that both @got (usual ELF style) and @toc (PowerOpen style) code was used to set up args for __tls_get_addr. * elf64-ppc.c (TLS_EXPLICIT): Define as 256. (ppc64_elf_check_relocs): Don't store TLS_EXPLICIT even if char is more than 8 bits. (ppc64_elf_tls_optimize): Likewise. Make tls_set, tls_clear, and tls_type vars unsigned int. (ppc64_elf_relocate_section): Use r_type rather than TLS_EXPLICIT to select r_type edit. commit b00a0a86c40c681cf4b22a3630f85188ac849721 Author: Alan Modra Date: Thu Jul 18 10:58:01 2019 +0930 [PowerPC] Rename TLS_TPRELGD to TLS_GDIE Choose a better name, that reflects why the flag is set (GD to IE optimisation) rather than what the flag produces (TPREL64 reloc on a single GOT entry replacing a tls_index pair). * elf32-ppc.c (TLS_GDIE): Rename from TLS_TPRELGD throughout file. Correct comment. * elf64-ppc.c (TLS_GDIE): Likewise. commit 0b1474281c659919d9c63ccfd6891b9e9ed0fc9c Author: Alan Modra Date: Thu Jul 18 10:31:44 2019 +0930 [PowerPC64] correct tprel offset limit I don't expect anyone will have hit this bug. You'd need a TLS segment of 2G before you'd notice. * elf64-ppc.c (ppc64_elf_tls_optimize): Correct test for allowed range of tp-relative offsets. commit d0044bac9eb6c5476d29c41872bcf8f74a990d4f Author: Jose E. Marchesi Date: Wed Jul 17 23:18:41 2019 +0200 gas: .lcomm gets an alignment argument in eBPF gas/ChangeLog: 2019-07-17 Jose E. Marchesi * config/tc-bpf.c: Make .lcomm to get a third argument with the alignment. commit f264fab3cd9364073ccf7c32f29d0f1aa7c99159 Author: GDB Administrator Date: Thu Jul 18 00:00:14 2019 +0000 Automatic date update in version.in commit e0b989a6d74efbcdadac4974d0b8520ac31cd9b6 Author: Jose E. Marchesi Date: Wed Jul 17 22:57:23 2019 +0200 gas: support .half, .word and .dword directives in eBPF This little patch adds support to the eBPF port of GAS for a few data directives. The names for the directives have been chosen to be coherent with the suffixes used in eBPF instructions: b, h, w and dw for 8, 16, 32 and 64-bit values respectively. Documentation and tests included. Tested in a x86_64 host. gas/ChangeLog: 2019-07-17 Jose E. Marchesi * config/tc-bpf.c (md_pseudo_table): .half, .word and .dword. * testsuite/gas/bpf/data.s: New file. * testsuite/gas/bpf/data.d: Likewise. * testsuite/gas/bpf/data-be.d: Likewise. * testsuite/gas/bpf/bpf.exp: Run data and data-be. * doc/c-bpf.texi (BPF Directives): New section. commit d8f68fcb9378b5ab1c945fa676e11da15be56dd6 Author: Tom Tromey Date: Thu Jul 4 10:09:36 2019 -0600 Remove unnecessary "return"s The TUI has some "return;" statements at the end of void-returning functions. There's no need for these, so this patch removes them. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_update_source_window) (tui_update_source_window_as_is) (tui_update_source_windows_with_line): Remove return. * tui/tui-disasm.c (tui_show_disassem) (tui_show_disassem_and_update_source): Remove return. * tui/tui.c (tui_reset): Remove return. * tui/tui-wingeneral.c (tui_check_and_display_highlight_if_needed): Remove return. commit ca5af91ed271a12200bb40ccfaaede4baef6f5fe Author: Tom Tromey Date: Tue Jul 2 17:31:44 2019 -0600 Fix an error in parse_scrolling_args parse_scrolling_args combines two errors into one message, which also happens to end with a newline. This separates the errors and fixes the message. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-win.c (parse_scrolling_args): Throw separate errors. commit 5104fe361d818a46b262b5d504f3d293c9a2b44a Author: Tom Tromey Date: Tue Jul 2 17:07:02 2019 -0600 Move source window common to code to tui-winsource.[ch] Like the previous rearranging patches, this moves the source and disassembly window base class code to tui-winsource.[ch]. The execution info window is also moved, because it is associated with this base class. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.h (struct tui_exec_info_window) (struct tui_source_window_base): Move from tui-data.h. * tui/tui-winsource.c: Move many method definitions from elsewhere. Remove "structuring" comments. * tui/tui-wingeneral.c (tui_source_window_base::make_visible) (tui_source_window_base::refresh_window): Move to tui-winsource.c. * tui/tui-win.c (tui_source_window_base::refresh_all) (tui_source_window_base::update_tab_width) (tui_source_window_base::set_new_height) (tui_source_window_base::do_make_visible_with_new_height): Move to tui-winsource.c. * tui/tui-source.h: Update. * tui/tui-source.c (tui_source_window_base::reset): Move to tui-winsource.c. * tui/tui-disasm.h: Update. * tui/tui-data.h (struct tui_exec_info_window): Move to tui-winsource.h. (struct tui_source_window_base): Likewise. * tui/tui-data.c (tui_source_window_base::clear_detail) (tui_source_window_base, ~tui_source_window_base): Move to tui-winsource.c. commit daa15dde7202d948da694bdfe0df9e5294c7ee9a Author: Tom Tromey Date: Tue Jul 2 17:05:49 2019 -0600 Change make_invisible_and_set_new_height to be a method This changes make_invisible_and_set_new_height to be a method on tui_win_info. I felt that this was cleaner. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-win.c (tui_resize_all) (tui_source_window_base::update_tab_width) (tui_adjust_win_heights): Update. (tui_win_info::make_invisible_and_set_new_height): Rename from make_invisible_and_set_new_height. * tui/tui-data.h (struct tui_win_info) : New method. commit bfad4537079109d9c41ecd86af9cf84b6825a192 Author: Tom Tromey Date: Tue Jul 2 15:55:01 2019 -0600 Move tui_source_window to tui-source.h This moves tui_source_window to tui-source.h. In this case there were no method definitions to be moved. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui.c: Update. * tui/tui-source.h (struct tui_source_window): Move from tui-data.h. * tui/tui-layout.c: Update. * tui/tui-disasm.c: Update. * tui/tui-data.h (struct tui_source_window): Move to tui-source.h. commit 88f7e873362279462c676b26fee62376dba82b5c Author: Tom Tromey Date: Tue Jul 2 15:54:08 2019 -0600 Move tui_disasm_window to tui-disasm.h This moves tui_disasm_window to tui-disasm.h. In this case there were no method definitions to be moved. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-disasm.h (struct tui_disasm_window): Move from tui-data.h. * tui/tui-data.h (struct tui_disasm_window): Move to tui-disasm.h. commit 96bd6233af7c01885de4f4de3a4016014d61d859 Author: Tom Tromey Date: Tue Jul 2 15:51:00 2019 -0600 Move TUI data item window to tui-regs.h The TUI data item window is only used by the TUI register window. So, this patch moves the relevant code to tui-regs.[ch]. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.h (struct tui_data_item_window): Move from tui-data.h. * tui/tui-regs.c (tui_data_item_window): Move from tui-data.c. * tui/tui-data.h (struct tui_data_item_window): Move to tui-regs.h. * tui/tui-data.c (~tui_data_item_window): Move to tui-regs.c. commit ce38393b1abc2573d6521d11ab1fbfb5a28e5109 Author: Tom Tromey Date: Tue Jul 2 15:48:59 2019 -0600 Move TUI command window code Like the earlier change to the data window, this moves the TUI command window code to tui-command.[ch], and removes the old "structuring" comments from tui-command.c. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui.c: Update. * tui/tui-win.c (tui_cmd_window::do_make_visible_with_new_height) (tui_cmd_window::max_height): Move to tui-command.c. * tui/tui-layout.c: Update. * tui/tui-data.h (struct tui_cmd_window): Move to tui-command.h. * tui/tui-data.c (tui_cmd_window::clear_detail): Move to tui-command.c. * tui/tui-command.h (struct tui_cmd_window): Move from tui-data.h. * tui/tui-command.c: Remove "structuring" comments. (tui_cmd_window::clear_detail) (tui_cmd_window::do_make_visible_with_new_height) (tui_cmd_window::max_height): Move from elsewhere. commit 2d8b51cba307333b6a068296d9668cd01164de28 Author: Tom Tromey Date: Tue Jul 2 15:43:00 2019 -0600 Move tui_dispatch_ctrl_char to tui-io.c tui_dispatch_ctrl_char is only called from a single spot in tui-io.c, so move the function to that file and make it static. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-io.c (tui_dispatch_ctrl_char): Move from tui-command.c. Now static. * tui/tui-command.h (tui_dispatch_ctrl_char): Don't declare. * tui/tui-command.c (tui_dispatch_ctrl_char): Move to tui-io.c. commit 18ab23af8b3d473f795ce48ee54a47e1a3e7ae47 Author: Tom Tromey Date: Tue Jul 2 15:41:08 2019 -0600 Rearrange TUI data window code An earlier patch caused tui-windata.h to be essentially empty. And, other earlier patches implemented TUI data window methods in any spot that happened to be convenient at the time. This patch rearranges all the data window code to be somewhat more organized. It moves tui_data_window to tui-regs.h, and moves the implementation of all methods to tui-regs.c. It then removes tui-windata.h and tui-windata.c. It also removes the "structuring" comments from tui-regs.c; these are not the usual gdb style, and were out of date anyhow. Finally, it moves _initialize_tui_regs to the end of the file, per the usual gdb convention. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui.c: Update. * tui/tui-wingeneral.c (tui_data_window::refresh_window): Move to tui-regs.c. * tui/tui-windata.h: Remove file. * tui/tui-windata.c: Remove file. * tui/tui-win.c (tui_data_window::set_new_height) (tui_data_window::do_make_visible_with_new_height): Move to tui-regs.c. * tui/tui-regs.h (struct tui_data_window): Move from tui-data.h. * tui/tui-regs.c: Remove "structuring" comments. (tui_data_window::first_data_item_displayed) (tui_data_window::delete_data_content_windows) (tui_data_window::erase_data_content) (tui_data_window::display_all_data) (tui_data_window::refresh_all) (tui_data_window::do_scroll_vertical) (tui_data_window::clear_detail, tui_data_window::set_new_height) (tui_data_window::do_make_visible_with_new_height) (tui_data_window::refresh_window): Move from elsewhere. (_initialize_tui_regs): Move to end of file. * tui/tui-layout.c: Update. * tui/tui-hooks.c: Update. * tui/tui-data.h (struct tui_data_window): Move to tui-regs.h. * tui/tui-data.c (tui_data_window::clear_detail): Move to tui-regs.c. * Makefile.in (SUBDIR_TUI_SRCS): Remove tui-windata.c. commit 88b7e7ccb958220adabc307e6d38fc66877820fb Author: Tom Tromey Date: Tue Jul 2 15:18:27 2019 -0600 Fix flushing bug in tui_puts_internal A while back I changed gdb not to flush in some places. It turned out that this broke the TUI a little. An easy way to see it is to run "gdb -tui -nx", then "file gdb" at the gdb prompt. gdb will print the usual "Reading symbols..." message -- but it won't appear on-screen until the reading is complete. This patch changes the TUI to do the equivalent of line buffering in tui_puts_internal. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-io.c (tui_puts_internal): Call wrefresh if newline is seen. commit 0fcd37117e94e5b9bf5f4aaa4dccc8038b38398e Author: Tom Tromey Date: Mon Jul 1 14:44:29 2019 -0600 Remove has_locator method Earlier changes made it obvious that the has_locator method can only be called for source/disassembly windows. Because the only reference to this now occurs in methods on this object, we can remove the has_locator method entirely, in favor of using the member directly. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-win.c (tui_source_window_base::set_new_height) (tui_source_window_base::do_make_visible_with_new_height): Use m_has_locator field directly. * tui/tui-data.h (struct tui_win_info) : Remove method. (struct tui_source_window_base) : Likewise. commit 4a38112da00f45527de4aec0b645443c6ee0e01e Author: Tom Tromey Date: Mon Jul 1 14:41:28 2019 -0600 Remove tui_make_visible and tui_make_invisible tui_make_visible and tui_make_invisible are just wrappers for a method call, so remove them and have the callers simply make the method call themselves. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-wingeneral.h (tui_make_visible, tui_make_invisible): Don't declare. * tui/tui-wingeneral.c (tui_make_visible, tui_make_invisible): Remove. * tui/tui-win.c (tui_source_window_base::set_new_height) (tui_source_window_base::set_new_height) (make_invisible_and_set_new_height) (tui_source_window_base::do_make_visible_with_new_height) (tui_source_window_base::do_make_visible_with_new_height): Update. * tui/tui-layout.c (show_source_disasm_command, show_data) (show_source_or_disasm_and_command): Update. * tui/tui-layout.c (show_layout): Update. commit 0912922656b9fec5f04623ea49292b7ae564c7ef Author: Tom Tromey Date: Mon Jul 1 14:37:38 2019 -0600 Remove make_data_window As with the previous patches, unifying the creation and re-initialization cases for the data window lets us remove make_data_window in favor of simply using "new". gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.c (make_data_window): Remove. (show_data): Unify creation and re-initialization cases. commit 4a8a5e84a777c7c267503a1d1ee15bce2ba19d1d Author: Tom Tromey Date: Mon Jul 1 14:37:04 2019 -0600 Remove make_source_window and make_disasm_window This unifies the remaining creation and re-initialization cases for the source and disassembly windows. Once this is done, it's clear that make_source_window and make_disasm_window aren't needed any more, so remove them. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.c (make_source_window, make_disasm_window): Remove. (show_data): Unify creation and re-initialization cases. commit 76d2be8e92a900558648eeba6b4ff95cba62801e Author: Tom Tromey Date: Mon Jul 1 14:26:42 2019 -0600 Remove make_command_window This unifies the creation and re-initialization cases for the command window. When this is done, it becomes clear that make_command_window isn't needed -- it can be replaced with a simple "new", so this is removed as well. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.c (make_command_window): Remove. (show_source_disasm_command, show_source_or_disasm_and_command): Unify creation and re-initialization cases. commit 890b8bde7a07a412bc1085bd4724bd03500b0dc0 Author: Tom Tromey Date: Mon Jul 1 00:55:14 2019 -0600 Simplify show_source_or_disasm_and_command This changes show_source_or_disasm_and_command to unify the creation and re-initialization cases. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.c (show_source_or_disasm_and_command): Unify creation and re-initialization cases. commit 2cdfa11333867dbfcb2a6b631cda989d64f68944 Author: Tom Tromey Date: Mon Jul 1 00:51:20 2019 -0600 Change tui_get_register to return void tui_get_register returns a tui_status, but nothing checks this, so it can return void instead. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.c (tui_get_register): Return void. commit 8e3cfd09e813fc1a2738b0d4d19d15358e438ace Author: Tom Tromey Date: Sun Jun 30 23:30:28 2019 -0600 Simplify tui_gen_win_info::make_visible I noticed that tui_gen_win_info::make_visible was much wordier than it needed to be. This simplifies it. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Simplify. commit f4e049775aa3b025501d6b4aae1cdb975505a767 Author: Tom Tromey Date: Sun Jun 30 20:46:18 2019 -0600 Simplify show_source_disasm_command This is the first of a few patches to further simplify window (re-)initialization in tui-layout.c. When changing the layout, a window may be created or, if it already exists, simply resized. These two cases normally are identical, but this was obscured by the way the code was written. This patch changes show_source_disasm_command to unify the creation and re-initialization cases. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.c (show_source_disasm_command): Simplify window resetting. commit 0379b8837a875403866e2cf1a0315bee1d8d5694 Author: Tom Tromey Date: Sun Jun 30 20:43:32 2019 -0600 Clean up tui_layout_command tui_layout_command is a simple wrapper for tui_set_layout_by_name. This removes the extra layer and cleans up the resulting function a bit -- changing it to call error rather than return a result. This necessitated a small change to tui-regs.c, to avoid calling the function that is being removed. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui.h (tui_set_layout_by_name): Don't declare. * tui/tui-regs.c (tui_reg_layout): New function. (tui_show_registers, tui_reg_command): Use it. * tui/tui-layout.c (LAYOUT_USAGE): Remove. (tui_layout_command): Rename from tui_set_layout_by_name. Change parameters. (tui_layout_command): Remove. commit b7fbad913e8874b9a887eb149b14975343bfb7ab Author: Tom Tromey Date: Sun Jun 30 20:34:57 2019 -0600 Change tui_set_layout to return void tui_set_layout can't meaningfully be called with UNDEFINED_LAYOUT; and instead of trying to handle this case, simply assert and have the function return void. No caller was checking the return value anyway. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.h (tui/tui-layout): Return void. * tui/tui-layout.c (tui_set_layout): Return void. Add assert. commit 4e1e56b9818109a39bb1b035fd50dd05a00699f2 Author: Tom Tromey Date: Sun Jun 30 20:32:35 2019 -0600 Remove reset_locator reset_locator was introduced just a few patches ago, but it's already time to remove it. It consists of a call to the locator's "reset" method, plus a call to tui_make_window; but the latter is redundant at all the places that call reset_locator. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.c (show_source_disasm_command, show_data): Update. (reset_locator): Remove. (show_source_or_disasm_and_command): Update. commit 1e0c09ba0bdd8b4dd1ab3a61b2ae2d326825bee1 Author: Tom Tromey Date: Sat Jun 29 07:32:47 2019 -0600 Remove the win_type parameter from tui_gen_win_info::reset tui_gen_win_info::reset has a window type parameter that is only used for an assertion. This made sense as a defensive measure when window creation was more dynamic -- it ensured that one did not make mistakes. However, there's no need for it any more, so this removes it. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-source.c (tui_source_window_base::reset): Remove win_type parameter. * tui/tui-layout.c (make_command_window, make_source_window) (make_disasm_window, make_data_window) (show_source_disasm_command, show_data, tui_gen_win_info::reset) (reset_locator, show_source_or_disasm_and_command): Update. * tui/tui-data.h (struct tui_gen_win_info) : Remove win_type parameter. (struct tui_source_window_base) : Likewise. commit 1bf605de8e9ae4fcf77c21067ddaf4a242a873f7 Author: Tom Tromey Date: Fri Jun 28 23:56:25 2019 -0600 Introduce reset_locator function in tui-layout.c init_and_make_win in tui-layout.c is now only called for the locator -- earlier changes have made most of the cases here obsolete. This patch removes init_and_make_win and introduces a reset_locator function. Window creation is now much simpler to follow, because it is no longer quite so dynamic. (Though it will become even simpler in coming patches.) gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.c (show_source_disasm_command): Use reset_locator. (reset_locator): New function. (init_and_make_win): Remove. (show_source_or_disasm_and_command): Use reset_locator. commit 098f9ed48e1c94a2624c825ba93d72b163d41196 Author: Tom Tromey Date: Fri Jun 28 23:54:25 2019 -0600 Always create an execution info window for a source window A source or disassembly window will always have an "execution info" window (the window along the side that displays breakpoint info), but this isn't immediately clear from the source. As a result, some code has checks to see whether the execution_info is NULL. This changes the source window base class to always instantiate an execution_info window, then updates the rest of the code. It also simplifies window creation in tui-layout.c. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_set_exec_info_content): Remove condition. * tui/tui-wingeneral.c (tui_source_window_base::make_visible): Remove condition. * tui/tui-source.c (tui_source_window_base::reset): New method. * tui/tui-layout.c (make_command_window): Don't call init_and_make_win. (make_source_window, make_disasm_window): Don't call make_source_or_disasm_window. (make_data_window): Don't call init_and_make_win. Change calling convention. (show_source_disasm_command, show_data): Simplify. (make_source_or_disasm_window): Remove. (show_source_or_disasm_and_command): Simplify. * tui/tui-data.h (struct tui_gen_win_info) : Now virtual. (struct tui_source_window_base) : Likewise. : Remove initializer. * tui/tui-data.c (tui_source_window_base): Initialize execution_info. commit 801109578cd2a6ebd690dd23f0d4a1f4a67aee09 Author: Tom Tromey Date: Fri Jun 28 23:35:31 2019 -0600 Remove some dead code from tui_set_layout tui_set_layout sets regs_populate using: regs_populate = (new_layout == SRC_DATA_COMMAND || new_layout == DISASSEM_DATA_COMMAND); Then later it checks this variable: if (!regs_populate && (new_layout == SRC_DATA_COMMAND || new_layout == DISASSEM_DATA_COMMAND)) However, this is equivalent to "!regs_populate && regs_populate", which can never be true. So, remove the dead code and the variable. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-layout.c (tui_set_layout): Remove regs_populate variable. commit cf82af058d2f1488d8f8a096d7e3b76d1d5a4f46 Author: Tom Tromey Date: Fri Jun 28 23:32:05 2019 -0600 Remove TUI data window special case The TUI has a couple of special cases for updating the data window: one in tui_rl_other_windowand one in tui_set_focus_command. As part of the project to remove references to globals, I wanted to remove these calls; but when I did, some simple operations (like "C-x o") would cause the register window to blank. This fixes the underlying problem by arranging for the data window's refresh_window method to call the superclass method first, and then to refresh the child windows. Then the special cases can be removed. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui.c (tui_rl_other_window): Update. * tui/tui-wingeneral.c (tui_data_window::refresh_window): Call superclass method first. Always iterate over regs_content. (tui_unhighlight_win, tui_highlight_win): Use refresh_window method. * tui/tui-win.c (tui_set_focus_command): Update. commit 01aeb396d0e7a2d76f5f2391a30328dcdd5bed1e Author: Tom Tromey Date: Fri Jun 28 23:23:37 2019 -0600 Remove tui_set_focus tui_set_focus_command is a simple wrapper for tui_set_focus, so rename the latter and remove the wrapper function. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-win.c (tui_set_focus_command): Rename from tui_set_focus. Call tui_enable. (tui_set_focus_command): Remove. commit fd6c75eecd92ad888cc369489b31d2ed9015130e Author: Tom Tromey Date: Fri Jun 28 23:17:24 2019 -0600 Merge refresh and refresh_window methods Earlier refactorings introduced the refresh and refresh_window methods, following the previous TUI code. However, these methods are essentially the same, so this patch merges them. It also removes some redundant refresh_window calls, because the execution window is updated automatically by the corresponding source (or disassembly) window. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_show_exec_info_content): Don't call refresh_window. * tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Call touchwin. (tui_data_window::refresh_window): Call refresh_window on data items. Always call superclass refresh_window. (tui_win_info::refresh): Remove. (tui_source_window_base::refresh_window): Update. (tui_refresh_all): Update. * tui/tui-layout.c (show_source_disasm_command): Remove call to refresh_window. (show_source_or_disasm_and_command): Likewise. * tui/tui-data.h (struct tui_win_info) : Remove. (struct tui_source_window_base) : Likewise. commit f6cc34a91c173634b6afcc1a48601a601fbace37 Author: Tom Tromey Date: Fri Jun 28 22:57:37 2019 -0600 Remove tui_source_window::content_in_use Now that source window clearing has been simplified, we don't need a special flag to say whether the source window is in use -- we can simply check whether the contents are set. This patch implements this idea, removing the content_in_use field. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_clear_source_content) (tui_show_source_content): Update. * tui/tui-source.c (tui_source_window::showing_source_p): Check whether content is empty. * tui/tui-data.h (struct tui_source_window_base) : Remove. commit f31ec9af48578adb0baf8db3e10da871d6ee3eca Author: Tom Tromey Date: Fri Jun 28 22:55:45 2019 -0600 Simplify source window clearing When a TUI source window is empty, it displays a "No Source Available" message. The function tui_set_source_content_nil also made sure to put this message into the window's "content" field. However, I believe this isn't really necessary. Instead, it's simpler to just empty the contents and let curses handle the refreshing. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_erase_source_content): Clear the window's contents. * tui/tui-source.h (tui_set_source_content_nil): Don't declare. * tui/tui-source.c (tui_set_source_content_nil): Remove. commit d1b6f1e5ebdd755274a77a31c4afa48969b73bee Author: Tom Tromey Date: Fri Jun 28 22:51:20 2019 -0600 Remove UNDEFINED_ITEM define from TUI The TUI defined UNDEFINED_ITEM, but only used it in a single spot. I think this isn't very useful, so this removes the define. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-data.h (UNDEFINED_ITEM): Remove define. (struct tui_data_item_window): Update. commit d9743a13e0c9e3043ec3ad979534fab44c0f17b2 Author: Tom Tromey Date: Fri Jun 28 22:49:10 2019 -0600 Remove unused TUI defines This removes some #defines that were unused in the TUI. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-data.h (MAX_CONTENT_COUNT, TUI_NULL_STR) (DEFAULT_HISTORY_COUNT, WITH_LOCATOR, NO_LOCATOR): Remove defines. commit caf0bc4e8bafc387c8136c0f63748e56245f779a Author: Tom Tromey Date: Fri Jun 28 22:48:33 2019 -0600 Remove unused parameter from two TUI functions The "display_prompt" parameter of tui_erase_source_content and tui_clear_source_content was never passed the NO_EMPTY_SOURCE_PROMPT value, so remove the parameter. Once this is done, the EMPTY_SOURCE_PROMPT and NO_EMPTY_SOURCE_PROMPT defines are unused, so remove those as well. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.h (tui_erase_source_content) (tui_clear_source_content): Remove "display_prompt" parameter. * tui/tui-winsource.c (tui_update_source_window_as_is) (tui_update_source_windows_with_addr): Update. (tui_clear_source_content): Remove "display_prompt" parameter. (tui_erase_source_content): Likewise. Simplify. (tui_show_source_content): Update. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update. * tui/tui-stack.c (tui_show_frame_info): Update. * tui/tui-data.h (EMPTY_SOURCE_PROMPT, NO_EMPTY_SOURCE_PROMPT): Remove defines. commit 9d391078d1238e1be9dea5a775982a00a2497a57 Author: Tom Tromey Date: Fri Jun 28 16:58:16 2019 -0600 Add win_info parameter to tui_set_disassem_content This adds a win_info parameter to tui_set_disassem_content, removing uses of the TUI_DISASM_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_update_source_window_as_is): Update. * tui/tui-disasm.h (tui_set_disassem_content): Add win_info parameter. * tui/tui-disasm.c (tui_set_disassem_content): Add win_info parameter. commit a38da35d7bc89e4c2191d4f042912038c585f36d Author: Tom Tromey Date: Fri Jun 28 16:44:23 2019 -0600 Move content_in_use to tui_source_window class From scanning the source now, it's clear that the content_in_use field is only used for the source window. This patch moves the field there, and changes it to be a bool at the same time. (A future patch will clean this up further, removing the field entirely.) gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_clear_source_content) (tui_show_source_content, tui_show_exec_info_content) (tui_clear_exec_info_content): Update. * tui/tui-stack.c (tui_show_locator_content): Update. (tui_show_frame_info): Update. * tui/tui-source.h (tui_source_window): Don't declare. * tui/tui-source.c (tui_source_window::showing_source_p): Rename from tui_source_is_displayed. * tui/tui-data.h (struct tui_gen_win_info) : Remove field. (struct tui_source_window_base) : New field. Now bool. (struct tui_source_window) : New method. (TUI_SRC_WIN): Change cast. * tui/tui-data.c (tui_initialize_static_data): Update. commit c2cd8994669f63eb415522352a5d5006d0fbfb48 Author: Tom Tromey Date: Fri Jun 28 15:19:10 2019 -0600 Introduce tui_source_window_base::location_matches_p method This introduces the location_matches_p method, removing a spot that explicitly examines a window's type. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_update_breakpoint_info): Use location_matches_p. * tui/tui-source.c (tui_source_window::location_matches_p): New method. * tui/tui-disasm.c (tui_disasm_window::location_matches_p): New method. * tui/tui-data.h (struct tui_source_window_base) : New method. (struct tui_source_window, struct tui_disasm_window) : Likewise. commit 4dde7b34f4e40ee6e0ea596357e4def60bd67d20 Author: Tom Tromey Date: Fri Jun 28 15:01:11 2019 -0600 Remove tui_set_win_height tui_set_win_height_command is just a simple wrapper for tui_set_win_height, so rename the latter and remove the wrapper. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-win.c (tui_set_win_height_command): Rename from tui_set_win_height. (tui_set_win_height_command): Remove. commit b73dd8779c0530e91c6e5067eab4cb7ca3f794d5 Author: Tom Tromey Date: Fri Jun 28 14:48:45 2019 -0600 Make source windows be self-updating This changes the TUI source window to register itself on the source_styling_changed observable, and removes a bit of code from tui-hooks.c. This reduces the number of uses of the TUI_SRC_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-source.c (tui_source_window): New constructor. Add observer. (~tui_source_window): New destructor. (tui_source_window::style_changed): New method. * tui/tui-hooks.c (tui_redisplay_source): Remove. (tui_attach_detach_observers): Update. * tui/tui-data.h (struct tui_source_window): Make constructor not inline. Add destructor. (struct tui_source_window) : New method. : New member. commit ae2b53806d3ce384e349c722b21a7ad246102d5b Author: Tom Tromey Date: Thu Jun 27 16:05:25 2019 -0600 Fix comment typos This fixes a couple of comment typos that I noticed. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-data.c (tui_clear_source_windows_detail): Fix typo. * tui/tui-win.c (tui_resize_all): Fix typo. commit 1ce3e8442e5bab6f700f5f011de56201f76b8461 Author: Tom Tromey Date: Thu Jun 27 16:04:26 2019 -0600 Introduce TUI window iterator This introduces an iterator class and a range adapter to make it simpler to iterate over TUI windows. One explicit iteration remains, in tui-win.c, because that spot is deleting windows as well. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-wingeneral.h (tui_refresh_all): Update. * tui/tui-wingeneral.c (make_all_visible): Use foreach. (tui_refresh_all): Remove "list" parameter. Use foreach. * tui/tui-win.c (window_name_completer): Use foreach. (tui_refresh_all_win, tui_rehighlight_all, tui_all_windows_info) (update_tab_width): Likewise. * tui/tui-layout.c (show_layout): Update. * tui/tui-data.h (class tui_window_iterator): New. (struct all_tui_windows): New. * tui/tui-data.c (tui_partial_win_by_name): Use foreach. commit fe3eaf1cd9af54cd4c678a8dde7fd0df601c9490 Author: Tom Tromey Date: Wed Jun 26 19:45:53 2019 -0600 Minor tui_reg_next / tui_reg_prev cleanup This changes tui_reg_next and tui_reg_prev so that they don't need to reference the TUI_DATA_WIN globals. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.c (tui_reg_next, tui_reg_prev): Add "current_group" parameter. Don't reference globals. (tui_reg_command): Update. commit 368c1354e578eb280df37059aa6b8c1f178baaf4 Author: Tom Tromey Date: Wed Jun 26 16:26:39 2019 -0600 Simplify tui_show_registers tui_show_registers keeps a local status variable, but it is not actually needed. This rearranges the function to remove the variable. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.c (tui_show_registers): Simplify. commit e80cd2047079a63ab087df15d179c49ca18de202 Author: Tom Tromey Date: Wed Jun 26 16:25:40 2019 -0600 Parameterize tui_show_register_group with window This changes tui_show_register_group not to reference the TUI_DATA_WIN global, instead leaving that to its caller. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.c (tui_show_registers): Update. (tui_show_register_group): Add win_info parameter. commit aca2dd16474ec88b3969436044801f58f9163c5c Author: Tom Tromey Date: Wed Jun 26 16:15:46 2019 -0600 Introduce tui_data_window::display_reg_element_at_line method This changes tui_display_reg_element_at_line to be a method on tui_data_window, allowing for the removal of some uses of the TUI_DATA_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.c (tui_data_window::display_reg_element_at_line): Rename from tui_display_reg_element_at_line. (tui_data_window::display_registers_from_line): Update. * tui/tui-data.h (struct tui_data_window) : New method. commit 517e9505fa563c83b4d5cb192e423a0d6baac752 Author: Tom Tromey Date: Wed Jun 26 16:13:39 2019 -0600 Introduce two more tui_data_window methods This changes tui_display_registers_from and tui_display_registers_from_line to be methods on tui_data_window, allowing for the removal of more uses of the TUI_DATA_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.h (tui_display_registers_from) (tui_display_registers_from_line): Don't declare. * tui/tui-windata.c (tui_data_window::display_all_data) (tui_data_window::refresh_all) (tui_data_window::do_scroll_vertical): Update. * tui/tui-regs.c (tui_data_window::display_registers_from): Rename from tui_display_registers_from. (tui_display_reg_element_at_line): Update. (tui_data_window::display_registers_from_line): Rename from tui_display_registers_from_line. * tui/tui-data.h (struct tui_data_window) : New methods. commit f76d8b19e80b43a141ce31c0e0230e23f676182d Author: Tom Tromey Date: Wed Jun 26 16:07:45 2019 -0600 Introduce tui_data_window::erase_data_content method This changes tui_erase_data_content to be a method on tui_data_window, allowing for the removal of some uses of the TUI_DATA_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-windata.h (tui_erase_data_content): Don't declare. * tui/tui-windata.c (tui_data_window::erase_data_content): Rename from tui_erase_data_content. (tui_data_window::display_all_data) (tui_data_window::refresh_all) (tui_data_window::do_scroll_vertical): Update. * tui/tui-regs.c (tui_show_registers): Update. * tui/tui-data.h (struct tui_data_window) : New method. commit b4094625d8a3e2b528032e2ca8d8cdecf222bb7c Author: Tom Tromey Date: Wed Jun 26 16:04:37 2019 -0600 Introduce tui_data_window::delete_data_content_windows method This changes tui_delete_data_content_windows to be a method on tui_data_window, removing some uses of the TUI_DATA_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-windata.h (tui_delete_data_content_windows): Don't declare. * tui/tui-windata.c (tui_data_window::delete_data_content_windows): Rename from tui_delete_data_content_windows. (tui_data_window::display_all_data) (tui_data_window::do_scroll_vertical): Update. * tui/tui-data.h (struct tui_data_window) : New method. commit c223a7299e2bdb604d7006842eda7165bcbf2c15 Author: Tom Tromey Date: Wed Jun 26 16:03:12 2019 -0600 Don't declare unimplemented functions A couple of functions were declared but never defined. This removes the declarations. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-windata.h (tui_refresh_data_win): Don't declare. * tui/tui-regs.h (tui_first_reg_element_inline): Don't declare. commit 50daf2683bad925470f6f1bd08aef928c2f4d6fe Author: Tom Tromey Date: Wed Jun 26 16:02:36 2019 -0600 Introduce tui_data_window::display_all_data method This changes tui_display_all_data to be a method on tui_data_window. This helps cluster uses of the TUI_DATA_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-windata.h (tui_display_all_data): Don't declare. * tui/tui-windata.c (tui_data_window::display_all_data): Rename from tui_display_all_data. * tui/tui-win.c (tui_data_window::do_make_visible_with_new_height): Update. * tui/tui-regs.c (tui_show_registers): Update. * tui/tui-layout.c (tui_set_layout): Update. * tui/tui-data.h (struct tui_data_window) : New method. commit df5f8cab00a8076a5582efec028002d323950c8f Author: Tom Tromey Date: Wed Jun 26 16:00:05 2019 -0600 Remove tui_display_data_from tui_display_data_from is only called from a single place. Inlining it there lets us remove some uses of the TUI_DATA_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-windata.h (tui_display_data_from): Don't declare. * tui/tui-windata.c (tui_display_data_from): Remove. (tui_data_window::refresh_all): Update. commit 80cb6c27099e199cca01bc1a2efb8e8fbc941a48 Author: Tom Tromey Date: Wed Jun 26 15:56:56 2019 -0600 Remove tui_display_data_from_line tui_display_data_from_line is just a wrapper for tui_display_registers_from_line, so remove it. Also, nothing passed 0 as the "force_display" parameter to tui_display_registers_from_line, so remove that parameter as well. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-windata.h (tui_display_data_from_line): Don't declare. * tui/tui-windata.c (tui_display_data_from_line): Remove. (tui_display_data_from, tui_data_window::do_scroll_vertical): Call tui_display_registers_from_line. * tui/tui-regs.h (tui_display_registers_from_line): Update. * tui/tui-regs.c (tui_display_registers_from_line): Remove "force_display" parameter. commit baff0c28b83bd1ad7949d07b78fdb85ad6be49a5 Author: Tom Tromey Date: Wed Jun 26 15:49:00 2019 -0600 Introduce tui_data_window::first_reg_element_no_inline This changes tui_first_reg_element_no_inline to be a method on tui_data_window. This again moves uses of the TUI_DATA_WIN global from this function into other functions that are already using the global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.h (tui_first_reg_element_no_inline): Don't declare. * tui/tui-regs.c (tui_data_window::first_reg_element_no_inline): Rename from tui_first_reg_element_no_inline. (tui_display_reg_element_at_line) (tui_display_registers_from_line): Update. * tui/tui-data.h (struct tui_data_window) : New method. commit 3b23c5f2662d3240cdc586d3d2e5fb6eb8cba4c7 Author: Tom Tromey Date: Wed Jun 26 15:46:38 2019 -0600 Introduce tui_data_window::line_from_reg_element_no method This changes tui_line_from_reg_element_no to be a method on tui_data_window, allowing for the removal of some uses of the TUI_DATA_WIN global. (Actually, in this particular patch, the number of uses is not decreased, but rather the uses are moved to spots that are already using the global, i.e., increasing the clustering.) gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-windata.c (tui_display_data_from) (tui_data_window::do_scroll_vertical): Update. * tui/tui-regs.h (tui_line_from_reg_element_no): Don't declare. * tui/tui-regs.c (tui_data_window::line_from_reg_element_no): Rename from tui_line_from_reg_element_no. (tui_display_registers_from_line): Update. * tui/tui-data.h (struct tui_data_window) : New method. commit 0b5ec21882bcc27e93144882b84935497da6e7fe Author: Tom Tromey Date: Wed Jun 26 15:44:51 2019 -0600 Introduce tui_data_window::last_regs_line_no method This changes tui_last_regs_line_no into a method on tui_data_window, allowing the removal of uses of the TUI_DATA_WIN global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-regs.h (tui_last_regs_line_no): Don't declare. * tui/tui-regs.c (tui_data_window::last_regs_line_no): Rename from tui_last_regs_line_no. (tui_display_reg_element_at_line) (tui_display_registers_from_line): Update. * tui/tui-data.h (struct tui_data_window) : New method. commit 0807ab7b88fa5ffb138ba1ee22b33d26e239de2f Author: Tom Tromey Date: Sun Jun 23 21:25:46 2019 -0600 Remove deleted breakpoint from TUI display PR tui/24722 points out that deleting a breakpoint does not cause the "b" to be removed from the breakpoint display. The issue here was that the breakpoint still exists at the moment the breakpoint-deleted observer is notified. This fixes the problem by specially handling the case where a breakpoint is being removed. gdb/ChangeLog 2019-07-17 Tom Tromey PR tui/24722: * tui/tui-winsource.h (tui_update_all_breakpoint_info) (tui_update_breakpoint_info): Add "being_deleted" parameter. * tui/tui-winsource.c (tui_update_source_window_as_is): Update. (tui_update_all_breakpoint_info): Add "being_deleted" parameter. (tui_update_breakpoint_info): Likewise. * tui/tui-hooks.c (tui_event_create_breakpoint) (tui_event_delete_breakpoint, tui_event_modify_breakpoint): Update. commit 9ad7fdef7c72b2aca0398ce8e63b89e560873807 Author: Tom Tromey Date: Sun Jun 23 21:00:01 2019 -0600 Consolidate "if"s in tui_show_frame_info tui_show_frame_info has two parallel "if"s with the same condition and no intervening code. The second "if" perhaps wasn't obviously identical, but earlier refactorings made it clearer, by pointing out that only source and disassembly windows can be handled here. This merges the two statements. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-stack.c (tui_show_frame_info): Consolidate "if"s. commit 5813316fa4aeaf52f374c20c7fdb9747b88fa8ca Author: Tom Tromey Date: Sun Jun 23 20:57:09 2019 -0600 Remove some uses of TUI_WIN_SRC This adds a 'win_info' parameter to a couple of functions. This reduces the number of references to the TUI_WIN_SRC global. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-winsource.c (tui_update_source_window_as_is) (tui_update_source_windows_with_addr): Update. * tui/tui-source.h (tui_set_source_content) (tui_show_symtab_source): Add "win_info" parameter. * tui/tui-source.c (tui_set_source_content): Add "win_info" parameter. (tui_show_symtab_source): Likewise. commit 00e264e7626260a6df6b5a0aa7ee25215ea93f9c Author: Tom Tromey Date: Sun Jun 23 20:48:59 2019 -0600 Check can_highlight in tui_check_and_display_highlight_if_needed tui_check_and_display_highlight_if_needed currently checks the window's type; but this can be replaced with a check of "can_highlight", making it more polymorphically-correct. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-wingeneral.c (tui_check_and_display_highlight_if_needed): Check can_highlight. commit 06210ce428ad74c28fd94f7ea3800b79791cdefa Author: Tom Tromey Date: Sun Jun 23 20:39:57 2019 -0600 Introduce can_scroll method This introduces a "can_scroll" method, removing a spot that explicitly checks a window's type. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-data.h (struct tui_win_info) : New method. (struct tui_cmd_window) : New method. * tui/tui-command.c (tui_dispatch_ctrl_char): Use can_scroll method. commit 381befeedf9316991d47f4213850545a96593d23 Author: Tom Tromey Date: Wed Jul 17 08:34:23 2019 -0600 Rename field_int to field_signed This renames ui_out::field_int to field_signed, and field_fmt_int to field_fmt_signed; and changes the type of the "value" parameter from int to LONGEST. Tested by the buildbot. gdb/ChangeLog 2019-07-17 Tom Tromey * ui-out.h (class ui_out) : Rename. Change type of "value". * ui-out.c (ui_out::field_signed): Rename from field_int. Change type of "value". (ui_out::field_fmt_signed): Rename from field_fmt_int. Change type of "value". * tui/tui-out.h (class tui_ui_out) : Rename from do_field_int. Change type of "value". * tui/tui-out.c (tui_ui_out::do_field_signed): Rename from do_field_int. Change type of "value". * tracepoint.c (trace_status_mi, tfind_1) (print_one_static_tracepoint_marker): Update. * thread.c (print_thread_info_1, print_selected_thread_frame): Update. * stack.c (print_frame, print_frame_info): Update. * spu-tdep.c (info_spu_signal_command, info_spu_dma_cmdlist): Update. * source.c (print_source_lines_base): Update. * skip.c (info_skip_command): Update. * record-btrace.c (btrace_ui_out_decode_error) (btrace_call_history_src_line): Update. * python/py-framefilter.c (py_print_single_arg, py_print_frame): Update. * progspace.c (print_program_space): Update. * mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Update. * mi/mi-out.h (class mi_ui_out) : Rename from do_field_int. Change type of "value". * mi/mi-out.c (mi_ui_out::do_table_begin) (mi_ui_out::do_table_header): Update. (mi_ui_out::do_field_signed): Rename from do_field_int. Change type of "value". * mi/mi-main.c (mi_cmd_thread_list_ids, print_one_inferior) (mi_cmd_data_list_changed_registers, output_register) (mi_cmd_data_read_memory, mi_load_progress) (mi_cmd_trace_frame_collected): Update. * mi/mi-interp.c (mi_on_normal_stop_1, mi_output_solib_attribs): Update. * mi/mi-cmd-var.c (print_varobj, mi_cmd_var_create) (mi_cmd_var_delete, mi_cmd_var_info_num_children) (mi_cmd_var_list_children, varobj_update_one): Update. * mi/mi-cmd-stack.c (mi_cmd_stack_info_depth) (mi_cmd_stack_list_args, list_arg_or_local): Update. * mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file): Update. * inferior.c (print_inferior): Update. * gdb_bfd.c (print_one_bfd): Update. * disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Update. * darwin-nat-info.c (darwin_debug_regions_recurse): Update. * cli-out.h (class cli_ui_out) : Rename from do_field_int. Change type of "value". * cli-out.c (cli_ui_out::do_field_signed): Rename from do_field_int. Change type of "value". * breakpoint.c (watchpoint_check, print_breakpoint_location) (print_one_breakpoint_location, print_it_catch_fork) (print_one_catch_fork, print_it_catch_vfork) (print_one_catch_vfork, print_it_catch_solib) (print_it_catch_exec, print_it_ranged_breakpoint) (print_mention_watchpoint, print_mention_masked_watchpoint) (bkpt_print_it, update_static_tracepoint): Update. * break-catch-throw.c (print_it_exception_catchpoint): Update. * break-catch-syscall.c (print_it_catch_syscall): Update. * ada-tasks.c (print_ada_task_info): Update. * ada-lang.c (print_it_exception, print_mention_exception): Update. commit 6b78c3f83c8bcbfa714aab7627ece9673b2d602a Author: Andrew Burgess Date: Tue Jul 2 12:06:06 2019 +0100 gdb: Remove a non-const reference parameter Non-const reference parameter should be avoided according to the GDB coding standard: https://sourceware.org/gdb/wiki/Internals%20GDB-C-Coding-Standards#Avoid_non-const_reference_parameters.2C_use_pointers_instead This commit updates the gdbarch method gdbarch_stap_adjust_register, and the one implementation i386_stap_adjust_register to avoid using a non-const reference parameter. I've also removed the kfail from the testsuite for bug 24541, as this issue is now resolved. gdb/ChangeLog: PR breakpoints/24541 * gdbarch.c: Regenerate. * gdbarch.h: Regenerate. * gdbarch.sh: Adjust return type and parameter types for 'stap_adjust_register'. (i386_stap_adjust_register): Adjust signature and return new register name. * stap-probe.c (stap_parse_register_operand): Adjust use of 'gdbarch_stap_adjust_register'. gdb/testsuite/ChangeLog: PR breakpoints/24541 * gdb.mi/mi-catch-cpp-exceptions.exp: Remove kfail due to 24541. commit d72a9b85651c872378f6dd732cb578f6f055a9b3 Author: Tom Tromey Date: Mon Jul 15 11:52:02 2019 -0600 Remove a VEC from s390-linux-nat.c This removes a use of VEC fro s390-linux-nat.c, replacing it with std::vector. Tested using the Fedora-s390x-m64 buildbot builder. gdb/ChangeLog 2019-07-17 Tom Tromey * s390-linux-nat.c (s390_watch_area): Remove typedef. Don't declare VEC. (struct s390_debug_reg_state) : Now std::vector. (struct s390_process_info): Add initializers. (s390_add_process): Use new. (s390_linux_nat_target::low_forget_process): Use delete. (s390_linux_nat_target::low_new_fork) (s390_linux_nat_target::stopped_by_watchpoint) (s390_linux_nat_target::low_prepare_to_resume) (s390_linux_nat_target::insert_watchpoint) (s390_linux_nat_target::insert_hw_breakpoint) (s390_linux_nat_target::remove_watchpoint) (s390_linux_nat_target::remove_hw_breakpoint): Update. commit 8dc0818eb2c449d553065b57e6953436896c6e5a Author: Jan Beulich Date: Wed Jul 17 09:16:31 2019 +0200 x86: replace "anymem" checks where possible Once operand parsing has completed, the simpler check of Operand_Mem can be used in places where i.types[] got passed to operand_type_check(). Note that this has shown a couple of omissions of adjusting i.flags[] when playing with i.op[] / i.types[] / i.tm.operand_types[]. Not all of them get added here, just all of the ones needed in process_operands(). commit 1d942ae90810156b9875ea3e11754ab447c748db Author: Jan Beulich Date: Wed Jul 17 09:15:49 2019 +0200 x86: drop stale Mem enumerator This was supposed to also be removed by c48dadc9a8 ('x86: drop "mem" operand type attribute'). It's odd enough that this hasn't caused build issues, considering the careful use of OTunused (apparently to avoid "missing initializer" warnings). To avoid such happening again introduce compile time consistency checks. commit bd7918379d2688898dfb29851f2019d2a7a70959 Author: GDB Administrator Date: Wed Jul 17 00:00:22 2019 +0000 Automatic date update in version.in commit dfd6917457a3030ea4a4b6356f65216fab92d0b8 Author: Jan Beulich Date: Tue Jul 16 09:31:36 2019 +0200 x86: make RegMem an opcode modifier ... instead of an operand type bit: It's an insn property, not an operand one. There's just one actual change to be made to the templates: Most are now required to have the (unswapped) destination go into ModR/M.rm, so VMOVD template needs its opcode adjusted accordingly and its operands swapped. {,V}MOVS{S,D}, otoh, are left alone in this regard, as otherwise generated code would differ from what we've been producing so far (which I don't think is wanted). Take the opportunity and add a missing IgnoreSize to pextrb (leading to an error in 16-bit mode), and take the liberty to once again drop stray IgnoreSize attributes from lines changed and neighboring related ones. commit 21df382b918888de64749e977f185c4e10a5b838 Author: Jan Beulich Date: Tue Jul 16 09:30:29 2019 +0200 x86: fold SReg{2,3} They're the only exception to there generally being no mix of register kinds possible in an insn operand template, and there being two bits per operand for their representation is also quite wasteful, considering the low number of uses. Fold both bits and deal with the little bit of fallout. Also take the liberty and drop dead code trying to set REX_B: No segment register has RegRex set on it. Additionally I was quite surprised that PUSH/POP with the permitted segment registers is not covered by the test cases. Add the missing pieces. commit 206e6c58a769f9ec63827b8ca3952b0cd8c828ba Author: John Baldwin Date: Mon Jul 15 17:21:36 2019 -0700 Fix build for aarch64, arm, and riscv FreeBSD native targets. Remove unused gdbarch argument to helper functions originally copied from mips-fbsd-nat.c. Include regcache.h previously included from defs.h via gdbarch.h. gdb/ChangeLog: * aarch64-fbsd-nat.c: Include regcache.h. (getregs_supplies, getfpregs_supplies): Remove unused gdbarch argument. (aarch64_fbsd_nat_target::fetch_registers) (aarch64_fbsd_nat_target::store_registers): Remove gdbarch variable. * arm-fbsd-nat.c, riscv-fbsd-nat.c: Likewise. commit cbde90f25ec66b359c90514a50bbf25d122bb7e3 Author: John Baldwin Date: Mon Jul 15 17:21:36 2019 -0700 Add include of gdbarch.h. gdb/ChangeLog: * fbsd-nat.c: Include gdbarch.h. commit 7e24fb63e7db33d3627623629b0e99fe322e26f9 Author: GDB Administrator Date: Tue Jul 16 00:00:27 2019 +0000 Automatic date update in version.in commit 07128006d6caec5df31a960b131d2026f35ed948 Author: Tom Tromey Date: Tue Jul 2 09:13:53 2019 -0600 Fix a FIXME in mi-out.c This removes a FIXME comment from mi_ui_out::do_field_int, by replacing a printf with a use of plongest. 2019-07-15 Tom Tromey * mi/mi-out.c (mi_ui_out::do_field_int): Use plongest. commit 1f77b012e61ec11c92a35223fdfed598c6d2f4e9 Author: Tom Tromey Date: Mon Jul 1 12:14:48 2019 -0600 Introduce field_unsigned This adds field_unsigned and changes various places using field_fmt with "%u" to use this instead. This also replaces an existing equivalent helper function in record-btrace.c. 2019-07-15 Tom Tromey * mi/mi-out.h (class mi_ui_out) : Declare. * mi/mi-out.c (mi_ui_out::do_field_unsigned): New method. * cli-out.h (class cli_ui_out) : Declare. * cli-out.c (cli_ui_out::do_field_int): New method. * ui-out.c (ui_out::field_unsigned): New method. * symfile.c (generic_load): Use field_unsigned. (print_transfer_performance): Likewise. * record-btrace.c (ui_out_field_uint): Remove. (btrace_call_history_insn_range, btrace_call_history): Use field_unsigned. * disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Use field_unsigned. * ui-out.h (class ui_out) : New method. : Likewise. commit 33eca68072e73d984fc139dde45b8140b94757cb Author: Tom Tromey Date: Mon Jul 1 12:08:15 2019 -0600 Use field_string in more places This replaces uses of field_fmt with a "%s" format string to use field_string instead. Also, one use of "%9lx" is replaced with a call to phex_nz; the '9' is dropped as it is implicit in the field width. 2019-07-15 Tom Tromey * mi/mi-main.c (list_available_thread_groups): Use field_string. * mi/mi-interp.c (mi_memory_changed): Use field_string. * target.c (flash_erase_command): Use field_string. * infrun.c (print_signal_received_reason): Use field_string. * i386-tdep.c (i386_mpx_print_bounds): Use field_string. * breakpoint.c (maybe_print_thread_hit_breakpoint): Use field_string. * ada-tasks.c (print_ada_task_info): Use field_string. commit ca8d69beb1024316af8dec571584437d613f40d2 Author: Tom Tromey Date: Mon Jul 1 12:02:37 2019 -0600 Use field_core_addr in more places This changes a few spots that use field_fmt to use field_core_addr instead. gdb/ChangeLog 2019-07-15 Tom Tromey * target.c (flash_erase_command): Use field_core_addr. * symfile.c (generic_load): Use field_core_addr. * sparc64-linux-tdep.c (sparc64_linux_handle_segmentation_fault): Use field_core_addr. * i386-linux-tdep.c (i386_linux_handle_segmentation_fault): Use field_core_addr. commit 3719fd55b6f89662653d50d33bb267c5f21127a5 Author: Jose E. Marchesi Date: Mon Jul 15 16:00:28 2019 +0200 cpu,opcodes,gas: fix explicit arguments to eBPF ldabs instructions This patch fixes the eBPF CPU description in order to reflect the right explicit arguments passed to the ldabs{b,h,w,dw} instructions, updates the corresponding GAS tests, and updates the BPF section of the GAS manual. cpu/ChangeLog: 2019-07-15 Jose E. Marchesi * bpf.cpu (dlabs): New pmacro. (dlind): Likewise. opcodes/ChangeLog: 2019-07-15 Jose E. Marchesi * bpf-desc.c: Regenerate. * bpf-opc.c: Likewise. * bpf-opc.h: Likewise. gas/ChangeLog: 2019-07-15 Jose E. Marchesi * testsuite/gas/bpf/mem.s: ldabs instructions do not take a `src' register as an argument. * testsuite/gas/bpf/mem.d: Updated accordingly. * testsuite/gas/bpf/mem-be.d: Likewise. * doc/c-bpf.texi (BPF Opcodes): Update to reflect the correct explicit arguments to ldabs and ldind instructions. commit 5b9d7a9a647260ba754fbd2a176d37806f15acc8 Author: Alan Modra Date: Fri Jul 12 15:28:19 2019 +0930 Fix __bss_start assertion failure in _bfd_elf_fix_symbol_flags > Building LLVM 6.0 on FreeBSD/powerpc (devel/llvm60 port) the assertion > in the subject trips (displays twice) when linking libLTO.so.1. The > issue has been filed in FreeBSD's bugzilla, at > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=237068 . It appears > the 'llvm::hashing::detail::get_execution_seed()::seed@@JL_LLVM_6.0' > symbol is being weakly aliased to an indirect symbol > __bss_start@@JL_LLVM_6.0. Since __bss_start@@JL_LLVM_6.0 is an > indirect symbol, it fails the assertion. I haven't looked under a debugger at your testcase but I think I know what is going on here. You have a shared library with a weakly defined llvm::hashing::detail::get_execution_seed()::seed which happens to be at the same location as __bss_start in that library. At the time the linker loads symbols for that library, it sees they are both versioned and thus introduces non-versioned indirect symbols for them. The linker considers the symbols as possibly being aliases, setting up h->u.alias and h->is_weakalias such that __bss_start@@JL_LLVM_6.0 is the definition. No real problem so far, the definition is bfd_link_hash_defined, except that the zero size, no type __bss_start symbol possibly should not be considered an alias in the first place. Later, __bss_start as defined by the linker script is entered into the linker symbol table. This is similar to __bss_start being defined by a regular object file in that ELF symbol resolution rules say that the value of __bss_start in the library is overridden by __bss_start in the executable/library being produced. So to accomplish the override, ld flips __bss_start from being an indirect symbol pointing at __bss_start@@JL_LLVM_6.0 to __bss_start@@JL_LLVM_6.0 being an indirect symbol pointing at __bss_start. That's how we get an unexpected indirect symbol and hit the assert. What should happen I think, is for the def->def_regular code above the assert to run in this case. The symbols are no longer aliases. * elflink.c (_bfd_elf_fix_symbol_flags): If the def for an alias is no longer bfd_link_hash_defined, clear the alias. commit 03181f1c38753b24e9d13491e102b5fa685076a2 Author: GDB Administrator Date: Mon Jul 15 00:00:42 2019 +0000 Automatic date update in version.in commit 92434a14b97bf07546701613a16aaf4d8a3b3eca Author: Jose E. Marchesi Date: Sun Jul 14 14:45:31 2019 +0200 cpu,opcodes,gas: fix arguments to ldabs and ldind eBPF instructions The eBPF non-generic load instructions ldind{b,h,w,dw} and ldabs{b,h,w,dw} do not take an explicit destination register as an argument. Instead, they put the loaded value in %r0, implicitly. This patch fixes the CPU BPF description to not expect a 'dst' argument in these arguments, regenerates the corresponding files in opcodes, and updates the impacted GAS tests. Tested in a x86-64 host. cpu/ChangeLog: 2019-07-14 Jose E. Marchesi * bpf.cpu (dlsi): ldabs and ldind instructions do not take an explicit 'dst' argument. opcodes/ChangeLog: 2019-07-14 Jose E. Marchesi * bpf-desc.c: Regenerate. * bpf-opc.c: Likewise. gas/ChangeLog: 2019-07-14 Jose E. Marchesi * testsuite/gas/bpf/mem.s: Do not use explicit arguments for ldabs and ldind instructions. * testsuite/gas/bpf/mem.d: Updated accordingly. * testsuite/gas/bpf/mem-be.d: Likewise. commit da73816739483bac537403262cef1c460e43319f Author: Tom de Vries Date: Sun Jul 14 13:23:04 2019 +0200 [gdb/testsuite] Fix unterminated string in gdb.objc/basicclass.exp The test-case gdb.objc/basicclass.exp contains an unterminated string, introduced in refactoring commit fa43b1d7ca "after gdb_run_cmd, gdb_expect -> gdb_test_multiple/gdb_test". Fix the unterminated string. gdb/testsuite/ChangeLog: 2019-07-14 Tom de Vries PR testsuite/24760 * gdb.objc/basicclass.exp: Fix unterminated string. commit 48b550c28afd21b382e21e56b7ba246b3bf49d4b Author: Joel Brobecker Date: Sat Jul 13 18:00:32 2019 -0700 adjust src-release following the renaming of gdb/common/ to gdb/gdbsupport/ A recent change renamed the common/ directory into gdbsupport/ in gdb. This causes problems in the getver function in the src-release script which doesn't find the create-version.sh script anymore. As a result, it falls back on using the version.in file verbatim, meaning that the "DATE" placeholder doesn't get replaced with the snapshot date, and the "-git" suffix doesn't get stripped. More precisely, we get snapshots called "gdb-8.3.50-DATE-git.tar" instead of (e.g.) "gdb-8.3-20190712.tar". This commit fixes the issue by adding support for this situation. I left the support for $tool/common/create-version.sh, because the sim still uses that directory structure. ChangeLog: * src-release (getver): If $tool/gdbsupport/create-version.sh exists, use that to determine the version number. commit a48654b6d4ed558d632dca3d895e8ad2f0dd57a6 Author: GDB Administrator Date: Sun Jul 14 00:00:54 2019 +0000 Automatic date update in version.in commit f26a32876ba49b2d5537beccea2a38bc544e9732 Author: Alan Modra Date: Thu Jul 11 22:08:39 2019 +0930 Dynamic TLS section symbols It is possible to create shared libraries on PowerPC using -ftls-model=inital-exec or -ftls-model=local-exec. The first is half reasonable, getting you a shared library that can't be dlopen'd but otherwise is reasonable. The second is quite bad. Not only do you lose being able to dlopen, the library also has dynamic text relocations. Worse, the TPREL16_LO, TPREL16_HA and other TPREL16 dynamic relocs emitted were wrong, resulting in wrong values being applied by ld.so. Using the first TLS section symbol in dynamic relocations for local TLS symbols doesn't work. It's wrong because TLS symbols used by TLS relocs have values relative to the TLS segment, whereas the TLS section symbols are addresses. This patch instead uses a symbol index of zero which is used elsewhere by PowerPC on dynamic TLS relocs. It's not strictly ABI compliant to use a non-TLS symbol with TLS relocs but symbol index zero can be interpreted as "no symbol". Not using the first TLS section symbol means it doesn't need to be dynamic. The patch also fixes a further problem with PowerPC32 dynamic TPREL16* relocs, which shouldn't have the symbol value in the addend as we do for non-TLS symbols. bfd/ * elflink.c (_bfd_elf_omit_section_dynsym_default): Don't keep tls_sec. (_bfd_elf_init_1_index_section): Prefer not using TLS sections. (_bfd_elf_init_2_index_sections): Likewise. * elf64-ppc.c (ppc64_elf_relocate_section): When emitting dynamic relocations for local TLS symbols, use STN_UNDEF as the relocation symbol. * elf32-ppc.c (ppc_elf_relocate_section): Likewise, and don't leave TLS symbol value in the addend. ld/ * testsuite/ld-powerpc/tlsso.r: Update. * testsuite/ld-powerpc/tlsso32.g: Update. * testsuite/ld-powerpc/tlsso32.r: Update. * testsuite/ld-powerpc/tlstocso.r: Update. * testsuite/ld-cris/tls-dso-dtpoffd2.d: Update. * testsuite/ld-cris/tls-dso-dtpoffd4.d: Update. * testsuite/ld-cris/tls-dso-tpoffgotcomm1.d: Update. * testsuite/ld-cris/tls-gd-1.d: Update. * testsuite/ld-cris/tls-gd-1h.d: Update. * testsuite/ld-cris/tls-gd-2.d: Update. * testsuite/ld-cris/tls-gd-2h.d: Update. * testsuite/ld-cris/tls-ie-10.d: Update. * testsuite/ld-cris/tls-ie-11.d: Update. * testsuite/ld-cris/tls-ie-8.d: Update. * testsuite/ld-cris/tls-ie-9.d: Update. * testsuite/ld-cris/tls-js1.d: Update. * testsuite/ld-cris/tls-ld-4.d: Update. * testsuite/ld-cris/tls-ld-5.d: Update. * testsuite/ld-cris/tls-ld-6.d: Update. * testsuite/ld-cris/tls-ld-7.d: Update. * testsuite/ld-cris/tls-ldgd-14.d: Update. * testsuite/ld-cris/tls-ldgd-15.d: Update. * testsuite/ld-cris/tls-ldgdx-14.d: Update. * testsuite/ld-cris/tls-ldgdx-15.d: Update. * testsuite/ld-cris/tls-local-54.d: Update. * testsuite/ld-cris/tls-local-60.d: Update. * testsuite/ld-cris/tls-local-61.d: Update. * testsuite/ld-cris/tls-local-63.d: Update. * testsuite/ld-cris/tls-local-64.d: Update. * testsuite/ld-cris/tls-ok-30.d: Update. * testsuite/ld-cris/tls-ok-32.d: Update. * testsuite/ld-cris/tls-ok-34.d: Update. * testsuite/ld-mips-elf/tls-multi-got-1.got: Update. * testsuite/ld-mips-elf/tls-multi-got-1.r: Update. * testsuite/ld-mips-elf/tlsdyn-pie-o32.d: Update. * testsuite/ld-mips-elf/tlsdyn-pie-o32.got: Update. * testsuite/ld-mips-elf/tlslib-o32-hidden.got: Update. * testsuite/ld-mips-elf/tlslib-o32-ver.got: Update. * testsuite/ld-mips-elf/tlslib-o32.got: Update. * testsuite/ld-s390/tlspic.rd: Update. * testsuite/ld-s390/tlspic_64.rd: Update. * testsuite/ld-sparc/tlssunnopic32.rd: Update. * testsuite/ld-sparc/tlssunnopic64.rd: Update. * testsuite/ld-sparc/tlssunpic32.rd: Update. * testsuite/ld-sparc/tlssunpic64.rd: Update. commit 7b2438015ca87297b2796c662182f796bb5358c2 Author: Alan Modra Date: Wed Jul 10 23:35:18 2019 +0930 PR24786, wrong LMA if first section in overlay is empty This stops the first overlay section being ignored when empty, losing its LMA assignment PR 24786 * ldlang.h (enum section_type): Add first_overlay_section. * ldlang.c (lang_add_section): Adjust switch statement. (map_input_to_output_sections): Likewise. (lang_size_sections_1): Always set last_os for first overlay section. (lang_leave_overlay): Set sectype to first_overlay_section. commit 0c951c25c6c7cfbf0f399d34277f73b0fdfc18cd Author: Alan Modra Date: Thu Jun 27 09:35:15 2019 +0930 [GOLD] PowerPC R_PPC64_PCREL_OPT support * powerpc.cc (xlate_pcrel_opt): New function. (Target_powerpc::Relocate::relocate): Optimise PCREL34 and GOT_PCREL34 sequences marked with PCREL_OPT. commit c9b8abb7af46c9da4b50ad8495ab2824c4125962 Author: Alan Modra Date: Wed Jun 26 22:08:54 2019 +0930 [GOLD] PowerPC got reloc optimisation Note that gold won't remove unused GOT entries, in contrast to ld.bfd which will. * powerpc.cc (Powerpc_relobj::make_got_relative): New function. (relative_value_is_known): New functions. (Target_powerpc::Relocate::relocate): Edit code using GOT16_HA, GOT16_LO_DS, and GOT_PCREL34 relocs. commit e4dff7651becba48d805e39655138f7f6ca30485 Author: Alan Modra Date: Mon Jun 3 11:48:43 2019 +0930 [GOLD] PowerPC relocations for prefix insns Also use pc-relative instructions for notoc stubs. elfcpp/ * powerpc.h (R_PPC64_PCREL_OPT, R_PPC64_D34, R_PPC64_D34_LO), (R_PPC64_D34_HI30, R_PPC64_D34_HA30, R_PPC64_PCREL34), (R_PPC64_GOT_PCREL34, R_PPC64_PLT_PCREL34, R_PPC64_PLT_PCREL34_NOTOC), (R_PPC64_ADDR16_HIGHER34, R_PPC64_ADDR16_HIGHERA34), (R_PPC64_ADDR16_HIGHEST34, R_PPC64_ADDR16_HIGHESTA34), (R_PPC64_REL16_HIGHER34, R_PPC64_REL16_HIGHERA34), (R_PPC64_REL16_HIGHEST34, R_PPC64_REL16_HIGHESTA34), (R_PPC64_D28, R_PPC64_PCREL28): Define. gold/ * powerpc.cc (Target_powerpc): Add powerxx_stubs_ and accessor functions. (Target_powerpc::maybe_skip_tls_get_addr_call): Handle PLT_PCREL34 and PLT_PCREL34_NOTOC relocs. (Powerpc_relocate_functions): Add addr34, addr34_hi, addr34_ha, addr28, addr16_higher34, addr16_highera34, addr16_highest34, addr16_highest34a functions. (li_11_0, ori_11_11_0, sldi_11_11_34): Define. (paddi_12_pc, pld_12_pc, pnop): Define. (d34, ha34): New inline functions. (Stub_table::add_plt_call_entry): Handle powerxx_stubs. (Stub_table::add_eh_frame): Likewise. (build_powerxx_offset): New function. (Stub_table::plt_call_size): Handle powerxx_stubs. (Stub_table::branch_stub_size): Likewise. (Stub_table::do_write): Likewise. (Target_powerpc::Scan::get_reference_flags): Handle new relocs. (Target_powerpc::Scan::reloc_needs_plt_for_ifunc: Likewise. (Target_powerpc::Scan::local, global, relocate): Likewise. commit 220f99066d6ce2a6caf17692fcc57d714d8f6910 Author: Alan Modra Date: Mon Jul 1 14:37:49 2019 +0930 [GOLD] PowerPC notoc eh_frame When generating notoc call and branch stubs without the benefit of pc-relative insns, the stubs need to use LR to access the run time PC. All LR changes must be described in .eh_frame if we're to support unwinding through asynchronous exceptions. That's what this patch does. The patch has gone through way too many iterations. At first I attempted to add multiple FDEs, one for each stub. That ran into difficulties with do_plt_fde_location which is only capable of setting the address of a single FDE per Output_data section, and with removing any FDEs added on a previous do_relax pass. Removing FDEs (git commit be897fb774) went overboard in matching the FDE contents. That means either stashing the contents created for add_eh_frame_for_plt to use when calling remove_eh_frame_for_plt, or recreating contents on the fly (*) just to remove FDEs. In fact, FDE content matching is quite unnecesary. FDEs added by a previous do_relax pass are those with u_.from_linker.post_map set. So they can easily be recognised just by looking at that flag. This patch keeps that part of the multiple FDE changes. In the end I went for just one FDE per stub group to describe the call stubs. That's reasonably efficient for the common case of only needing to describe the __tls_get_addr_opt call stub. We don't expect to be making many calls using notoc stubs without pc-relative insns. *) Which has it's own set of problems. The contents must be recreated using the old stub layout, but .eh_frame size can affect stub requirements so you need to temporarily keep the old .eh_frame size when creating new stubs, then reset .eh_frame size before adding new FDEs. * ehframe.cc (Fde::operator==): Delete. (Cie::remove_fde): Delete. (Eh_frame::remove_ehframe_for_plt): Delete fde_data and fde_length parameters. Remove all post-map plt FDEs. * ehframe.h (Fde:post_map): Make const, add variant to compare plt. (Fde::operator==): Delete. (Cie::remove_fde): Implement here. (Cie::last_fde): New accessor. (Eh_frame::remove_ehframe_for_plt): Update prototype. * layout.cc (Layout::remove_eh_frame_for_plt): Delete fde_data and fde_length parameters. * layout.h (Layout::remove_eh_frame_for_plt): Update prototype. * powerpc.cc (Stub_table::tls_get_addr_opt_bctrl_): Delete. (Stub_table::plt_fde_len_, plt_fde_, init_plt_fde): Delete. (Stub_table::add_plt_call_entry): Don't set tls_get_addr_opt_bctrl_. (eh_advance): New function. (stub_sort): New function. (Stub_table::add_eh_frame): Emit eh_frame for notoc plt calls and branches as well as __tls_get_addr_opt plt call stub. (Stub_table::remove_eh_frame): Update to suit. commit 32f598441988e5a086ba8580e82f4944c3692eb5 Author: Alan Modra Date: Tue Jun 18 15:33:38 2019 +0930 [GOLD] PowerPC64 ELFv2 notoc support Calls from notoc functions via the PLT need different stubs. Even calls to local functions requiring a valid toc pointer must go via a stub. This patch provides the support in gold. elfcpp/ * powerpc.h (R_PPC64_PLTSEQ_NOTOC, R_PPC64_PLTCALL_NOTOC): Define. gold/ * powerpc.cc (Target_powerpc::maybe_skip_tls_get_addr_call): Handle notoc calls. (is_branch_reloc): Template on size. Return true for REL24_NOTOC. Update all callers. (max_branch_delta): Likewise. (Target_powerpc::Branch_info::make_stub): Add a stub for notoc calls to functions needing a valid toc pointer. (Target_powerpc::do_relax): Layout stubs again if any need resize. (add_12_11_12, addi_12_11, addis_12_11, ldx_12_11_12, ori_12_12_0), (oris_12_12_0, sldi_12_12_32): Define. (Stub_table::Plt_stub_ent): Add notoc_ and iter_ fields. (Stub_table::Branch_stub_key, Branch_stub_key_hash): Rename from Branch_stub_ent and Branch_stub_ent hash. Remove save_res_ from key. (Stub_table::Branch_stub_ent): New struct. (class Stub_table): Add need_resize and resizing vars. (Stub_table::need_resize, branch_size): New accessors. (Stub_table::set_resizing): New function. (Stub_table::add_plt_call_entry): Handle notoc calls and resizing on seeing such or a tocsave stubs after a normal stub using the same sym. (Stub_table::add_long_branch_entry): Similarly. (Stub_table::find_long_branch_entry): Return a Branch_stub_ent*. (Stub_table::define_stub_syms): Adjust (Stub_table::build_tls_opt_head, build_tls_opt_tail): New functions. (build_notoc_offset): New function. (Stub_table::plt_call_size): Move out of line. Handle notoc calls. (Stub_table::branch_stub_size): Similarly. (Stub_table::do_write): Separate loop for ELFv2 stubs, handling notoc calls. Simplify ELFv1 loop. Output notoc branch stubs. Use build_tls_opt_head and build_tls_opt_tail. (Target_powerpc::Scan::get_reference_flags): Handle REL24_NOTOC. (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Likewise, and PLTSEQ_NOTOC and PLTCALL_NOTOC. (Target_powerpc::Scan::local, global, relocate): Likewise. commit 154a0a90ddde3a5d538830527ffd6d128cb23b1b Author: GDB Administrator Date: Sat Jul 13 00:00:14 2019 +0000 Automatic date update in version.in commit 0d4e84ed37c404eb7e691ee9d68ae2ec758d8f66 Author: Andrew Burgess Date: Fri Mar 1 11:06:23 2019 +0000 gdb: Better support for dynamic properties with negative values When the type of a property is smaller than the CORE_ADDR in which the property value has been placed, and if the property is signed, then sign extend the property value from its actual type up to the size of CORE_ADDR. gdb/ChangeLog: * dwarf2loc.c (dwarf2_evaluate_property): Sign extend property value if its desired type is smaller than a CORE_ADDR and signed. gdb/testsuite/ChangeLog: * gdb.fortran/vla-ptype.exp: Print array with negative bounds. * gdb.fortran/vla-sizeof.exp: Print the size of an array with negative bounds. * gdb.fortran/vla-value.exp: Print elements of an array with negative bounds. * gdb.fortran/vla.f90: Setup an array with negative bounds for testing. commit 9a49df9d4bfc7ff03fed751e12b1bc32fbee4fb2 Author: Andrew Burgess Date: Wed May 8 13:16:03 2019 +0100 gdb: Carry default property type around with dynamic properties This commit is preparation for the next one, with the aim of better supporting signed dynamic properties on targets where the address size specified in the DWARF headers is smaller than a CORE_ADDR, for example debugging an i386 application on x86-64. Consider this small Fortran program 'bounds.f90': program test integer, allocatable :: array (:) allocate (array (-5:5)) array(3) = 1 end program test Compiled with 'gfortran -m32 -g3 -O0 -o bounds bounds.f90'. The DWARF for 'array' looks like this: <2><97>: Abbrev Number: 10 (DW_TAG_variable) <98> DW_AT_name : (indirect string, offset: 0x0): array <9c> DW_AT_decl_file : 1 <9d> DW_AT_decl_line : 2 <9e> DW_AT_type : <0xaf> DW_AT_location : 2 byte block: 91 58 (DW_OP_fbreg: -40) <2>: Abbrev Number: 11 (DW_TAG_lexical_block) DW_AT_low_pc : 0x80485c3 DW_AT_high_pc : 0x8b <2>: Abbrev Number: 0 <1>: Abbrev Number: 12 (DW_TAG_array_type) DW_AT_data_location: 2 byte block: 97 6 (DW_OP_push_object_address; DW_OP_deref) DW_AT_allocated : 4 byte block: 97 6 30 2e (DW_OP_push_object_address; DW_OP_deref; DW_OP_lit0; DW_OP_ne) DW_AT_type : <0x2a> <2>: Abbrev Number: 13 (DW_TAG_subrange_type) DW_AT_lower_bound : 4 byte block: 97 23 10 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 16; DW_OP_deref) DW_AT_upper_bound : 4 byte block: 97 23 14 6 (DW_OP_push_object_address; DW_OP_plus_uconst: 20; DW_OP_deref) DW_AT_byte_stride : 6 byte block: 97 23 c 6 34 1e (DW_OP_push_object_address; DW_OP_plus_uconst: 12; DW_OP_deref; DW_OP_lit4; DW_OP_mul) <2>: Abbrev Number: 0 If we look at the DW_AT_lower_bound attribute, which will become a dynamic property that GDB evaluates when needed by calling dwarf2_evaluate_property. The process of evaluating a dynamic property requires GDB to execute each DW_OP_* operation, the results of these operations is held on a stack of 'struct value *'s. When the entire expression is evaluated the result is on top of the stack. If we look at DW_AT_lower_bound then the last operation is DW_OP_deref, this loads a signed address the size of which matches the DWARF address size, and so in our i386 on x86-64 situation, the top of the stack will be a signed 4-byte value. The problem is how these values are fetched from the stack. Currently they are always fetched by a call to dwarf_expr_context::fetch_address, which converts the value to an unsigned value with a length matching the values current length, before converting to a CORE_ADDR. This means we loose the signed nature of the property. I wonder if the best solution for dealing with signed properties will be to move away from an over reliance on fetch_address, and instead come up with a new solution that considers the current type of the value on the stack, and the type that the value needs to become; basically a solution built around casting rather than assuming we always want an address. However, before we can start to even think about moving away from fetch_address, there is a more urgent issue to fix, which is we don't currently know what type each property should be. We just hold the value of the property in a CORE_ADDR as returned by fetch_address, and rely on higher level code (outside of the DWARF expression evaluation code) to fix things up for us. This is what this patch aims to address. When creating a dynamic property (see attr_to_dynamic_prop in dwarf2read.c) we can sometimes figure out the type of a property; if the property is a reference to another DIE then it will have a DW_AT_type attribute. However, the DW_AT_lower_bound case above isn't a reference to another DIE, it's just a DWARF expression. We don't have any indication for what type the property should have. Luckily, the DWARF spec helps us out, for the lower and upper bounds 5.13 of the DWARFv5 spec tells us that without any other type information the bounds are signed integers the same size as a DWARF address. It is my belief that we can find a suitable default type for every dynamic property, either specified explicitly in the DWARF spec, or we can infer an obvious choice if the spec doesn't help us. This commit extends the creation of all dynamic properties to include suggesting a suitable default type, all dynamic properties now always carry their type around with them. In later commits we can use this property type to ensure that the value we extract from the DWARF stack is handled in a suitable manor to correctly maintain its sign extension. There should be no user visible changes from this commit. The actual fix to correctly support negative array bounds will come later. gdb/ChangeLog: * dwarf2loc.c (dwarf2_evaluate_property): Update to take account of changes to field names, and use new is_reference field to decide if a property is a reference or not. * dwarf2loc.h (struct dwarf2_locexpr_baton): Add 'is_reference' field. (struct dwarf2_property_baton): Update header comment, rename 'referenced_type' to 'property_type' and update comments. * dwarf2read.c (attr_to_dynamic_prop): Add extra parameter to hold default property type, store in property baton, update to take accound of renamed field. (read_func_scope): Update call to attr_to_dynamic_prop. (read_array_type): Likewise. (dwarf2_per_cu_addr_sized_int_type): New function. (read_subrange_index_type): Move type finding code to dwarf2_per_cu_addr_sized_int_type. (read_subrange_type): Update calls to attr_to_dynamic_prop. (dwarf2_per_cu_addr_type): New function. (set_die_type): Update calls to attr_to_dynamic_prop. commit b86352cfc17fb7f07d5da9efcfd59f8b2bd08eee Author: Andrew Burgess Date: Wed May 8 00:01:14 2019 +0100 gdb/dwarf: Ensure the target type of ranges is not void If a DW_TAG_subrange_type DWARF entry has no DW_AT_type then a default type based on the size of an address on the current target is assumed. We store this type as the target type for GDB's range types. Currently GDB can create ranges for which the target type is VOID, this is incorrect but seems to cause no problems. I believe the reason this doesn't cause any issues is because the languages (for example Ada) that actually make use of a ranges target type also have compilers that generate DWARF that includes a DW_AT_type attribute. However, gfortran does not include a DW_AT_type, its DWARF instead relies on the default target type. This isn't currently a problem for GDB as gfortran doesn't make use of the target type when printing subranges, but it shouldn't hurt to fix this issue now. I've added an assert into create_range_type that will catch this issue if it comes up again. This was tested on an x86-64/GNU-Linux machine with both the Ada and gfortran compilers available with both '--target_board=unix' and '--target_board=unix/-m32'. There are no user visible changes after this commit. gdb/ChangeLog: * dwarf2read.c (read_subrange_index_type): New function. (read_subrange_type): Move code into new function and call it. * gdbtypes.c (create_range_type): Add some asserts. commit 603490bf53fe1885ef45f9d0fb783b32f8ef6049 Author: Andrew Burgess Date: Sun May 5 00:15:07 2019 +0100 gdb: Convert dwarf2_evaluate_property to return bool Convert dwarf2_evaluate_property to return a bool, there should be no user visible change after this commit. gdb/ChangeLog: * dwarf2loc.c (dwarf2_evaluate_property): Change return type, and update return statements. * dwarf2loc.h (dwarf2_evaluate_property): Update return type on declaration, and update comment to match. * gdbtypes.c (resolve_dynamic_array): Update call to dwarf2_evaluate_property to match new return type. commit 592f9d271caaa22a6b299cfaaf6ce3394796e0e2 Author: Andrew Burgess Date: Wed Apr 24 17:50:40 2019 +0100 gdb: Update type of lower bound in value_subscripted_rvalue The dynamic lower (and upper) bounds of ranges are stored as type LONGEST (see union dynamic_prop_data in gdbtypes.h). In most places that range bounds are handled they are held in a LONGEST, however in value_subscripted_rvalue the bound is placed into an int. This commit changes value_subscripted_rvalue to use LONGEST, there should be no user visible changes after this commit. gdb/ChangeLog: * valarith.c (value_subscripted_rvalue): Change lowerbound parameter type from int to LONGEST. * value.h (value_subscripted_rvalue): Likewise in declaration. commit 830b67068cebe7db0eb0db3fa19244e03859fae0 Author: Tom de Vries Date: Fri Jul 12 09:53:02 2019 +0200 [readline] Fix heap-buffer-overflow in update_line When: - building trunk gdb with '-fsanitize=address -lasan', - running gdb tests with "export ASAN_OPTIONS=detect_leaks=0", I run into a heap-buffer-overflow failure for gdb.base/utf8-identifiers.exp. In more detail, the libasan error report looks like this: ... ================================================================= ==22340==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x619000054a80 at pc 0x7fcd0306b4c9 bp 0x7fffb1a8d880 sp 0x7fffb1a8d030 READ of size 32766 at 0x619000054a80 thread T0 #0 0x7fcd0306b4c8 (/usr/lib64/libasan.so.4+0xae4c8) #1 0x15f12a1 in update_line /data/gdb_versions/devel/src/readline/display.c:1377 #2 0x15f03cb in rl_redisplay /data/gdb_versions/devel/src/readline/display.c:1204 #3 0x15bf932 in readline_internal_setup /data/gdb_versions/devel/src/readline/readline.c:394 #4 0x15fe723 in _rl_callback_newline /data/gdb_versions/devel/src/readline/callback.c:89 #5 0x15fe7ef in rl_callback_handler_install /data/gdb_versions/devel/src/readline/callback.c:102 #6 0xd7bce6 in gdb_rl_callback_handler_install(char const*) /data/gdb_versions/devel/src/gdb/event-top.c:319 #7 0xd7c0c6 in display_gdb_prompt(char const*) /data/gdb_versions/devel/src/gdb/event-top.c:409 #8 0xd7d6c1 in command_line_handler(std::unique_ptr >&&) /data/gdb_versions/devel/src/gdb/event-top.c:776 #9 0xd7b92a in gdb_rl_callback_handler /data/gdb_versions/devel/src/gdb/event-top.c:217 #10 0x15ff479 in rl_callback_read_char /data/gdb_versions/devel/src/readline/callback.c:220 #11 0xd7b4d5 in gdb_rl_callback_read_char_wrapper_noexcept /data/gdb_versions/devel/src/gdb/event-top.c:175 #12 0xd7b6b5 in gdb_rl_callback_read_char_wrapper /data/gdb_versions/devel/src/gdb/event-top.c:192 #13 0xd7c8aa in stdin_event_handler(int, void*) /data/gdb_versions/devel/src/gdb/event-top.c:514 #14 0xd76ca7 in handle_file_event /data/gdb_versions/devel/src/gdb/event-loop.c:731 #15 0xd7751f in gdb_wait_for_event /data/gdb_versions/devel/src/gdb/event-loop.c:857 #16 0xd7547e in gdb_do_one_event() /data/gdb_versions/devel/src/gdb/event-loop.c:321 #17 0xd75526 in start_event_loop() /data/gdb_versions/devel/src/gdb/event-loop.c:370 #18 0x101b04c in captured_command_loop /data/gdb_versions/devel/src/gdb/main.c:331 #19 0x101de73 in captured_main /data/gdb_versions/devel/src/gdb/main.c:1173 #20 0x101df03 in gdb_main(captured_main_args*) /data/gdb_versions/devel/src/gdb/main.c:1188 #21 0x872dba in main /data/gdb_versions/devel/src/gdb/gdb.c:32 #22 0x7fcd00f2ff49 in __libc_start_main (/lib64/libc.so.6+0x20f49) #23 0x872bc9 in _start (/data/gdb_versions/devel/build/gdb/gdb+0x872bc9) 0x619000054a80 is located 0 bytes to the right of 1024-byte region [0x619000054680,0x619000054a80) allocated by thread T0 here: #0 0x7fcd03099510 in malloc (/usr/lib64/libasan.so.4+0xdc510) #1 0xae0078 in xmalloc /data/gdb_versions/devel/src/gdb/common/common-utils.c:44 #2 0x15eaccb in init_line_structures /data/gdb_versions/devel/src/readline/display.c:458 #3 0x15eb4d8 in rl_redisplay /data/gdb_versions/devel/src/readline/display.c:526 #4 0x15bf932 in readline_internal_setup /data/gdb_versions/devel/src/readline/readline.c:394 #5 0x15fe723 in _rl_callback_newline /data/gdb_versions/devel/src/readline/callback.c:89 #6 0x15fe7ef in rl_callback_handler_install /data/gdb_versions/devel/src/readline/callback.c:102 #7 0xd7bce6 in gdb_rl_callback_handler_install(char const*) /data/gdb_versions/devel/src/gdb/event-top.c:319 #8 0xd7c0c6 in display_gdb_prompt(char const*) /data/gdb_versions/devel/src/gdb/event-top.c:409 #9 0xaa041b in cli_interp_base::pre_command_loop() /data/gdb_versions/devel/src/gdb/cli/cli-interp.c:286 #10 0xf5342a in interp_pre_command_loop(interp*) /data/gdb_versions/devel/src/gdb/interps.c:320 #11 0x101b047 in captured_command_loop /data/gdb_versions/devel/src/gdb/main.c:328 #12 0x101de73 in captured_main /data/gdb_versions/devel/src/gdb/main.c:1173 #13 0x101df03 in gdb_main(captured_main_args*) /data/gdb_versions/devel/src/gdb/main.c:1188 #14 0x872dba in main /data/gdb_versions/devel/src/gdb/gdb.c:32 #15 0x7fcd00f2ff49 in __libc_start_main (/lib64/libc.so.6+0x20f49) SUMMARY: AddressSanitizer: heap-buffer-overflow (/usr/lib64/libasan.so.4+0xae4c8) Shadow bytes around the buggy address: 0x0c3280002900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c3280002910: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c3280002920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c3280002930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c3280002940: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x0c3280002950:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c3280002960: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa 0x0c3280002970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c3280002980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c3280002990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c32800029a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==22340==ABORTING ... I've written an assert in rl_redisplay that formulates the error condition: ... @@ -1387,6 +1389,10 @@ rl_redisplay (void) cpos_adjusted = 0; + assert (last_lmargin + (_rl_screenwidth + visible_wrap_offset) + <= line_size); + assert (lmargin + (_rl_screenwidth + (lmargin ? 0 : wrap_offset)) + <= line_size); update_line (&visible_line[last_lmargin], &invisible_line[lmargin], 0, _rl_screenwidth + visible_wrap_offset, _rl_screenwidth + (lmargin ? 0 : wrap_offset), 0); ... which triggers without needing the address sanitizer (or even an executable), like this: ... $ TERM=dumb gdb -q -ex "set width 0" gdb: src/display.c:1393: rl_redisplay: Assertion `last_lmargin + (_rl_screenwidth + visible_wrap_offset) <= line_size' failed. Aborted (core dumped) ... The basic problem is this: visible_line and invisible_line have length line_size, but the update_line call assumes that line_size is at least _rl_screenwidth + 1. Executing "set width 0" sets _rl_screenwidth to 32766 but doesn't affect line_size, which is initialized to 1024. Fix this by ensuring in init_line_structures and rl_redisplay that line_size is at least _rl_screenwidth + 1. Tested on x86_64-linux. Reviewed by readline maintainer ( https://sourceware.org/ml/gdb-patches/2019-05/msg00566.html ). readline/ChangeLog.gdb: 2019-07-12 Tom de Vries Chet Ramey PR cli/24514 * readline/display.c (init_line_structures, rl_redisplay): Ensure line_size is at least _rl_screenwidth + 1. commit a89fdbdb201764e3989e9113e03a769091d42cce Author: GDB Administrator Date: Fri Jul 12 00:00:19 2019 +0000 Automatic date update in version.in commit 60cfcb20ce8f95a6f71f68c51b295defa5d27032 Author: Andrew Burgess Date: Thu Jul 11 15:39:55 2019 +0100 gdb: Add command completers for some info commands Add command completion for info variables, functions, args, and locals. This completer only completes the command line options as these commands all take a regexp which GDB can't really offer completions for. gdb/ChangeLog: * cli/cli-utils.c (info_print_command_completer): New function. * cli/cli-utils.h: Add 'completer.h' include, and forward declaration for 'struct cmd_list_element'. (info_print_command_completer): Declare. * stack.c (_initialize_stack): Add completer for 'info locals' and 'info args'. * symtab.c (_initialize_symtab): Add completer for 'info variables' and 'info functions'. * NEWS: Mention completion for additional info commands. commit b16507e0917169555f8bbfcb1d6c9685813ccf6c Author: Andrew Burgess Date: Wed Jul 10 22:52:38 2019 +0100 gdb: Make use of gdb::option framework for some info commands Update the 'info variables', 'info functions', 'info locals', and 'info args' commands to make use of the gdb::options framework. There should be no user visible changes after this commit as I have left the help text generation using the existing mechanism, which already tries to customise the text for each of the commands. gdb/ChangeLog: * cli/cli-utils.c (extract_info_print_args): Delete. (extract_arg_maybe_quoted): Delete. (info_print_options_defs): New variable. (make_info_print_options_def_group): New function. (extract_info_print_options): Define new function. * cli/cli-utils.h (extract_info_print_args): Delete. (struct info_print_options): New structure. (extract_info_print_options): Declare new function. * stack.c (info_locals_command): Update to use new extract_info_print_options, also add a header comment. (info_args_command): Likewise. * symtab.c (info_variables_command): Likewise. (info_functions_command): Likewise. commit 021d8588f6ca843a2aada955d00851fbb62f8a62 Author: Andrew Burgess Date: Thu Jul 11 11:08:42 2019 +0100 gdb: Allow quoting around string options in the gdb::option framework Currently string options must be a single string with no whitespace, this limitation prevents the gdb::option framework being used in some places. After this commit, string options can be quoted in single or double quotes, and quote characters can be escaped with a backslash if needed to either place them within quotes, or to avoid starting a quoted argument. This test adds a new function extract_string_maybe_quoted which is basically a copy of extract_arg_maybe_quoted from cli/cli-utils.c, however, the cli-utils.c function will be deleted in the next commit. There are tests to exercise the new quoting mechanism. gdb/ChangeLog: * cli/cli-option.c (parse_option): Use extract_string_maybe_quoted to extract string arguments. * common/common-utils.c (extract_string_maybe_quoted): New function. * common/common-utils.h (extract_string_maybe_quoted): Declare. gdb/testsuite/ChangeLog: * gdb.base/options.exp (expect_string): Dequote strings in results. (test-string): Test strings with different quoting and reindent. commit b777eb6de24ae1a1dc2f1e48d593b0a5c79937a9 Author: Tom Tromey Date: Thu Jul 11 08:54:17 2019 -0600 Remove init_cli_cmds I noticed that init_cli_cmds only installs a command, and so doesn't need to be handled specially. This patch merges it into _initialize_cli_cmds. The help text is constructed dynamically, which is sometimes an indication that special treatment is needed; but in this case it is just to insert the value of "gdbinit", which is created at compile-time and not modified; so this doesn't affect the result. This version also removes the "gdbinit" global. There's no need for it, as GDBINIT can be used instead. Note, though, that the help text in question must still be dynamically constructed, in order to be i18n-friendly. gdb/ChangeLog 2019-07-11 Tom Tromey * main.c (get_init_files): Use GDBINIT, not gdbinit. * auto-load.c (file_is_auto_load_safe): Use GDBINIT, not gdbinit. * top.h (gdbinit): Don't declare. * cli/cli-cmds.c (init_cli_cmds): Remove, merging contents into... (_initialize_cli_cmds): ...here. Use GDBINIT, not gdbinit. * top.c (gdb_init): Don't call init_cli_cmds. (gdbinit): Remove. * cli/cli-cmds.h (init_cli_cmds): Don't declare. commit 72ee03ff58d954dbed886b672032c8c9db0a0dcc Author: Tom Tromey Date: Thu Jul 11 09:09:52 2019 -0600 Fix use-after-move bug in add_thread_object commit 05b08ac1608 ("Reduce manual reference counting in py-inferior.c") introduced a use-after-move bug in add_thread_object, causing a test suite failure. This patch fixes the bug. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-07-11 Tom Tromey * python/py-inferior.c (add_thread_object): Don't use thread_obj after it has been moved. commit 00db9531969db8b6ab984da996d0411fad938589 Author: Simon Marchi Date: Wed Jul 10 21:49:32 2019 -0400 Make value_must_coerce_to_target return a bool ... and move comment to header file. gdb/ChangeLog: * valops.c (value_must_coerce_to_target): Change return type to bool. * value.h (value_must_coerce_to_target): Likewise. commit f2478a7e8b145a55c343bc7a62c53b021062229e Author: Simon Marchi Date: Wed Jul 10 21:20:38 2019 -0400 breakpoint: Make is_*point functions return bool This includes changing the FILTER parameters of two functions accordingly. I also tried to normalize the function comments to our current standards. gdb/ChangeLog: * breakpoint.c (is_hardware_watchpoint): Remove forward-declaration. (is_masked_watchpoint): Change return type to bool. (is_tracepoint): Likewise. (is_breakpoint): Likewise. (is_hardware_watchpoint): Likewise. (is_watchpoint): Likewise. (is_no_memory_software_watchpoint): Likewise. (is_catchpoint): Likewise. (breakpoint_1): Make FILTER parameter's return type bool. is_masked_watchpoint): Change return type to bool. (save_breakpoints): Make FILTER parameter's return type bool. * breakpoint.h (is_breakpoint): Change return type to bool. (is_watchpoint): Likewise. (is_catchpoint): Likewise. (is_tracepoint): Likewise. commit 2ee0a9b7bcd86721bd44d8a8fc967b2a8cbe18e0 Author: GDB Administrator Date: Thu Jul 11 00:00:37 2019 +0000 Automatic date update in version.in commit 0d12e84cfc9bd36b7bbda01a3c8f83f65a832398 Author: Tom Tromey Date: Sun Jun 9 15:21:02 2019 -0600 Don't include gdbarch.h from defs.h I touched symtab.h and was surprised to see how many files were rebuilt. I looked into it a bit, and found that defs.h includes gdbarch.h, which in turn includes many things. gdbarch.h is only needed by a minority ofthe files in gdb, so this patch removes the include from defs.h and updates the fallout. I did "wc -l" on the files in build/gdb/.deps; this patch reduces the line count from 139935 to 137030; so there are definitely future build-time savings here. Note that while I configured with --enable-targets=all, it's possible that some *-nat.c file needs an update. I could not test all of these. The buildbot caught a few problems along these lines. gdb/ChangeLog 2019-07-10 Tom Tromey * defs.h: Don't include gdbarch.h. * aarch64-ravenscar-thread.c, aarch64-tdep.c, alpha-bsd-tdep.h, alpha-linux-tdep.c, alpha-mdebug-tdep.c, arch-utils.h, arm-tdep.h, ax-general.c, btrace.c, buildsym-legacy.c, buildsym.h, c-lang.c, cli/cli-decode.h, cli/cli-dump.c, cli/cli-script.h, cli/cli-style.h, coff-pe-read.h, compile/compile-c-support.c, compile/compile-cplus.h, compile/compile-loc2c.c, corefile.c, cp-valprint.c, cris-linux-tdep.c, ctf.c, d-lang.c, d-namespace.c, dcache.c, dicos-tdep.c, dictionary.c, disasm-selftests.c, dummy-frame.c, dummy-frame.h, dwarf2-frame-tailcall.c, dwarf2expr.c, expression.h, f-lang.c, frame-base.c, frame-unwind.c, frv-linux-tdep.c, gdbarch-selftests.c, gdbtypes.h, go-lang.c, hppa-nbsd-tdep.c, hppa-obsd-tdep.c, i386-dicos-tdep.c, i386-tdep.h, ia64-vms-tdep.c, interps.h, language.c, linux-record.c, location.h, m2-lang.c, m32r-linux-tdep.c, mem-break.c, memattr.c, mn10300-linux-tdep.c, nios2-linux-tdep.c, objfiles.h, opencl-lang.c, or1k-linux-tdep.c, p-lang.c, parser-defs.h, ppc-tdep.h, probe.h, python/py-record-btrace.c, record-btrace.c, record.h, regcache-dump.c, regcache.h, riscv-fbsd-tdep.c, riscv-linux-tdep.c, rust-exp.y, sh-linux-tdep.c, sh-nbsd-tdep.c, source-cache.c, sparc-nbsd-tdep.c, sparc-obsd-tdep.c, sparc-ravenscar-thread.c, sparc64-fbsd-tdep.c, std-regs.c, target-descriptions.h, target-float.c, tic6x-linux-tdep.c, tilegx-linux-tdep.c, top.c, tracefile.c, trad-frame.c, type-stack.h, ui-style.c, utils.c, utils.h, valarith.c, valprint.c, varobj.c, x86-tdep.c, xml-support.h, xtensa-linux-tdep.c, cli/cli-cmds.h: Update. * s390-linux-nat.c, procfs.c, inf-ptrace.c: Likewise. commit f06f1252b0b8ef20adb4296faaf8293c9d36f615 Author: Tom Tromey Date: Wed Jul 10 11:05:20 2019 -0600 Change Ada catchpoints to be bp_catchpoint Like Pedro's earlier patches to change catchpoint to be of type bp_catchpoint, this changes the Ada catchpoints to follow. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-07-10 Tom Tromey * ada-lang.h (is_ada_exception_catchpoint): Declare. * breakpoint.c (init_ada_exception_breakpoint): Register as bp_catchpoint. (print_one_breakpoint_location, print_one_breakpoint): Use is_ada_exception_catchpoint. * ada-lang.c (class ada_catchpoint_location): Pass bp_loc_software_breakpoint to bp_location constructor. (is_ada_exception_catchpoint): New function. gdb/testsuite/ChangeLog 2019-07-10 Tom Tromey * gdb.ada/mi_ex_cond.exp: Update expected results. * gdb.ada/mi_catch_ex_hand.exp: Update expected results. * gdb.ada/mi_catch_ex.exp: Update expected results. * gdb.ada/mi_catch_assert.exp: Update expected results. * gdb.ada/catch_ex.exp (catch_exception_info) (catch_exception_entry, catch_assert_entry) (catch_unhandled_entry): Update. * gdb.ada/catch_assert_if.exp: Update expected results. commit 7a5d944b9e86bf73ae5acaa984df24d175b80f68 Author: Tom Tromey Date: Tue Jul 2 13:45:28 2019 -0600 Change arm-tdep.c to use type-safe registry This changes arm-tdep.c to use the type-safe registry, removing a use of VEC in the process. 2019-07-10 Tom Tromey * arm-tdep.c (arm_exidx_entry_s): Remove typedef. Don't define VEC. (struct arm_exidx_entry): New method operator<. (struct arm_exidx_data) : Change type. (arm_exidx_data_free): Remove. (arm_exidx_data_key): Change type. Move lower. (arm_exidx_new_objfile): Update. (arm_compare_exidx_entries): Remove. (arm_find_exidx_entry, _initialize_arm_tdep) commit 48c66e1d07d65a76c685d10003d751ef883b1244 Author: Tom Tromey Date: Thu Jun 27 13:52:42 2019 -0600 Change solib-spu.c to use type-safe registry This changes solib-spu.c to use the type-safe registry. 2019-07-10 Tom Tromey * solib-spu.c (ocl_program_data_key): Change type. (append_ocl_sos, ocl_enable_break, _initialize_spu_solib): Update. commit a269fbf12dcc621c45030ab9956ae28053878b7c Author: Tom Tromey Date: Thu Jun 27 13:48:44 2019 -0600 Change solib-aix.c to use type-safe registry This changes solib-aix.c to use the type-safe registry, and removes a use of VEC in the process. gdb/ChangeLog 2019-07-10 Tom Tromey * solib-aix.c (lm_info_aix_p): Remove typedef. Don't define VEC. (struct solib_aix_inferior_data) : Change type. (solib_aix_inferior_data_handle): Change type. (get_solib_aix_inferior_data): Update. (solib_aix_free_library_list): Remove. (library_list_start_library): Update. (solib_aix_parse_libraries, solib_aix_get_library_list): Change return type. (solib_aix_get_library_list) (solib_aix_solib_create_inferior_hook, solib_aix_current_sos) (solib_aix_normal_stop_observer, _initialize_solib_aix): Update. commit c294730c54f15ea69b18025025c0f191e5876301 Author: Tom Tromey Date: Wed Jun 26 13:16:18 2019 -0600 Change solib-dsbt.c to use type-safe registry This changes solib-dsbt.c to use the type-safe registry. 2019-07-10 Tom Tromey * solib-dsbt.c (struct dsbt_info): Add initializers. (solib_dsbt_pspace_data): Change type. (dsbt_pspace_data_cleanup): Remove. (get_dsbt_info, _initialize_dsbt_solib): Update. commit 9d52077d65206b1e0df62f05b577b5ceede1228a Author: Tom Tromey Date: Wed Jun 26 13:14:29 2019 -0600 Change spu-tdep.c to use type-safe registry This changes spu-tdep.c to use the type-safe registry. 2019-07-10 Tom Tromey * spu-tdep.c (spu_overlay_data): Change type. (spu_get_overlay_table, spu_overlay_new_objfile) (_initialize_spu_tdep): Update. commit 22a20dca3a96c481093bdff5e17f1feb0f9e345c Author: Tom Tromey Date: Wed Jun 26 13:12:13 2019 -0600 Change dbxread.c to use type-safe registry This changes dbxread.c to use the type-safe registry. In a couple of spots, you'll see that dbx_objfile_data_key.emplace is called but the result is not used; this is because those functions refer to the key via the various DBX_* macros. 2019-07-10 Tom Tromey * gdb-stabs.h (struct dbx_symfile_info): Add initializers and destructor. (dbx_objfile_data_key): Change type and declare later. (DBX_SYMFILE_INFO): Rewrite. * dbxread.c (dbx_objfile_data_key): Change type. (dbx_symfile_init): Update. (~dbx_symfile_info): Rename from dbx_free_symfile_info. Update. (coffstab_build_psymtabs, elfstab_build_psymtabs) (stabsect_build_psymtabs, _initialize_dbxread): Update. commit cb60f4208b2b920614306937b62bf15700824ee0 Author: Tom Tromey Date: Wed Jun 26 12:47:44 2019 -0600 Change jit.c to use type-safe registry This changes jit.c to use the type-safe registry. Only one of the registry keys in jit.c is converted; the other is trickier and so I've left it be for now. gdb/ChangeLog 2019-07-10 Tom Tromey * jit.c (jit_program_space_key): Change type. Move lower. (get_jit_program_space_data): Update. (jit_program_space_data_cleanup): Remove. (jit_breakpoint_deleted, free_objfile_data, _initialize_jit): Update. (struct jit_program_space_data): Add initializers. commit 51df2ae3029caafd2b832e19d2978114a7e25a8a Author: Tom Tromey Date: Wed Jun 26 12:44:49 2019 -0600 Change solib-darwin.c to use type-safe registry This changes solib-darwin.c to use the type-safe registry. 2019-07-10 Tom Tromey * solib-darwin.c (struct darwin_info): Add initializers. (solib_darwin_pspace_data): Change type. (darwin_pspace_data_cleanup): Remove. (get_darwin_info, _initialize_darwin_solib): Update. commit 18101a352541a28b8e199b4d7b9f66989681dc02 Author: Tom Tromey Date: Wed Jun 26 12:42:14 2019 -0600 Change remote-sim.c to use type-safe registry This changes remote-sim.c to use the type-safe registry. 2019-07-10 Tom Tromey * remote-sim.c (struct sim_inferior_data): Add initializers, constructor, and destructor. (sim_inferior_data_key): Change type. Move lower. (check_for_duplicate_sim_descriptor): Update. (get_sim_inferior_data): Use new. Update. (~sim_inferior_data_cleanup): Rename from sim_inferior_data_cleanup. Simplify. (gdbsim_close_inferior, simulator_command) (sim_command_completer, _initialize_remote_sim): Update. (next_pid, INITIAL_PID): Move earlier. commit 05b08ac1608c8355201db21fe4c871677466f0d5 Author: Tom Tromey Date: Fri Jun 28 08:32:28 2019 -0600 Reduce manual reference counting in py-inferior.c This patch changes py-inferior.c to use gdbpy_ref<> when possible, reducing the amount of manual reference counting. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-07-10 Tom Tromey * python/python-internal.h (create_thread_object): Return gdbpy_ref. * python/py-infthread.c (create_thread_object): Return gdbpy_ref. * python/py-inferior.c (struct threadlist_entry): Add constructor. : Now a gdbpy_ref. (thread_to_thread_object): Update. (add_thread_object): Use new. (delete_thread_object): Use delete. (infpy_threads): Update. (py_free_inferior): Update. Construct "inf_obj" after acquiring GIL. commit 32372d80caba2e223157eca6db2fb0e65369c3c7 Author: Tom Tromey Date: Tue Jun 18 08:59:00 2019 -0600 Specialize value_cast error message for Ada In Ada, the term for a cast is "type conversion". AdaCore has been carrying a local patch to specialize the error message in value_cast, but it seemed fine to me for this to be part of gdb. This also removes a dead "return" statement. gdb/ChangeLog 2019-07-10 Tom Tromey * valops.c (value_cast): Specialize error message for Ada. commit 43dd762689eb80d5c93a6c1079697c3791fb46fa Author: Hans-Peter Nilsson Date: Wed Jul 10 18:38:19 2019 +0200 arm-dis.c (print_insn_coprocessor): Rename index to index_operand. Older gcc warns, arguably incorrectly, about name collisions between global functions and function-local variable names. Consesus has been to rename local variables whenever this is spotted, hence committed as obvious. Note the pre-existing variable named idx; "index_operand" seemed logical given the context. * arm-dis.c (print_insn_coprocessor): Rename index to index_operand. commit 5c458ae8f529a11ecab9db470d80695bb31ecfc5 Author: Simon Marchi Date: Wed Jul 10 12:12:37 2019 -0400 Update breakpoint_1's documentation I noticed the documentation of breakpoint_1 way way out of date, so this is an attempt to update it. I have changed the parameter names to something that seems clearer to me. gdb/ChangeLog: * breakpoint.c (breakpoint_1): Update doc and parameter names. commit 4c462cb0efb40a7a1e5297946bed59286dd0cf02 Author: Simon Marchi Date: Wed Jul 10 12:10:51 2019 -0400 Make some bpstat functions use bool Change return type to bool and adjust function comments. gdb/ChangeLog: * breakpoint.h (bpstat_explains_signal, bpstat_causes_stop, bpstat_should_step): Return bool, adjust comments. * breakpoint.c (bpstat_explains_signal, bpstat_causes_stop, bpstat_should_step): Likewise. commit 89abbcc26d891425678b8b463bc1fa81273fb54c Author: Alan Hayward Date: Thu Jun 20 08:38:18 2019 +0100 Arm: Create feature files for Arm target descriptions Add Arm to the list of feature target description targets and generate the relevant C files. Add arm-m-profile-with-fpa.xml as the feature version of the exisiting arm-with-m-fpa-layout.xml. Add extra comments to the Makefile for readability. New files are not yet used. gdb/ChangeLog: * features/Makefile: Use feature target descriptions for Arm. * features/arm/arm-core.c: Generate new file. * features/arm/arm-fpa.c: Likewise. * features/arm/arm-m-profile-with-fpa.xml: Likewise. * features/arm/arm-m-profile.c: Likewise. * features/arm/arm-vfpv2.c: Likewise. * features/arm/arm-vfpv3.c: Likewise. * features/arm/xscale-iwmmxt.c: Likewise. * target-descriptions.c (maint_print_c_tdesc_cmd): Add Arm. commit b863685d70199489b3fe27abedfb1eb6d1452b7d Author: Richard Bunt Date: Wed Jul 10 14:14:16 2019 +0100 Restore original GDB prompt in define.exp define.exp will fail on a GDB which has set a custom prompt to identify itself. This is because the test resets the prompt to a hard coded "(gdb)" but then verifies the success of this against the value in $gdb_prompt, which is set to the custom prompt. The original approach to fix this involved resetting the prompt to $gdb_prompt rather than a hard coded "(gdb)". However it was noted during review that $gdb_prompt is a regular expression rather than a string. This is problematic because in general the prompt would be reset to a regular expression rather than an instance of a string accepted by said regular expression. The fix used in this commit avoids the above issue by capturing the literal prompt from running "show prompt" and uses this literal to restore the previous prompt. Regression tested with GCC 7.3.0 on x86_64, ppc64le, aarch64. gdb/testsuite/ChangeLog: 2019-07-10 Richard Bunt Stephen Roberts * gdb.base/define.exp: Restore original prompt. commit 166a82be89008621a31e6e56b2d52a049b53e341 Author: Alan Hayward Date: Tue Jun 25 11:04:59 2019 +0100 Arm: Minor style cleanups *When reading a target description, do the ptrace check before picking the target description. *In wmmxregset functions, declare the counter inside the for. *Call arm_linux_init_hwbp_cap from in arm_arch_setup - it doesn't belong in arm_read_description. gdb/ChangeLog: * arm-linux-nat.c (arm_linux_nat_target::read_description): Check ptrace earlier, gdb/gdbserver/ChangeLog: * linux-arm-low.c (arm_fill_wmmxregset, arm_store_wmmxregset): Move counter inside for. (arm_read_description): Check ptrace earlier. (arm_arch_setup): Call arm_linux_init_hwbp_cap here. commit 9fb4c7e9f00accbbf92fc0b0a53978fd50ff6bb0 Author: Alan Hayward Date: Wed Jul 10 11:45:29 2019 +0100 Regenerate aarch64-pauth.c aarch64-pauth.c was slightly out of sync with the generated version. Regenerate it. gdb/ChangeLog: * features/aarch64-pauth.c: Regenerate. commit e2d0f9803e3054b05c2de716f3c928e510009436 Author: Simon Marchi Date: Tue Jul 9 21:20:16 2019 -0400 Make bpstat_what::is_longjmp a bool gdb/ChangeLog: * breakpoint.h (struct bpstat_what) : Change type to bool. (bpstat_what): Use false instead of 0. commit eb6ad40f244ea6dedca1440b0ce3d89c1ecdac0c Author: GDB Administrator Date: Wed Jul 10 00:00:22 2019 +0000 Automatic date update in version.in commit a38118e5d165324b4f9509fd82cf1f1c6421bfc5 Author: Pedro Alves Date: Tue Jul 9 19:26:16 2019 +0100 Make "maint info breakpoints" show "catch catch/throw/rethrow" locations This commit makes "maint info breakpoints" show the internal locations of C++ exception catchpoints: (gdb) info breakpoints Num Type Disp Enb Address What 2 catchpoint keep y exception catch With multiple locations: (gdb) maint info breakpoints Num Type Disp Enb Address What 2 catchpoint keep y exception catch 2.1 y 0x000000000040545f <__cxa_begin_catch+95> inf 1 2.2 y 0x00007ffff71dbe0f <__cxxabiv1::__cxa_begin_catch(void*)+95> inf 1 (gdb) With a single location: (gdb) maint info breakpoints 2 Num Type Disp Enb Address What 2 catchpoint keep y exception catch inf 1 2.1 y 0x00007ffff7bc0b7f <__cxa_begin_catch+95> inf 1 With no locations: (gdb) maint info breakpoints 2 Num Type Disp Enb Address What 2 catchpoint keep y exception catch inf 1 Other catchpoints still show the same way, here a catch signal: (gdb) info breakpoints Num Type Disp Enb Address What 3 catchpoint keep y signal "" (gdb) maint info breakpoints Num Type Disp Enb Address What 3 catchpoint keep y signal "" inf 1 (gdb) Note: I considered making the locations be printed from within breakpoint_ops::print_one(), but gave up given the handling for the broken MI v2 output: /* The mi2 broken format: the main breakpoint tuple ends here, the locations are outside. */ if (!use_fixed_output) bkpt_tuple_emitter.reset (); in print_one_breakpoint. gdb/ChangeLog: 2019-07-09 Pedro Alves * break-catch-throw.c (is_exception_catchpoint): New. * breakpoint.c (print_one_breakpoint_location): New parameter 'raw_loc'. Handle it. Use is_watchpoint/is_catchpoint/is_exception_catchpoint instead of looking at the breakpoint's type. (print_one_breakpoint): If handling "maint info breakpoints", also print locations of exception catchpoints. * breakpoint.h (is_exception_catchpoint): Declare. commit cb1e4e32c2d9588e1d77ea49bafb5dcdc1cff764 Author: Pedro Alves Date: Tue Jul 9 19:26:16 2019 +0100 "catch catch/throw/rethrow", breakpoint -> catchpoint Currently, with: (gdb) catch catch Catchpoint 1 (catch) (gdb) catch throw Catchpoint 2 (throw) (gdb) catch rethrow Catchpoint 3 (rethrow) You get: (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x0000000000b122af exception catch 2 breakpoint keep y 0x0000000000b1288d exception throw 3 breakpoint keep y 0x0000000000b12931 exception rethrow I think it doesn't make much sense usability-wise, to show a catchpoint as a breakpoint. The fact that GDB sets a breakpoint at some magic address in the C++ run time is an implementation detail, IMO. And as seen in the previous patch, such a catchpoint can end up with more than one location/address even, so showing a single address isn't entirely accurate. This commit hides the addresses from view, and makes GDB show "catchpoint" for type as well: (gdb) info breakpoints Num Type Disp Enb Address What 1 catchpoint keep y exception catch 2 catchpoint keep y exception throw 3 catchpoint keep y exception rethrow This comment in the code seems telling: /* We need to reset 'type' in order for code in breakpoint.c to do the right thing. */ cp->type = bp_breakpoint; It kind of suggests that the reason catchpoints end up shown as breakpoints was that it was easier to implement them that way, rather than a desired property. This commit fixes things up to make it possible to have bp_catch breakpoints have software/hardware breakpoint locations, thus eliminating the need for that hack: - redo breakpoint_address_is_meaningful in terms of the location's type rather than breakpoint type. - teach bpstat_what about stepping over the catchpoint locations. - install a allocate_location method for "catch catch/throw/rethrow", one that forces the location type. Note that this also reverts the gdb hunk from: commit 2a8be20359dba9cc684fd3ffa222d985399f3b18 Commit: Tom Tromey CommitDate: Sat Oct 6 22:17:45 2018 -0600 Fix Python gdb.Breakpoint.location crash because now "catch throw" catchpoints hit the if (obj->bp->type != bp_breakpoint) Py_RETURN_NONE; check above, and, adjusts the testcase to no longer expect to see the catchpoint in the gdb.breakpoints() list. (Note: might make sense to do the same to Ada exception catchpoints.) gdb/ChangeLog: 2019-07-09 Pedro Alves * break-catch-throw.c (print_one_exception_catchpoint): Skip the "addr" field. (allocate_location_exception_catchpoint): New. (handle_gnu_v3_exceptions): Don't reset 'type' to bp_breakpoint. (initialize_throw_catchpoint_ops): Install allocate_location_exception_catchpoint as allocate_location method. * breakpoint.c (bpstat_what) : Set action to BPSTAT_WHAT_SINGLE if not stopping and the location's type is not bp_loc_other. (breakpoint_address_is_meaningful): Delete. (bl_address_is_meaningful): New. (breakpoint_locations_match): Adjust comment. (bp_location_from_bp_type): New, factored out of... (bp_location::bp_location(breakpoint *)): ... this. (bp_location::bp_location(breakpoint *, bp_loc_type)): New, factored out of... (bp_location::bp_location(breakpoint *)): ... this. Reimplement. (bp_loc_is_permanent): Use bl_address_is_meaningful instead of breakpoint_address_is_meaningful. (bp_locations_compare): Adjust comment. (update_global_location_list): Use bl_address_is_meaningful instead of breakpoint_address_is_meaningful. * breakpoint.h (bp_location::bp_location(breakpoint *)): New explicit. (bp_location::bp_location(breakpoint *, bp_loc_type)): Declare. * python/py-breakpoint.c (bppy_get_location): No longer check whether location is null. gdb/doc/ChangeLog: 2019-07-09 Pedro Alves * gdb.texinfo (C++ Exception GDB/MI Catchpoint Commands): Adjust examples to show type=catchpoint instead of type=breakpoint and an address. gdb/testsuite/ChangeLog: 2019-07-09 Pedro Alves * gdb.cp/catch-multi-stdlib.exp: Adjust expected "info breakpoints" output. * gdb.cp/exception.exp: Adjust expected "info breakpoints" output. * gdb.python/py-breakpoint.exp: No longer expect that "catch throw" creates breakpoint. * gdb.mi/mi-catch-cpp-exceptions.exp (setup_catchpoint): Expect 'type="catchpoint"'. commit b58a68fe5709ed205c3ac54065f1783ce58d9a01 Author: Pedro Alves Date: Tue Jul 9 19:26:15 2019 +0100 Fix "info break" + "catch catch" + -static-{libstdc++,libgcc} If you debug current GDB, set a "catch catch/throw/rethrow" catchpoint, and then do "info breakpoints", the top GDB hits an internal error: (top-gdb) catch catch Catchpoint 1 (catch) (top-gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y src/gdb/breakpoint.c:6040: internal-error: void print_one_breakpoint_location(breakpoint*, bp_location*, int, bp_location**, int): Assertion `b->loc == NULL || b->loc->next == NULL' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) The assertion in question is asserting that a breakpoint with a print_one method only has one location, and it fails because this catchpoint ends up with two locations. Internally, "catch catch" sets a breakpoint at __cxa_begin_catch. If we do that manually, we see the locations: (top-gdb) b -qualified __cxa_begin_catch Breakpoint 2 at 0xb122b0 (2 locations) (top-gdb) info breakpoints Num Type Disp Enb Address What 2 breakpoint keep y 2.1 y 0x0000000000b122b0 <__cxa_begin_catch> 2.2 y 0x00007ffff2f4ddb0 in __cxxabiv1::__cxa_begin_catch(void*) at ../../../../libstdc++-v3/libsupc++/eh_catch.cc:41 Note that I had used -qualified. It seems strange that we get a location for a namespaced symbol, but that happens because the minimal symbol for that address is indeed called __cxa_begin_catch. The real issue is that gdb is linked with -static-libgcc/-static-libstdc++. And then, it _also_ ends up with shared libstc++ loaded: (top-gdb) info sharedlibrary stdc++ From To Syms Read Shared Object Library 0x00007ffff2f4b380 0x00007ffff2ffc018 Yes /lib64/libstdc++.so.6 Location 2.2 is set within libstdc++.so.6's range: (top-gdb) p 0x00007ffff2f4b380 <= 0x00007ffff2f4ddb0 && 0x00007ffff2f4ddb0 < 0x00007ffff2ffc018 $1 = true So due to -static-lib*, we end up with _two_ copies of the __cxa_begin_catch code: (top-gdb) disassemble 0x0000000000b122b0 Dump of assembler code for function __cxa_begin_catch: 0x0000000000b122b0 <+0>: push %rbx 0x0000000000b122b1 <+1>: mov %rdi,%rbx 0x0000000000b122b4 <+4>: callq 0xb11a80 <__cxa_get_globals> 0x0000000000b122b9 <+9>: movabs $0xb8b1aabcbcd4d500,%rdx ... (top-gdb) disassemble 0x00007ffff2f4ddb0 Dump of assembler code for function __cxxabiv1::__cxa_begin_catch(void*): 0x00007ffff2f4ddb0 <+0>: push %rbx 0x00007ffff2f4ddb1 <+1>: mov %rdi,%rbx 0x00007ffff2f4ddb4 <+4>: callq 0x7ffff2f4a090 <__cxa_get_globals@plt> 0x00007ffff2f4ddb9 <+9>: movabs $0xb8b1aabcbcd4d500,%rdx ... I think we end up with libstdc++.so.6 loaded because libsource-highlight.so depends on it. Irrespective of whether it's a good idea to use -static-libgcc/-static-libstdc++, GDB should not crash. Since there are two copies of the code, it seems right to have more than one location. So the fix is just to remove the assertion. A testcase is included, which mimics the scenerio described above, with binary linked with -static-lib{stdc++,gcc} and a shared library that is linked normally, along with other combinations for good measure. gdb/ChangeLog: 2019-07-09 Pedro Alves PR c++/15468 * breakpoint.c (print_one_breakpoint_location): Remove single-location assert. gdb/testsuite/ChangeLog: 2019-07-09 Pedro Alves PR c++/15468 * gdb.cp/except-multi-location-lib.cc: New. * gdb.cp/except-multi-location-main.cc: New. * gdb.cp/except-multi-location.exp: New. commit 0826779b99b49f7f8df5d186f3c481b6007010d4 Author: Philippe Waroquiers Date: Tue Jul 9 19:36:17 2019 +0200 Fix printcmds.exp failure for wide strings tests. wchar_t type must be known to create wide strings. As this type is predefined when current GDB language is C++, switch to c++ for the wide strings tests. Problem analysis and fix by Sergio. commit 268a13a5a3f7c6b9b6ffc5ac2d1b24eb41f3fbdc Author: Tom Tromey Date: Sun May 5 20:29:24 2019 -0600 Rename common to gdbsupport This is the next patch in the ongoing series to move gdbsever to the top level. This patch just renames the "common" directory. The idea is to do this move in two parts: first rename the directory (this patch), then move the directory to the top. This approach makes the patches a bit more tractable. I chose the name "gdbsupport" for the directory. However, as this patch was largely written by sed, we could pick a new name without too much difficulty. Tested by the buildbot. gdb/ChangeLog 2019-07-09 Tom Tromey * contrib/ari/gdb_ari.sh: Change common to gdbsupport. * configure: Rebuild. * configure.ac: Change common to gdbsupport. * gdbsupport: Rename from common. * acinclude.m4: Change common to gdbsupport. * Makefile.in (CONFIG_SRC_SUBDIR, COMMON_SFILES) (HFILES_NO_SRCDIR, stamp-version, ALLDEPFILES): Change common to gdbsupport. * aarch64-tdep.c, ada-lang.c, ada-lang.h, agent.c, alloc.c, amd64-darwin-tdep.c, amd64-dicos-tdep.c, amd64-fbsd-nat.c, amd64-fbsd-tdep.c, amd64-linux-nat.c, amd64-linux-tdep.c, amd64-nbsd-tdep.c, amd64-obsd-tdep.c, amd64-sol2-tdep.c, amd64-tdep.c, amd64-windows-tdep.c, arch-utils.c, arch/aarch64-insn.c, arch/aarch64.c, arch/aarch64.h, arch/amd64.c, arch/amd64.h, arch/arm-get-next-pcs.c, arch/arm-linux.c, arch/arm.c, arch/i386.c, arch/i386.h, arch/ppc-linux-common.c, arch/riscv.c, arch/riscv.h, arch/tic6x.c, arm-tdep.c, auto-load.c, auxv.c, ax-gdb.c, ax-general.c, ax.h, breakpoint.c, breakpoint.h, btrace.c, btrace.h, build-id.c, build-id.h, c-lang.h, charset.c, charset.h, cli/cli-cmds.c, cli/cli-cmds.h, cli/cli-decode.c, cli/cli-dump.c, cli/cli-option.h, cli/cli-script.c, coff-pe-read.c, command.h, compile/compile-c-support.c, compile/compile-c.h, compile/compile-cplus-symbols.c, compile/compile-cplus-types.c, compile/compile-cplus.h, compile/compile-loc2c.c, compile/compile.c, completer.c, completer.h, contrib/ari/gdb_ari.sh, corefile.c, corelow.c, cp-support.c, cp-support.h, cp-valprint.c, csky-tdep.c, ctf.c, darwin-nat.c, debug.c, defs.h, disasm-selftests.c, disasm.c, disasm.h, dtrace-probe.c, dwarf-index-cache.c, dwarf-index-cache.h, dwarf-index-write.c, dwarf2-frame.c, dwarf2expr.c, dwarf2loc.c, dwarf2read.c, event-loop.c, event-top.c, exceptions.c, exec.c, extension.h, fbsd-nat.c, features/aarch64-core.c, features/aarch64-fpu.c, features/aarch64-pauth.c, features/aarch64-sve.c, features/i386/32bit-avx.c, features/i386/32bit-avx512.c, features/i386/32bit-core.c, features/i386/32bit-linux.c, features/i386/32bit-mpx.c, features/i386/32bit-pkeys.c, features/i386/32bit-segments.c, features/i386/32bit-sse.c, features/i386/64bit-avx.c, features/i386/64bit-avx512.c, features/i386/64bit-core.c, features/i386/64bit-linux.c, features/i386/64bit-mpx.c, features/i386/64bit-pkeys.c, features/i386/64bit-segments.c, features/i386/64bit-sse.c, features/i386/x32-core.c, features/riscv/32bit-cpu.c, features/riscv/32bit-csr.c, features/riscv/32bit-fpu.c, features/riscv/64bit-cpu.c, features/riscv/64bit-csr.c, features/riscv/64bit-fpu.c, features/tic6x-c6xp.c, features/tic6x-core.c, features/tic6x-gp.c, filename-seen-cache.h, findcmd.c, findvar.c, fork-child.c, gcore.c, gdb_bfd.c, gdb_bfd.h, gdb_proc_service.h, gdb_regex.c, gdb_select.h, gdb_usleep.c, gdbarch-selftests.c, gdbthread.h, gdbtypes.h, gnu-nat.c, go32-nat.c, guile/guile.c, guile/scm-ports.c, guile/scm-safe-call.c, guile/scm-type.c, i386-fbsd-nat.c, i386-fbsd-tdep.c, i386-go32-tdep.c, i386-linux-nat.c, i386-linux-tdep.c, i386-tdep.c, i387-tdep.c, ia64-libunwind-tdep.c, ia64-linux-nat.c, inf-child.c, inf-ptrace.c, infcall.c, infcall.h, infcmd.c, inferior-iter.h, inferior.c, inferior.h, inflow.c, inflow.h, infrun.c, infrun.h, inline-frame.c, language.h, linespec.c, linux-fork.c, linux-nat.c, linux-tdep.c, linux-thread-db.c, location.c, machoread.c, macrotab.h, main.c, maint.c, maint.h, memattr.c, memrange.h, mi/mi-cmd-break.h, mi/mi-cmd-env.c, mi/mi-cmd-stack.c, mi/mi-cmd-var.c, mi/mi-interp.c, mi/mi-main.c, mi/mi-parse.h, minsyms.c, mips-linux-tdep.c, namespace.h, nat/aarch64-linux-hw-point.c, nat/aarch64-linux-hw-point.h, nat/aarch64-linux.c, nat/aarch64-sve-linux-ptrace.c, nat/amd64-linux-siginfo.c, nat/fork-inferior.c, nat/linux-btrace.c, nat/linux-btrace.h, nat/linux-namespaces.c, nat/linux-nat.h, nat/linux-osdata.c, nat/linux-personality.c, nat/linux-procfs.c, nat/linux-ptrace.c, nat/linux-ptrace.h, nat/linux-waitpid.c, nat/mips-linux-watch.c, nat/mips-linux-watch.h, nat/ppc-linux.c, nat/x86-dregs.c, nat/x86-dregs.h, nat/x86-linux-dregs.c, nat/x86-linux.c, nto-procfs.c, nto-tdep.c, objfile-flags.h, objfiles.c, objfiles.h, obsd-nat.c, observable.h, osdata.c, p-valprint.c, parse.c, parser-defs.h, ppc-linux-nat.c, printcmd.c, probe.c, proc-api.c, procfs.c, producer.c, progspace.h, psymtab.h, python/py-framefilter.c, python/py-inferior.c, python/py-ref.h, python/py-type.c, python/python.c, record-btrace.c, record-full.c, record.c, record.h, regcache-dump.c, regcache.c, regcache.h, remote-fileio.c, remote-fileio.h, remote-sim.c, remote.c, riscv-tdep.c, rs6000-aix-tdep.c, rust-exp.y, s12z-tdep.c, selftest-arch.c, ser-base.c, ser-event.c, ser-pipe.c, ser-tcp.c, ser-unix.c, skip.c, solib-aix.c, solib-target.c, solib.c, source-cache.c, source.c, source.h, sparc-nat.c, spu-linux-nat.c, stack.c, stap-probe.c, symfile-add-flags.h, symfile.c, symfile.h, symtab.c, symtab.h, target-descriptions.c, target-descriptions.h, target-memory.c, target.c, target.h, target/waitstatus.c, target/waitstatus.h, thread-iter.h, thread.c, tilegx-tdep.c, top.c, top.h, tracefile-tfile.c, tracefile.c, tracepoint.c, tracepoint.h, tui/tui-io.c, ui-file.c, ui-out.h, unittests/array-view-selftests.c, unittests/child-path-selftests.c, unittests/cli-utils-selftests.c, unittests/common-utils-selftests.c, unittests/copy_bitwise-selftests.c, unittests/environ-selftests.c, unittests/format_pieces-selftests.c, unittests/function-view-selftests.c, unittests/lookup_name_info-selftests.c, unittests/memory-map-selftests.c, unittests/memrange-selftests.c, unittests/mkdir-recursive-selftests.c, unittests/observable-selftests.c, unittests/offset-type-selftests.c, unittests/optional-selftests.c, unittests/parse-connection-spec-selftests.c, unittests/ptid-selftests.c, unittests/rsp-low-selftests.c, unittests/scoped_fd-selftests.c, unittests/scoped_mmap-selftests.c, unittests/scoped_restore-selftests.c, unittests/string_view-selftests.c, unittests/style-selftests.c, unittests/tracepoint-selftests.c, unittests/unpack-selftests.c, unittests/utils-selftests.c, unittests/xml-utils-selftests.c, utils.c, utils.h, valarith.c, valops.c, valprint.c, value.c, value.h, varobj.c, varobj.h, windows-nat.c, x86-linux-nat.c, xml-support.c, xml-support.h, xml-tdesc.h, xstormy16-tdep.c, xtensa-linux-nat.c, dwarf2read.h: Change common to gdbsupport. gdb/gdbserver/ChangeLog 2019-07-09 Tom Tromey * configure: Rebuild. * configure.ac: Change common to gdbsupport. * acinclude.m4: Change common to gdbsupport. * Makefile.in (SFILES, OBS, GDBREPLAY_OBS, IPA_OBJS) (version-generated.c, gdbsupport/%-ipa.o, gdbsupport/%.o): Change common to gdbsupport. * ax.c, event-loop.c, fork-child.c, gdb_proc_service.h, gdbreplay.c, gdbthread.h, hostio-errno.c, hostio.c, i387-fp.c, inferiors.c, inferiors.h, linux-aarch64-tdesc-selftest.c, linux-amd64-ipa.c, linux-i386-ipa.c, linux-low.c, linux-tic6x-low.c, linux-x86-low.c, linux-x86-tdesc-selftest.c, linux-x86-tdesc.c, lynx-i386-low.c, lynx-low.c, mem-break.h, nto-x86-low.c, regcache.c, regcache.h, remote-utils.c, server.c, server.h, spu-low.c, symbol.c, target.h, tdesc.c, tdesc.h, thread-db.c, tracepoint.c, win32-i386-low.c, win32-low.c: Change common to gdbsupport. commit 5b0e2db4fa08b43e9ff78d6e9a45d496522bd241 Author: Andrew Burgess Date: Tue Jun 11 23:33:53 2019 +0100 gdb: Don't skip prologue for explicit line breakpoints in assembler It was observed that in some cases, placing a breakpoint in an assembler file using filename:line-number syntax would result in the breakpoint being placed at a different line within the file. For example, consider this x86-64 assembler: test: push %rbp /* Break here. */ mov %rsp, %rbp nop /* Stops here. */ The user places the breakpoint using file:line notation targeting the line marked 'Break here', GDB actually stops at the line marked 'Stops here'. The reason is that the label 'test' is identified as the likely start of a function, and the call to symtab.c:skip_prologue_sal causes GDB to skip forward over the instructions that GDB believes to be part of the prologue. I believe however, that when debugging assembler code, where the user has instruction-by-instruction visibility, if they ask for a specific line, GDB should (as far as possible) stop on that line, and not perform any prologue skipping. I don't believe that the behaviour of higher level languages should change, in these cases skipping the prologue seems like the correct thing to do. In order to implement this change I needed to extend our current tracking of when the user has requested an explicit line number. We already tracked this in some cases, but not in others (see the changes in linespec.c). However, once I did this I started to see some additional failures (in tests gdb.base/break-include.exp gdb.base/ending-run.exp gdb.mi/mi-break.exp gdb.mi/mi-reverse.exp gdb.mi/mi-simplerun.exp) where we currently expected a breakpoint placed at one file and line number to be updated to reference a different line number, this was fixed by removing some code in symtab.c:skip_prologue_sal. My concern here is that removing this check didn't cause anything else to fail. I have a new test that covers my original case, this is written for x86-64 as most folk have access to such a target, however, any architecture that has a prologue scanner can be impacted by this change. gdb/ChangeLog: * linespec.c (decode_digits_list_mode): Set explicit_line to a bool value. (decode_digits_ordinary): Set explicit_line field in sal. * symtab.c (skip_prologue_sal): Don't skip prologue for a symtab_and_line that was set on an explicit line number in assembler code. Do always update the recorded symtab and line if we do skip the prologue. gdb/testsuite/ChangeLog: * gdb.arch/amd64-break-on-asm-line.S: New file. * gdb.arch/amd64-break-on-asm-line.exp: New file. commit 0ba852ab4126a6eb4be88577d62dc25f2be7f725 Author: Andrew Burgess Date: Mon Jul 1 16:00:52 2019 +0100 gdb: Remove unneeded parameter from set_breakpoint_location_function The explicit_loc parameter in set_breakpoint_location_function is not useful. This parameter is set from two possible fields of the symtab_and_line used to create the breakpoint; the explicit_pc field, and the explicit_line field. First, the explicit_line field, this is not currently set for any breakpoint command, so will never be true. Next, the explicit_pc field. This can be true but will never be true at the same time that the sal->msymbol field is also true - the sal->msymbol is only ever set in linespec.c:minsym_found, which doesn't allow for explicitly setting the pc. The result of this is that if we are setting a breakpoint on an msymbol that could turn out to be an ifunc, then we will not also have either an explicit_pc or an explicit_line, this check can therefore be removed. There should be no user visible changes after this commit. gdb/ChangeLog: * breakpoint.c (set_breakpoint_location_function): Remove explicit_loc parameter. (momentary_breakpoint_from_master): Update call to set_breakpoint_location_function. (add_location_to_breakpoint): Likewise. commit b3a7d1711e4557811865333a0ac96fc16b750869 Author: Andrew Burgess Date: Thu Jul 4 21:02:43 2019 +0100 gdb/riscv: Don't use default bfd to define required features When we initialise a gdbarch object we perform a check to try and detect if the user is doing something silly; trying to run an RV64 binary on an RV32 target. To perform this check we compare the xlen from the target description with the xlen specified in the headers on the ELF being debugged. If there is no ELF being debugged then we (currently) try to use the bfd_arch_info from the gdbarch_info object, which will have been set to the default architecture if no bfd is currently being debugged. For RISC-V the default architecture is RV64. What this means is that if a user tries to connect to an RV32 target without specifying the BFD to debug then GDB will assume RV64. The sanity check mentioned above will failed (xlen difference) and GDB will throw an error. The error causes GDB to disconnect from the remote target. After this commit GDB no longer relies on the default bfd architecture. If the user tries to connect without specifying the bfd then GDB will simply make use of the xlen extracted from the target description in order to find or create a suitable gdbarch object. gdb/ChangeLog: * riscv-tdep.c (riscv_features_from_gdbarch_info): Don't modify required features based on default bfd type when no specific bfd is present. commit d69cd47e7e9884f7b3a319936f70b8d93347e9e0 Author: Alan Modra Date: Tue Jul 9 12:27:55 2019 +0930 Re: gas/ELF: don't accumulate .type settings git commit f2d4ba38f5 caused many failures for mips-sgi-irix targets, and added a new test that failed for aarch64, nds32, and rl78. The mips failures are due to BSF_OBJECT being set in many cases for symbols by the mips .global/.globl directive. This patch removes that code and instead sets BSF_OBJECT in a target frob_symbol function, also moving the mips hacks in elf_frob_symbol to the new function. Note that common symbols are handled fine in elf.c:swap_out_syms without needing to set BSF_OBJECT, so that old code can disappear. * config/obj-elf.c (elf_frob_symbol): Remove mips hacks. * config/tc-mips.h (tc_frob_symbol): Define. (mips_frob_symbol): Declare. * config/tc-mips.c (s_mips_globl): Don't set BSF_OBJECT for irix. (mips_frob_symbol): Fudge symbols for irix here. * testsuite/gas/elf/type-2.e: Allow random target symbols. commit 64da05d557f59814151e908a34f36996a027d127 Author: GDB Administrator Date: Tue Jul 9 00:00:12 2019 +0000 Automatic date update in version.in commit 1f6f6e21fa86dc3411a6498608f32e9eb24b7851 Author: Philippe Waroquiers Date: Mon Jun 10 21:41:51 2019 +0200 Ensure GDB printf command can print convenience var strings without a target. Without this patch, GDB printf command calls malloc on the target, writes the convenience var content to the target, re-reads the content from the target, and then locally printf the string. This implies inferior calls, and does not work when there is no running inferior, or when the inferior is a core dump. With this patch, printf command can printf string convenience variables without inferior function calls. Ada string convenience variables can also be printed. gdb/ChangeLog 2019-07-08 Philippe Waroquiers * NEWS: Mention that GDB printf and eval commands can now print C-style and Ada-style convenience var strings without calling the inferior. * printcmd.c (printf_c_string): Locally print GDB internal var instead of transiting via the inferior. (printf_wide_c_string): Likewise. gdb/testsuite/ChangeLog 2019-07-08 Philippe Waroquiers * gdb.base/printcmds.exp: Test printing C string and C wide string convenience vars without transiting via the inferior. Also make test names unique. commit ea142fbfc9c1708a83d3532257d6728e1f5c142e Author: Alan Hayward Date: Mon Jul 8 10:00:25 2019 +0100 Fix breakpoints on file reloads for PIE binaries When a binary is built using PIE, reloading the file will cause GDB to error on restart. For example: gdb ./a.out (gdb) break main (gdb) run (gdb) file ./a.out (gdb) continue Will cause GDB to error with: Continuing. Warning: Cannot insert breakpoint 1. Cannot access memory at address 0x9e0 Command aborted. This is due to the symbol offsets not being relocated after reloading the file. Fix is to ensure solib_create_inferior_hook is called, in the same manner as infrun.c:follow_exec(). Expand the idempotent test to cover PIE scenarios. gdb/ChangeLog: * symfile.c (symbol_file_command): Call solib_create_inferior_hook. gdb/testsuite/ChangeLog: * gdb.base/break-idempotent.exp: Test both PIE and non PIE. commit 62a47958bd6e3cbd909c2f19cd4669a9670ce4f1 Author: Alan Modra Date: Mon Jul 8 10:06:09 2019 +0930 PR24785, bfd crashes on empty .PPC.EMB.apuinfo section PR 24785 * elf32-ppc.c (_bfd_elf_ppc_set_arch): Sanity check .PPC.EMB.apuinfo size before reading first word. commit 3836e1d1ab859b9f6c41bc4565ef779640b7c706 Author: Alan Modra Date: Mon Jul 8 10:05:39 2019 +0930 Re: PowerPC notoc call stub tests Correct the tests for powerpc 32-bit targets. * testsuite/ld-powerpc/callstub-1.d: Pass -melf64ppc to ld. * testsuite/ld-powerpc/callstub-2.d: Likewise. commit 55904abea47780ed16b4f726862ba1e14d05b96e Author: GDB Administrator Date: Mon Jul 8 00:00:36 2019 +0000 Automatic date update in version.in commit 25c816e70e578b8a9abab0dada0490dd5ae41780 Author: GDB Administrator Date: Sun Jul 7 00:01:05 2019 +0000 Automatic date update in version.in commit 923cccf9bcc2b97298c2c0563326193948410311 Author: GDB Administrator Date: Sat Jul 6 00:00:25 2019 +0000 Automatic date update in version.in commit 98602811d838077269e361e9d807fe530c780011 Author: Jim Wilson Date: Fri Jul 5 15:19:11 2019 +0800 Kito's 5-part patch set to improve .insn support. From Kito Cheng gas/ChangeLog * doc/c-riscv.texi (Instruction Formats): Add r4 type. * testsuite/gas/riscv/insn.d: Add testcase for r4 type. * testsuite/gas/riscv/insn.s: Ditto. * doc/c-riscv.texi (Instruction Formats): Add b and j type. * testsuite/gas/riscv/insn.d: Add test case for b and j type. * testsuite/gas/riscv/insn.s: Ditto. * testsuite/gas/riscv/insn.s: Correct instruction type for load and store. * testsuite/gas/riscv/insn.d: Using regular expression to match address. * doc/c-riscv.texi (Instruction Formats): Fix encoding table for SB type and fix typo. opcode/ChangeLog * riscv-opc.c (riscv_insn_types): Add r4 type. * riscv-opc.c (riscv_insn_types): Add b and j type. * opcodes/riscv-opc.c (riscv_insn_types): Remove incorrect format for sb type and correct s type. commit a0b6cbf69db7427cfdf054092062fcf82eef9a58 Author: GDB Administrator Date: Fri Jul 5 00:00:16 2019 +0000 Automatic date update in version.in commit 0598af4880f58af5ce7c15419551362646892c7f Author: Tom Tromey Date: Tue Jun 25 14:42:49 2019 -0600 Fix TUI use of "has_break" field The TUI uses the "has_break" in two different ways: sometimes as a boolean, and sometimes as flags. This patch changes the TUI to be more type-safe here, and fixes the code. I could not find a bug that this caused, so apparently this is just cosmetic. This deletes some code from tui_set_disassem_content. Whenver this is called, I believe the TUI updates the breakpoint information afterward, so this assignment is redundant; which is good because it is also incorrect. gdb/ChangeLog 2019-07-04 Tom Tromey PR tui/24724: * tui/tui-winsource.c (tui_clear_source_content): Update. (tui_source_window_base::set_is_exec_point_at): Fix comment. (tui_update_breakpoint_info): Update. (tui_set_exec_info_content): Update. * tui/tui-source.c (tui_set_source_content_nil): Update. * tui/tui-disasm.c (tui_set_disassem_content): Don't set has_break. * tui/tui-data.h (enum tui_bp_flag): New. (tui_bp_flags): New enum flags type. (struct tui_source_element) : Change type. Rename from has_break. (TUI_BP_ENABLED, TUI_BP_DISABLED, TUI_BP_HIT) (TUI_BP_CONDITIONAL, TUI_BP_HARDWARE): Don't define. Now enum constants. * tui/tui-winsource.h: Fix comment. commit 213fd9faf563ce5726ce66c8104cbaba44ba9c09 Author: Pedro Alves Date: Thu Jul 4 16:45:23 2019 +0100 Fix foreach_with_prefix regression Fix a silly bug in commit a26c8de0ee93 ("Fix early return in foreach_with_prefix"). That patch made foreach_with_prefix always return after the first iteration, making ~10k tests disappear from test runs... This fixes it, and as penance, adds a testcase that exercises all kinds of different returns possible (ok, error, return, break, continue). I've written it with regular "foreach", and then switched to foreach_with_prefix and made sure we get the same results. I put the testcase in a new gdb.testsuite/ subdir, since this is exercising the testsuite harness bits. We can move this elsewhere if people prefer a different place, but I'm going ahead in order to unbreak the testsuite ASAP. gdb/testsuite/ChangeLog: 2019-07-04 Pedro Alves * lib/gdb.exp (foreach_with_prefix): Don't return early if body returned ok(0), break(3) or continue(4). * gdb.testsuite/foreach_with_prefix.exp: New file. commit 350fab54163e2dd178609d268e80bf31042d182d Author: Alan Hayward Date: Tue Jun 25 11:02:32 2019 +0100 Arm/AArch64: Use a single set of Arm register set size defines Both targets were using a mixture of defines and hardcoded values. Add a standard set in arch/arm.h and use throughout, ensuring that none of the existing sizes change. No functionality changes. gdb/ChangeLog: * aarch32-linux-nat.h (VFP_REGS_SIZE): Remove define. * aarch64-linux-nat.c (fetch_fpregs_from_thread) (store_fpregs_to_thread) (aarch64_linux_nat_target::read_description): Use ARM_VFP3_REGS_SIZE. * arch/arm.h (IWMMXT_VEC_REGISTER_SIZE, ARM_CORE_REGS_SIZE) (ARM_FP_REGS_SIZE, ARM_VFP2_REGS_SIZE, ARM_VFP3_REGS_SIZE) (IWMMXT_REGS_SIZE): Add define. * arm-linux-nat.c (IWMMXT_REGS_SIZE): Remove define. (fetch_vfp_regs, store_vfp_regs) (arm_linux_nat_target::read_description): Use ARM_VFP3_REGS_SIZE. * arm-tdep.c (arm_register_g_packet_guesses): Use new defines. gdb/gdbserver/ChangeLog: * linux-aarch32-low.c (arm_read_description, arm_regsets): Use new defines. * linux-arm-low.c (arm_read_description, arm_regsets): Likewise. commit f0452268d6c7296106aba81f532b04dc08187352 Author: Alan Hayward Date: Wed Jun 26 10:12:13 2019 +0100 Arm: Prefix register sizes with ARM_ Add ARM_ to the front of INT_REGISTER_SIZE, FP_REGISTER_SIZE and ARM_VFP_REGISTER_SIZE to make it obvious they are for the Arm target. Move the defines to arch/arm.h No functionality changes. gdb/ChangeLog: * arch/arm-get-next-pcs.c (thumb_get_next_pcs_raw): Use ARM_ defines. * arch/arm-linux.c (arm_linux_sigreturn_next_pc_offset): Likewise. * arch/arm.h (INT_REGISTER_SIZE) Rename from... (ARM_INT_REGISTER_SIZE): ...to this. (ARM_FP_REGISTER_SIZE) (ARM_VFP_REGISTER_SIZE): Add define. * arm-linux-tdep.c (ARM_LINUX_JB_ELEMENT_SIZE) (ARM_LINUX_SIZEOF_GREGSET, arm_linux_supply_gregset) (arm_linux_collect_gregset, supply_nwfpe_register) (collect_nwfpe_register, arm_linux_collect_nwfpe): Use ARM_ defines. * arm-linux-tdep.h (ARM_LINUX_SIZEOF_NWFPE, NWFPE_FPSR_OFFSET) (NWFPE_FPCR_OFFSET, NWFPE_TAGS_OFFSET): Likewise * arm-nbsd-tdep.c (ARM_NBSD_JB_ELEMENT_SIZE): Likewise. * arm-tdep.c (arm_push_dummy_call, arm_extract_return_value) (arm_return_in_memory, arm_store_return_value) (arm_get_longjmp_target, arm_register_g_packet_guesses) (arm_record_ld_st_multiple): Likewise. * arm-tdep.h (FP_REGISTER_SIZE, VFP_REGISTER_SIZE): Remove. * arm-wince-tdep.c (ARM_WINCE_JB_ELEMENT_SIZE): Use ARM_ defines. commit e935475cb6bcd8146717896e88824ae93a0897c7 Author: Alan Hayward Date: Thu Jul 4 12:41:20 2019 +0100 Arm/AArch64: Split DISPLACED_MODIFIED_INSNS name clash Both targets define DISPLACED_MODIFIED_INSNS, each with different values. Add ARM_ and AARCH64_ to the start of the name to prevent confusion. No functionality changes. gdb/ChangeLog: * aarch64-linux-tdep.c (aarch64_linux_init_abi): Use AARCH64_DISPLACED_MODIFIED_INSNS. * aarch64-tdep.c (struct aarch64_displaced_step_data) (aarch64_displaced_step_copy_insn): Likewise. * aarch64-tdep.h (DISPLACED_MODIFIED_INSNS): Rename from.. (AARCH64_DISPLACED_MODIFIED_INSNS): ...to this. * arm-linux-tdep.c (arm_linux_cleanup_svc): Use ARM_DISPLACED_MODIFIED_INSNS. * arm-tdep.c (arm_gdbarch_init): Likewise. * arm-tdep.h (DISPLACED_MODIFIED_INSNS): Rename from.. (ARM_DISPLACED_MODIFIED_INSNS): ...to this. (struct arm_displaced_step_closure): Use ARM_DISPLACED_MODIFIED_INSNS. commit df0bb381e27a8b1594c492a34c48ff6e6bbd29d1 Author: Alan Hayward Date: Thu Jul 4 11:53:25 2019 +0100 i386/AArch64: Remove unused xml files Remove all the xml files that are no longer used by gdbserver, and remove their entries from the makefile. gdb/ChangeLog: * features/Makefile: Remove unused xml files. * features/aarch64.xml: Remove. * features/i386/amd64-avx-avx512-linux.xml: Remove. * features/i386/amd64-avx-avx512.xml: Remove. * features/i386/amd64-avx-linux.xml: Remove. * features/i386/amd64-avx-mpx-avx512-pku-linux.xml: Remove. * features/i386/amd64-avx-mpx-avx512-pku.xml: Remove. * features/i386/amd64-avx-mpx-linux.xml: Remove. * features/i386/amd64-avx-mpx.xml: Remove. * features/i386/amd64-avx.xml: Remove. * features/i386/amd64-linux.xml: Remove. * features/i386/amd64-mpx-linux.xml: Remove. * features/i386/amd64-mpx.xml: Remove. * features/i386/amd64.xml: Remove. * features/i386/i386-avx-avx512-linux.xml: Remove. * features/i386/i386-avx-avx512.xml: Remove. * features/i386/i386-avx-linux.xml: Remove. * features/i386/i386-avx-mpx-avx512-pku-linux.xml: Remove. * features/i386/i386-avx-mpx-avx512-pku.xml: Remove. * features/i386/i386-avx-mpx-linux.xml: Remove. * features/i386/i386-avx-mpx.xml: Remove. * features/i386/i386-avx.xml: Remove. * features/i386/i386-linux.xml: Remove. * features/i386/i386-mmx-linux.xml: Remove. * features/i386/i386-mmx.xml: Remove. * features/i386/i386-mpx-linux.xml: Remove. * features/i386/i386-mpx.xml: Remove. * features/i386/i386.xml: Remove. * features/i386/x32-avx-avx512-linux.xml: Remove. * features/i386/x32-avx-linux.xml: Remove. * features/i386/x32-linux.xml: Remove. commit edd6266ab14004b02065ad9fb98b1da323a41981 Author: Alan Hayward Date: Thu Jul 4 11:52:56 2019 +0100 i386/AArch64: Remove unused .dat files Remove all the dat files that are no longer used by gdbserver. gdb/ChangeLog: * regformats/aarch64.dat: Remove. * regformats/i386/amd64-avx-avx512-linux.dat: Remove. * regformats/i386/amd64-avx-linux.dat: Remove. * regformats/i386/amd64-avx-mpx-avx512-pku-linux.dat: Remove. * regformats/i386/amd64-avx-mpx-linux.dat: Remove. * regformats/i386/amd64-linux.dat: Remove. * regformats/i386/amd64-mpx-linux.dat: Remove. * regformats/i386/amd64.dat: Remove. * regformats/i386/i386-avx-avx512-linux.dat: Remove. * regformats/i386/i386-avx-linux.dat: Remove. * regformats/i386/i386-avx-mpx-avx512-pku-linux.dat: Remove. * regformats/i386/i386-avx-mpx-linux.dat: Remove. * regformats/i386/i386-linux.dat: Remove. * regformats/i386/i386-mmx-linux.dat: Remove. * regformats/i386/i386-mpx-linux.dat: Remove. * regformats/i386/i386.dat: Remove. * regformats/i386/x32-avx-avx512-linux.dat: Remove. * regformats/i386/x32-avx-linux.dat: Remove. * regformats/i386/x32-linux.dat: Remove. commit 2b40fda74b2af11a914d50f4e54c1472e1bd81fb Author: Alan Hayward Date: Thu Jul 4 11:48:16 2019 +0100 i386/AArch64: Remove old xml tests Both the i386, X86_64 and AArch64 builds of gdbserver include a bunch of legacy xml files, dat files and auto generated C files, when building for unit test. These tests exists back from when feature target descriptions were added to prove that the new target descriptions were identical to the original older versions. The old files are not used for anything other than these tests. Now that this has been proven, we are not gaining anything by keeping the original files and tests. Should new functionality be added, it would break the tests, unless the functionality was backported to the xml. There is no requirement that we must match the exact xml from N releases ago. It adds obfuscation, where as the feature target descriptions were meant to simplify the code. In addition, there are a bunch of xml and dat files which are completely unused. This patch removes the selftests and the target descriptions from gdbserver. Update the unittest to allow 0 tests (note, this failed on other targets that never had any tests). gdb/ChangeLog: * aarch64-tdep.c: Remove xml self tests. * amd64-linux-tdep.c: Likewise. * amd64-tdep.c: Likewise. * i386-linux-tdep.c: Likewise. * i386-tdep.c: Likewise. gdb/gdbserver/ChangeLog: * configure.srv: Remove legacy xml. * linux-aarch64-low.c (initialize_low_arch): Remove initialize_low_tdesc call. * linux-aarch64-tdesc-selftest.c: Remove file. * linux-aarch64-tdesc.h (initialize_low_tdesc): Remove. * linux-x86-low.c (initialize_low_arch): Remove initialize_low_tdesc call. * linux-x86-tdesc-selftest.c: Remove file. * linux-x86-tdesc.h (initialize_low_tdesc): Remove. gdb/testsuite/ChangeLog: * gdb.server/unittest.exp: Allow 0 unit tests to run. commit d4693039f950eefb983a66e3270209b738e4ce8a Author: Jan Beulich Date: Thu Jul 4 10:36:41 2019 +0200 x86: correct "-Q" option handling For another patch I wanted to use a sufficiently benign option (simply to be able to specify one, which certain test case invocations require), and I stumbled across -Q in the --help output. Before realizing that this is x86-specific anyway, I've tried and and ran into a mysterious testsuite failure, until I further realized that other than the help text suggests the option requires an argument. Correct the help text, and make the implementation actually match what the comment there has been describing (and what the help text now says). commit f2d4ba38f5723a207c40a288036af2f38b70e837 Author: Jan Beulich Date: Thu Jul 4 10:35:47 2019 +0200 gas/ELF: don't accumulate .type settings Recently a patch was submitted for a Xen Project test harness binary to override the compiler specified @object to @func (see [1]). In a reply I suggested we shouldn't make ourselves dependent on currently unspecified behavior of gas here: It accumulates all requests, and then bfd/elf.c:swap_out_syms(), in an apparently ad hoc manner, prioritizes certain flags over others. Make the behavior predictable: Generally the last .type is what counts. Exceptions are directives which set multiple bits (TLS, IFUNC, and UNIQUE): Subsequent directives requesting just the more generic bit (i.e. FUNC following IFUNC) won't clear the more specific one. Warn about incompatible changes, except from/to STT_NOTYPE. Also add a new target hook, which hppa wants to use right away afaict. In the course of adding the warning I ran into two ld testsuite failures. I can only assume that it was a copy-and-paste mistake that lead to the same symbol having its type set twice. [1] https://lists.xenproject.org/archives/html/xen-devel/2019-05/msg01980.html commit db7fbcbeb749c0d4ea19284438d62b253648c58a Author: GDB Administrator Date: Thu Jul 4 00:00:37 2019 +0000 Automatic date update in version.in commit a26c8de0ee938a48bc6f6232cdfac1a5eabaa778 Author: Pedro Alves Date: Wed Jul 3 18:05:20 2019 +0100 Fix early return in foreach_with_prefix I noticed that an early return in a foreach_with_prefix block does not cause the outer scope to return, like: foreach_with_prefix var {"foo" "bar"} { return } # Control continues here, but it should not. The problem is that we're missing the usual "return -code" treatment. This commit fixes it. gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves * lib/gdb.exp (foreach_with_prefix): Use "catch" and "return -code". commit 5f4ba3e701d74f280d4bd8820d9c39a854e0d2cf Author: Pedro Alves Date: Wed Jul 3 16:57:51 2019 +0100 pipe command completer This commit adds a completer for the "pipe" command. It can complete "pipe"'s options, and the specified GDB command. To make the completer aware of the "-d" option, this converts the option processing to use gdb::option. Tests included. gdb/ChangeLog: 2019-07-03 Pedro Alves PR cli/24732 * cli/cli-cmds.c (struct pipe_cmd_opts): New. (pipe_cmd_option_defs): New. (make_pipe_cmd_options_def_group): New. (pipe_command): Use gdb::option::process_options. (pipe_command_completer): New function. (_initialize_cli_cmds): Install completer for "pipe" command. gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves PR cli/24732 * gdb.base/shell.exp: Load completion-support.exp. Adjust expected error output. Add completion tests. commit a994424fa1e80d982644038f1ce6538e247aeed1 Author: Pedro Alves Date: Wed Jul 3 16:57:50 2019 +0100 Fix latent bug in test_gdb_complete_cmd_multiple A following patch will add the following to a testcase: test_gdb_completion_offers_commands "| " And that tripped on a latent testsuite bug: (gdb) | PASS: gdb.base/shell.exp: tab complete "| " ^CQuit (gdb) complete | | ! | + PASS: gdb.base/shell.exp: cmd complete "| " | *** List may be truncated, max-completions reached. *** (gdb) FAIL: gdb.base/shell.exp: set max-completions 200 set max-completions 200 The issue is that "|" ends up as part of a regexp, and "|" in regexps has a special meaning... Fix this with string_to_regexp. gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves * lib/completion-support.exp (test_gdb_complete_cmd_multiple): Use string_to_regexp. commit 3d9be6f531db395a5ad940ef06e56d849f4de646 Author: Pedro Alves Date: Wed Jul 3 16:57:49 2019 +0100 Teach gdb::option about string options A following patch will make the "pipe" command use the gdb::option framework for option processing. However, "pipe"'s only option today is a string option, "-d DELIM", and gdb::option does not support string options yet. This commit adds support for string options, mapped to var_string. For now, a string is parsed up until the first whitespace. I imagine that we'll need to add support for quoting so that we could do: (gdb) cmd -option 'some -string' without gdb confusing the "-string" for an option. This doesn't seem important for pipe, so I'm leaving it for another day. One thing I'm not happy with, is that the string data is managed as a raw malloc-allocated char *, which means that we need to xfree it manually. This is because var_string settings work that way too. Although with var_string settings we're leaking the strings at gdb exit, that was never really a problem. For options though, leaking is undesirable. I think we should tackle that for both settings and options at the same time, so for now I'm just managing the malloced data manually. It's a bit ugly in option_def_and_value, but at least that's hidden from view. For testing, this adds a new "-string" option to "maint test-settings", and then tweaks gdb.base/options.exp to exercise it. gdb/ChangeLog: 2019-07-03 Pedro Alves * cli/cli-option.c (union option_value) : New field. (struct option_def_and_value): Add ctor, move ctor, dtor and use DISABLE_COPY_AND_ASSIGN. (option_def_and_value::clear_value): New. (parse_option, save_option_value_in_ctx, get_val_type_str) (add_setshow_cmds_for_options): Handle var_string. * cli-option.h (union option_def::var_address) : New field. (struct string_option_def): New. * maint-test-options.c (struct test_options_opts): Add default ctor and use DISABLE_COPY_AND_ASSIGN. : New field. (test_options_opts::~test_options_opts): New. (test_options_opts::dump): Also dump "-string". (test_options_option_defs): Install "string. gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves * gdb.base/options.exp (expect_none, expect_flag, expect_bool) (expect_integer): Adjust to expect "-string". (expect_string): New. (all_options): Expect "-string". (test-flag, test-boolean): Adjust to expect "-string". (test-string): New proc. (top level): Call it. commit 41fc454c915057d9c5536617370c5eb2a5f71323 Author: Pedro Alves Date: Wed Jul 3 16:57:48 2019 +0100 Make gdb::option::complete_options save processed arguments too Currently, gdb::option::complete_options just discards any processed option argument, because no completer needs that data. When completing "pipe -d XXX gdbcmd XXX" however, the completer needs to know about -d's argument (XXX), in order to know where input is already past the gdb command and the delimiter. In this commit, the fix for that is the factoring out of the save_option_value_in_ctx function and calling it in complete_options. For testing, this makes "maint show test-options-completion-result" show the processed options too, like what the "maint test-options" subcommands output when run. Then, of course, gdb.base/options.exp is adjusted. Doing this exposed a couple latent bugs, which is what the other gdb changes in the patch are for: - in the var_enum case, without the change, we'd end up with a null enum argument, and print: "-enum (null)" - The get_ulongest change is necessary to avoid advancing PP in a case where we end up throwing an error, e.g., when parsing "11x". Without the change the operand pointer shown by "maint show test-options-completion-result" would be left pointing at "x" instead of "11x". gdb/ChangeLog: 2019-07-03 Pedro Alves * cli/cli-option.c (parse_option) : Don't return an option_value with a null enumeration. (complete_options): Save the option values in the context. (save_option_value_in_ctx): New, factored out from ... (process_options): ... here. * cli/cli-utils.c (get_ulongest): Don't advance PP until the end of the function. * maint-test-options.c (test_options_opts::dump): New, factored out from ... (maintenance_test_options_command_mode): ... here. (maintenance_test_options_command_completion_result): Delete. (maintenance_test_options_command_completion_text): Update comment. (maintenance_show_test_options_completion_result): Change prototype. Just print maintenance_test_options_command_completion_text. (save_completion_result): New. (maintenance_test_options_completer_mode): Pass options context to complete_options, and then save a dump. (_initialize_maint_test_options): Use add_cmd to install "maint show test-options-completion-result". gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves * gdb.base/options.exp (test-misc, test-flag, test-boolean) (test-uinteger, test-enum): Adjust res_test_gdb_... calls to pass the expected output in the success. commit b2b2a2159876fa8db57ce017b949cafc6f1a32df Author: Pedro Alves Date: Wed Jul 3 16:57:48 2019 +0100 Fix test_gdb_complete_tab_multiple race Running 'make check-read1 TESTS="gdb.base/options.exp"' revealed a race in test_gdb_complete_tab_multiple. There's a gdb_test_multiple call that expects a prompt in the middle of the regexp. That's racy because gdb_test_multiple includes a built-in FAIL pattern for the prompt, which may match if gdb is slow enough to produce the rest of the output after the prompt. Fix this in the usual way of splitting the matching in two. gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves * lib/completion-support.exp (test_gdb_complete_tab_multiple): Split one gdb_test_multiple call in two to avoid a race. commit 077a039f70d870899da31eb8cee597964515fa3c Author: Nick Clifton Date: Wed Jul 3 15:26:32 2019 +0100 Fix assembler tests to work with toolchains that have been configured with --enable-generate-build-notes. commit fdbc98707b0ab48fd8ca3ac37acefa120496baf6 Author: Pedro Alves Date: Wed Jul 3 13:34:20 2019 +0100 Introduce the "with" command ( See original discussion and prototype here: https://sourceware.org/ml/gdb-patches/2019-05/msg00570.html ) (gdb) help with Temporarily set SETTING to VALUE, run COMMAND, and restore SETTING. Usage: with SETTING [VALUE] [-- COMMAND] Usage: w SETTING [VALUE] [-- COMMAND] With no COMMAND, repeats the last executed command. SETTING is any setting you can change with the "set" subcommands. E.g.: with language pascal -- print obj with print elements unlimited -- print obj As can be seen above, the "with" command is just like "set", but instead of setting the setting permanently, it sets the setting, runs a command and then restores the setting. (gdb) p g_s $1 = {a = 1, b = 2, c = 3} (gdb) with language ada -- print g_s $2 = (a => 1, b => 2, c => 3) Warning: the current language does not match this frame. (gdb) show language The current source language is "auto; currently c". (gdb) with print elements 100 -- with print object on -- print 1 $3 = 1 You can shorten things a bit though, as long as unambiguous. So this: (gdb) with print elements 100 -- with print object off -- print 1 is the same as: (gdb) w p el 100 -- w p o 0 -- p 1 Note that the patch adds a "w" alias for "with", as "w" is not currently taken: (gdb) w Ambiguous command "w": watch, wh, whatis, where, while, while-stepping, winheight, ws. Let me know if you'd prefer to reserve "w" for one of the other commands above. IMHO, this command will end up being used frequently enough that it deserves the "w" shorthand. A nice feature is that this is fully integrated with TAB-completion: (gdb) with p[TAB] pagination print prompt python (gdb) with print [TAB] address max-depth static-members array max-symbolic-offset symbol array-indexes null-stop symbol-filename asm-demangle object symbol-loading demangle pascal_static-members thread-events elements pretty type entry-values raw union frame-arguments repeats vtbl inferior-events sevenbit-strings (gdb) with print [TAB] (gdb) with print elements unlimited -- thread apply all -[TAB] -ascending -c -q -s (gdb) with print elements unlimited -- print -[TAB] -address -max-depth -repeats -vtbl -array -null-stop -static-members -array-indexes -object -symbol -elements -pretty -union The main advantage of this new command compared to command options, like the new "print -OPT", is that this command works with any setting, and, it works nicely when you want to override a setting while running a user-defined command, like: (gdb) with print pretty -- usercmd The disadvantage is that it isn't as compact or easy to type. I think of command options and this command as complementary. I think that even with this new command, it makes sense to continue developing the command options in the direction of exposing most-oft-used settings as command options. Inspired by Philippe's "/" command proposal, if no command is specified, then the last command is re-invoked, under the overridden setting: (gdb) p g_s $1 = {a = 1, b = 2, c = 3} (gdb) with language ada $2 = (a => 1, b => 2, c => 3) Warning: the current language does not match this frame. Note: "with" requires "--" to separate the setting from the command. It might be possible to do without that, but, I haven't tried it yet, and I think that this can go in without it. We can always downgrade to making "--" optional if we manage to make it work. On to the patch itself, the implementation of the command is simpler than one might expect. A few details: - I factored out a bit from pipe_command into repeat_previous directly, because otherwise I'd need to copy&paste the same code and same error message in the with command. - The parse_cli_var_uinteger / parse_cli_var_zuinteger_unlimited / do_set_command changes are necessary since we can now pass an empty string as argument. - do_show_command was split in two, as a FIXME comment suggests, but for a different reason: we need to get a string version of a "set" command's value, and we already had code for that in do_show_command. That code is now factored out to the new get_setshow_command_value_string function. - There's a new "maint with" command added too: (gdb) help maint with Like "with", but works with "maintenance set" variables. Usage: maintenance with SETTING [VALUE] [-- COMMAND] With no COMMAND, repeats the last executed command. SETTING is any setting you can change with the "maintenance set" subcommands. "with" and "maint with" share 99% of the implementation. This might be useful on its own, but it's also useful for testing, since with this, we can use the "maint set/show test-settings" settings for exercising the "with" machinery with all the command type variants (all enum var_types). This is done in the new gdb/base/with.exp testcase. The documentation bits are originally based on Philippe's docs for the "/" command, hence the attribution in the ChangeLog. gdb/ChangeLog: 2019-07-03 Pedro Alves * NEWS (New commands): Mention "with" and "maint with". * cli/cli-cmds.c (with_command_1, with_command_completer_1) (with_command, with_command_completer): New. (pipe_command): Adjust to new repeat_previous interface. (_initialize_cli_cmds): Install the "with" command and its "w" alias. * cli/cli-cmds.h (with_command_1, with_command_completer_1): New declarations. * cli/cli-setshow.c (parse_cli_var_uinteger) (parse_cli_var_zuinteger_unlimited, do_set_command): Handle empty argument strings for all var_types. (get_setshow_command_value_string): New, factored out from ... (do_show_command): ... this. * cli/cli-setshow.h: Include . (get_setshow_command_value_string): Declare. * command.h (repeat_previous): Now returns const char *. Adjust comment. * maint.c: Include "cli/cli-cmds.h". (maintenance_with_cmd, maintenance_with_cmd_completer): New. (_initialize_maint_cmds): Register the "maintenance with" command. * top.c (repeat_previous): Move bits from pipe_command here: Return the saved command line, if any; error out if there's no command to relaunch. gdb/doc/ChangeLog: 2019-07-03 Pedro Alves Philippe Waroquiers * gdb.texinfo (Command Settings): New node documenting the general concept of settings, how to change them, and the new "with" command. (Maintenance Commands): Document "maint with". gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves * gdb.base/with.c: New file. * gdb.base/with.exp: New file. commit c6ac893109fdc2c3fce2b7457adccdc10f235354 Author: Pedro Alves Date: Wed Jul 3 13:34:19 2019 +0100 "maint test-settings set/show" -> "maint set/show test-settings" This commit renames "maint test-settings set/show" to "maint set/show test-settings". This helps the following patch, which introduce a "maint with" command what works with all "maint set" settings. gdb/ChangeLog: 2019-07-03 Pedro Alves * NEWS (New commands): Mention "maint set/show test-settings" instead of "maint test-settings". * maint-test-settings.c (maintenance_test_settings_list): Delete. (maintenance_test_settings_set_list): Rename to ... (maintenance_set_test_settings_list): ... this. (maintenance_test_settings_show_list): Rename to ... (maintenance_show_test_settings_list): ... this. (maintenance_test_settings_cmd): Delete. (maintenance_test_settings_set_cmd): ... (maintenance_set_test_settings_cmd): ... this. (maintenance_test_settings_show_cmd): ... (maintenance_show_test_settings_cmd): ... this. (maintenance_test_settings_show_value_cmd): (maintenance_show_test_settings_value_cmd): ... this. (_initialize_maint_test_settings): No longer install the "maint test-settings" prefix command. Rename "maint test-settings set" to "maint set test-settings", and "maint test-settings show" to "maint show test-settings". Adjust all subcommands. gdb/doc/ChangeLog: 2019-07-03 Pedro Alves * gdb.texinfo (Maintenance Commands): Document "maint set/show test-settings" instead of "maint test-settings set/show". gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves * gdb.base/settings.exp: Replace all references to "maint test-settings set" with references to "maint set test-settings", and all references to "maint test-settings show" with references to "maint show test-settings". commit d1fcf2fded9a5a54d0714ae01b60ccb57e75b8b5 Author: Pedro Alves Date: Wed Jul 3 13:34:18 2019 +0100 Fix a few comments in maint-test-settings.c Fix the file's intro comment, and s/test-options/test-settings/. gdb/ChangeLog: 2019-07-03 Pedro Alves * maint-test-settings.c: Fix file's intro comment. Replace all references to "test-options" with references to "test-settings", in comments. commit 970f9d091dae835304d1a96805bdb5c081a40b48 Author: Pedro Alves Date: Wed Jul 3 13:34:17 2019 +0100 Fix defaults of some "maint test-settings" subcommands New tests added later for the incoming "with" command exposed a couple invalid-default-value bugs in the "maint test-settings" commands: - var_filename commands don't allow setting the filename to the empty string (unlike var_optional_filename commands), yet, "maint test-settings filename"'s control variable was not initialized, so on startup, "maint test-settings show filename" shows an empty string. - "maint test-settings enum"'s control variable was not initialized, so on startup, "maint test-settings show enum" shows an empty value instead of a valid enum value. Both issues are fixed by initializing the control variables. gdb/ChangeLog: 2019-07-03 Pedro Alves * maint-test-settings.c (maintenance_test_settings_xxx) (maintenance_test_settings_yyy, maintenance_test_settings_zzz): New. (maintenance_test_settings_enums): Use them. (maintenance_test_settings_enum): Default to maintenance_test_settings_xxx. (_initialize_maint_test_settings): Initialize MAINTENANCE_TEST_SETTINGS_FILENAME. gdb/testsuite/ChangeLog: 2019-07-03 Pedro Alves * gdb.base/settings.exp (test-string): Adjust expected out when testing "maint test-settings show filename" commit f3869b1a41a809f208b964ee00cea74bd905b75f Author: Simon Marchi Date: Tue Jul 2 22:03:09 2019 -0400 Remove return value from remove_breakpoints_inf ... since nobody uses it. gdb/ChangeLog: * breakpoint.h (remove_breakpoints_inf): Change return type to void, move function documentation here. * breakpoint.c (remove_breakpoints_inf): Change return type to void, move function documentation to header. commit 9be796f35b68aee81dc81e1c9b7410067ac0cd42 Author: GDB Administrator Date: Wed Jul 3 00:00:24 2019 +0000 Automatic date update in version.in commit 54d6600669256d2b3582d7088d11ab18f6f21f0d Author: Pedro Alves Date: Tue Jul 2 16:34:31 2019 +0100 Make "info threads" use the gdb::option framework This makes "info threads" use the gdb::option framework to process options. There's only one option today (-gid), and it isn't used much frequently unless you're looking at matching MI output. Still, this was in the neighborhood of "thread apply" so I had converted it. The main advantage is that TAB completion now shows you the available options, and gives you a hint to what the command accepts as operand argument, including showing a metasyntactic variable: (gdb) info threads [TAB] -gid ID (gdb) help info threads Display currently known threads. Usage: info threads [OPTION]... [ID]... Options: -gid Show global thread IDs. If ID is given, it is a space-separated list of IDs of threads to display. Otherwise, all threads are displayed. (gdb) gdb/ChangeLog: 2019-07-02 Pedro Alves * NEWS (Completion improvements): Mention "info threads". * thread.c (struct info_threads_opts, info_threads_option_defs) (make_info_threads_options_def_group): New. (info_threads_command): Use gdb::option::process_options. (info_threads_command_completer): New. (_initialize_thread): Use gdb::option::build_help to build the help text for "info threads". gdb/testsuite/ChangeLog: 2019-07-02 Pedro Alves * gdb.base/options.exp (test-info-threads): New procedure. (top level): Call it. commit 1faa385ff6b11df26efc46152fe15b31adbf8624 Author: Nick Clifton Date: Tue Jul 2 15:58:29 2019 +0100 Stop the BFD library from issuing a warning message when processing allocated sections in debuginfo files that lie outside of any loadable segment. PR 24717 * elf.c (is_debuginfo_file): New function. (assign_file_positions_for_non_load_sections): Do not warn about allocated sections outside of loadable segments if they are found in a debuginfo file. * elf-bfd.h (is_debuginfo_file): Prototype. commit 854f60884cc35806dab1c0f9e7711c45cefaf7fc Author: Simon Marchi Date: Tue Jul 2 10:30:46 2019 -0400 Move generic_load declaration to symfile.h ... since the implementation is in symfile.c. At the same time, add some documentation and make sure the first parameter's name in the declaration matches the definition. gdb/ChangeLog: * defs.h (generic_load): Move from here... * symfile.h (generic_load): ... to here. Rename name parameter to args. * symfile.c (generic_load): Add comment. commit 125f83f66c10c89530d011f4f81324b1f43afcda Author: Nick Clifton Date: Tue Jul 2 14:14:13 2019 +0100 Fix a bug recently introduced to the linker where it would complain about a section being larger than a file, even if the section was artificial. PR 24753 bfd * compress.c (bfd_get_full_section_contents): Do not complain about linker created sections that are larger than the file size. ld * emultempl/aarch64elf.em (_aarch64_add_stub_section): Include the LINKER_CREATED section flag when creating the stub section. commit 163b2c58bdbf0cba9a085574ae88d4c757c6567d Author: Barnaby Wilks Date: Tue Jul 2 14:09:52 2019 +0100 This patch fixes a bug in the AArch64 assembler where an incorrect structural load/store by element instruction would generate the wrong error message. For example, when provided with the (incorrect) instruction st4 {v0.16b-v3.16b}[4],[x0] currently assembler provides the following error message "Error: comma expected between operands at operand 2 -- `st4 {v0.16b-v3.16b}[4],[x0]'". This was due to the assembler consuming the {v0.16b-v3.16b} as the first operand leaving [4],[x0] as what it believed to be the second operand. The actual error is that the first operand should be of element type and not vector type (as provided). The new diagnostic for this error is "Error: expected element type rather than vector type at operand 1 -- `st4 {v0.16b-v3.16b}[4],[x0]'. Added testcases to check for the correct diagnostic message as well as checking that variations of the structural load/store by element instruction also generate the error when they have the same problem. * config/tc-aarch64.c (parse_operands): Add error check. * testsuite/gas/aarch64/diagnostic.l: New test. * testsuite/gas/aarch64/diagnostic.s: New test. * testsuite/gas/aarch64/illegal.l: New tests. * testsuite/gas/aarch64/illegal.s: New tests. commit 4d83e8d97e3b15dcd7b5c58f4199e9f5bd6fca3d Author: Christophe Lyon Date: Tue Jul 2 13:09:02 2019 +0000 PR ld/24709 [arm] linker crash and assertion failure with CMSE As discussed in the PR, we do not support the case where CMSE stubs are inserted too far from their destination. This would require an intermediate long-branch stub, which is tricky in this context. Instead of crashing, this patch emit an error message and exits. 2019-07-02 Christophe Lyon * bfd/elf32-arm.c (CMSE_STUB_NAME): New define. (elf32_arm_get_stub_entry): Do not try to emit long-branch stubs for CMSE stubs. (arm_dedicated_stub_output_section_name): Use CMSE_STUB_NAME. Change-Id: I6d4e1c0fdee6bb9f4b07e5e1b46700b5ba31c62e commit bb32413ff7247f5ac3685ca9075b3432bca69a82 Author: Srinath Parvathaneni Date: Tue Jul 2 12:43:59 2019 +0100 Ensure that debug information is retained for ARMv8-M security functions. Consider a file containing only Armv8-M secure entry functions. This file is compiled and linked with "-march=armv8-m.main -mfloat-abi=hard -mfpu=fpv5-sp-d16 -mcmse -static --specs=rdimon.specs -Wl,--section-start,.gnu.sgstubs=0x190000 -ffunction-sections -fdata-sections -Wl,--gc-sections -g" options to generate an executable. The executable generated does not contain any debug information of these secure entry functions even though it contains secure entry functions in the .text section. This patch fixes this problem. commit 01c1ee4a70478178eb37e46692a02fb846a2f77b Author: Richard Sandiford Date: Tue Jul 2 10:52:16 2019 +0100 [AArch64] Allow MOVPRFX to be used with FMOV The entry for the FMOV alias of FCPY was missing C_SCAN_MOVPRFX. (The entry for FCPY itself was OK.) This was the only /m-predicated instruction I could see that was missing the flag. 2019-07-02 Richard Sandiford opcodes/ * aarch64-tbl.h (aarch64_opcode): Set C_SCAN_MOVPRFX for the SVE FMOV alias of FCPY. gas/ * testsuite/gas/aarch64/sve-movprfx_27.s, * testsuite/gas/aarch64/sve-movprfx_27.d: New test. commit 83adff695c522df8259e421162e194a95713eb45 Author: Richard Sandiford Date: Tue Jul 2 10:51:09 2019 +0100 [AArch64] Add missing C_MAX_ELEM flags for SVE conversions SVE FCVTZS, FCVTZU, SCVTF and UCVTF need the same treatment as FCVT: the register size used in a predicated MOVPRFX must be the wider of the destination and source sizes. Since I was adding a (supposedly) complete set of tests for converts, it seemed more consistent to add a complete set of tests for shifts as well, even though there's no bug to fix there. 2019-07-02 Richard Sandiford opcodes/ * aarch64-tbl.h (aarch64_opcode_table): Add C_MAX_ELEM flags to SVE fcvtzs, fcvtzu, scvtf and ucvtf entries. gas/ * testsuite/gas/aarch64/sve-movprfx_26.s: Also test FCVTZS, FCVTZU, SCVTF, UCVTF, LSR and ASR. * testsuite/gas/aarch64/sve-movprfx_26.d: Update accordingly. * testsuite/gas/aarch64/sve-movprfx_26.l: Likewise. commit 8941884429c305ad42a41f759a98c8cca4d4aacc Author: Richard Sandiford Date: Tue Jul 2 10:51:05 2019 +0100 [AArch64] Fix bogus MOVPRFX warning for GPR form of CPY One of the MOVPRFX tests has: output register of preceding `movprfx' used as input at operand 3 -- `cpy z1.d,p1/m,x1' But X1 and Z1 are not the same register, so the instruction is actually OK. 2019-07-02 Richard Sandiford opcodes/ * aarch64-opc.c (verify_constraints): Skip GPRs when scanning the registers in an instruction prefixed by MOVPRFX. gas/ * testsuite/gas/aarch64/sve-movprfx_25.s: Allow CPY Z1.D.P1/M,X1 to be prefixed by MOVPRFX. * testsuite/gas/aarch64/sve-movprfx_25.d: Update accordingly. * testsuite/gas/aarch64/sve-movprfx_25.l: Likewise. commit 390b205f456be85e309570f1b6e9b75f27194de7 Author: GDB Administrator Date: Tue Jul 2 00:00:38 2019 +0000 Automatic date update in version.in commit 54ee425275c759438d90c40781e3810a551f0a5f Author: Tom Tromey Date: Mon Jul 1 09:33:19 2019 -0600 Avoid use-after-free in DWARF debug names code A static analyzer pointed out that find_vec_in_debug_names will use the contents of a unique_ptr after it has been destroyed. This patch fixes the bug by hoisting the declaration into the appropriate enclosing block. I'm checking this in as obvious. gdb/ChangeLog 2019-07-01 Tom Tromey * dwarf2read.c (dw2_debug_names_iterator::find_vec_in_debug_names): Hoist declaration of without_params. Fix formatting. commit 269b4ded72af1fa05236f866b518f05cf2d408a6 Author: Nick Clifton Date: Mon Jul 1 16:19:14 2019 +0100 Fix bug when generating REL type relocs for assembler generated build notes. PR 24748 * write.c (create_note_reloc): Add desc2_offset parameter. Change name of offset parameter to note_offset. Only use desc2_offset when placing addend into REL reloc's address space. (maybe_generate_build_notes): Update parameters passed to create_note_reloc. commit 41be57caf36943d71ccc6ea70be27a4939399118 Author: Matthew Malcomson Date: Mon Jul 1 15:17:22 2019 +0100 [gas][aarch64][SVE2] Fix pmull{t,b} requirement on SVE2-AES I had mistakenly given all variants of the new SVE2 instructions pmull{t,b} a dependency on the feature +sve2-aes. Only the variant specifying .Q -> .D sizes should have that restriction. This patch fixes that mistake and updates the testsuite to have extra tests (matching the given set of tests per line in aarch64-tbl.h that the rest of the SVE2 tests follow). We also add a line in the documentation of the command line to clarify how to enable `pmull{t,b}` of this larger size. This is needed because all other instructions gated under the `sve2-aes` architecture extension are marked in the instruction documentation by an `HaveSVE2AES` check while pmull{t,b} is gated under the `HaveSVE2PMULL128` check. Regtested targeting aarch64-linux. gas/ChangeLog: 2019-07-01 Matthew Malcomson * testsuite/gas/aarch64/illegal-sve2-aes.d: Update tests. * testsuite/gas/aarch64/illegal-sve2.l: Update tests. * doc/c-aarch64.texi: Add special note of pmull{t,b} instructions under the sve2-aes architecture extension. * testsuite/gas/aarch64/illegal-sve2.s: Add small size pmull{t,b} instructions. * testsuite/gas/aarch64/sve2.d: Add small size pmull{t,b} disassembly. * testsuite/gas/aarch64/sve2.s: Add small size pmull{t,b} instructions. include/ChangeLog: 2019-07-01 Matthew Malcomson * opcode/aarch64.h (enum aarch64_insn_class): sve_size_013 renamed to sve_size_13. opcodes/ChangeLog: 2019-07-01 Matthew Malcomson * aarch64-asm.c (aarch64_encode_variant_using_iclass): Use new sve_size_13 icode to account for variant behaviour of pmull{t,b}. * aarch64-dis-2.c: Regenerate. * aarch64-dis.c (aarch64_decode_variant_using_iclass): Use new sve_size_13 icode to account for variant behaviour of pmull{t,b}. * aarch64-tbl.h (OP_SVE_VVV_HD_BS): Add new qualifier. (OP_SVE_VVV_Q_D): Add new qualifier. (OP_SVE_VVV_QHD_DBS): Remove now unused qualifier. (struct aarch64_opcode): Split pmull{t,b} into those requiring AES and those not. commit 65392b3edd1f6873204a4890efc286c8970abf4e Author: Tom Tromey Date: Thu Jun 27 09:05:17 2019 -0600 Remove is_a_field_of_this from ada_lookup_symbol All callers of ada_lookup_symbol pass NULL for the "is_a_field_of_this" parameter, so remove it. gdb/ChangeLog 2019-07-01 Tom Tromey * ada-exp.y (find_primitive_type): Update. * ada-lang.h (ada_lookup_symbol): Update. * ada-lang.c (ada_lookup_symbol): Remove "is_a_field_of_this" parameter. (ada_lookup_encoded_symbol, ada_lookup_symbol_nonlocal): Update. commit f2f51cd5f511fc562f830818ec4467d8c3cced56 Author: Nick Clifton Date: Mon Jul 1 12:39:09 2019 +0100 Document the .value directive supported by the x86 and x86_64 assemblers. PR 24738 * doc/c-i386.texi (i386-Directives): Add a description of the Value directive. commit a6ce99e98738289658d830def1b6eb9546ab551e Author: Nick Clifton Date: Mon Jul 1 12:24:46 2019 +0100 Correct a typo in the description of the Align and P2align directives. PR 24737 * doc/as.texi (Align): Add missing word to description of pseudo-op. (P2align): Likewise. commit 539300fb929ada830ec7c4002fd59f0d86c823b1 Author: Nick Clifton Date: Mon Jul 1 11:17:01 2019 +0100 Correct the calculation of offsets for ARM exidx relocs when performing a partial link. PR 23839 bfd * elf32-arm.c (elf32_arm_update_relocs): Do not include the section VMA in the offset used to update exidx relocs. ld * testsuite/ld-arm/unwind-4.d: Adjust for corrected calculation of exidx relocs. commit f57cf0e3e357255959d00626bce5c21396e23212 Author: Nick Alcock Date: Fri Jun 28 22:11:14 2019 +0100 libctf: fix spurious error when rolling back to the first snapshot The first ctf_snapshot called after CTF file creation yields a snapshot handle that always yields a spurious ECTF_OVERROLLBACK error ("Attempt to roll back past a ctf_update") on ctf_rollback(), even if ctf_update has never been called. The fix is to start with a ctf_snapshot value higher than the zero value that ctf_snapshot_lu ("last update CTF snapshot value") is initialized to. libctf/ * ctf-create.c (ctf_create): Fix off-by-one error. commit f5e9c9bde04ae52b92027b78c9ca20055f1afb78 Author: Nick Alcock Date: Thu Jun 27 13:51:10 2019 +0100 libctf: deduplicate and sort the string table ctf.h states: > [...] the CTF string table does not contain any duplicated strings. Unfortunately this is entirely untrue: libctf has before now made no attempt whatsoever to deduplicate the string table. It computes the string table's length on the fly as it adds new strings to the dynamic CTF file, and ctf_update() just writes each string to the table and notes the current write position as it traverses the dynamic CTF file's data structures and builds the final CTF buffer. There is no global view of the strings and no deduplication. Fix this by erasing the ctf_dtvstrlen dead-reckoning length, and adding a new dynhash table ctf_str_atoms that maps unique strings to a list of references to those strings: a reference is a simple uint32_t * to some value somewhere in the under-construction CTF buffer that needs updating to note the string offset when the strtab is laid out. Adding a string is now a simple matter of calling ctf_str_add_ref(), which adds a new atom to the atoms table, if one doesn't already exist, and adding the location of the reference to this atom to the refs list attached to the atom: this works reliably as long as one takes care to only call ctf_str_add_ref() once the final location of the offset is known (so you can't call it on a temporary structure and then memcpy() that structure into place in the CTF buffer, because the ref will still point to the old location: ctf_update() changes accordingly). Generating the CTF string table is a matter of calling ctf_str_write_strtab(), which counts the length and number of elements in the atoms table using the ctf_dynhash_iter() function we just added, populating an array of pointers into the atoms table and sorting it into order (to help compressors), then traversing this table and emitting it, updating the refs to each atom as we go. The only complexity here is arranging to keep the null string at offset zero, since a lot of code in libctf depends on being able to leave strtab references at 0 to indicate 'no name'. Once the table is constructed and the refs updated, we know how long it is, so we can realloc() the partial CTF buffer we allocated earlier and can copy the table on to the end of it (and purge the refs because they're not needed any more and have been invalidated by the realloc() call in any case). The net effect of all this is a reduction in uncompressed strtab sizes of about 30% (perhaps a quarter to a half of all strings across the Linux kernel are eliminated as duplicates). Of course, duplicated strings are highly redundant, so the space saving after compression is only about 20%: when the other non-strtab sections are factored in, CTF sizes shrink by about 10%. No change in externally-visible API or file format (other than the reduction in pointless redundancy). libctf/ * ctf-impl.h: (struct ctf_strs_writable): New, non-const version of struct ctf_strs. (struct ctf_dtdef): Note that dtd_data.ctt_name is unpopulated. (struct ctf_str_atom): New, disambiguated single string. (struct ctf_str_atom_ref): New, points to some other location that references this string's offset. (struct ctf_file): New members ctf_str_atoms and ctf_str_num_refs. Remove member ctf_dtvstrlen: we no longer track the total strlen as we add strings. (ctf_str_create_atoms): Declare new function in ctf-string.c. (ctf_str_free_atoms): Likewise. (ctf_str_add): Likewise. (ctf_str_add_ref): Likewise. (ctf_str_purge_refs): Likewise. (ctf_str_write_strtab): Likewise. (ctf_realloc): Declare new function in ctf-util.c. * ctf-open.c (ctf_bufopen): Create the atoms table. (ctf_file_close): Destroy it. * ctf-create.c (ctf_update): Copy-and-free it on update. No longer special-case the position of the parname string. Construct the strtab by calling ctf_str_add_ref and ctf_str_write_strtab after the rest of each buffer element is constructed, not via open-coding: realloc the CTF buffer and append the strtab to it. No longer maintain ctf_dtvstrlen. Sort the variable entry table later, after strtab construction. (ctf_copy_membnames): Remove: integrated into ctf_copy_{s,l,e}members. (ctf_copy_smembers): Drop the string offset: call ctf_str_add_ref after buffer element construction instead. (ctf_copy_lmembers): Likewise. (ctf_copy_emembers): Likewise. (ctf_create): No longer maintain the ctf_dtvstrlen. (ctf_dtd_delete): Likewise. (ctf_dvd_delete): Likewise. (ctf_add_generic): Likewise. (ctf_add_enumerator): Likewise. (ctf_add_member_offset): Likewise. (ctf_add_variable): Likewise. (membadd): Likewise. * ctf-util.c (ctf_realloc): New, wrapper around realloc that aborts if there are active ctf_str_num_refs. (ctf_strraw): Move to ctf-string.c. (ctf_strptr): Likewise. * ctf-string.c: New file, strtab manipulation. * Makefile.am (libctf_a_SOURCES): Add it. * Makefile.in: Regenerate. commit 9658dc39630b8ac4e849fb529a53902da5fc2b1f Author: Nick Alcock Date: Thu Jun 27 13:30:22 2019 +0100 libctf: add hash traversal helpers There are two, ctf_dynhash_iter and ctf_dynhash_iter_remove: the latter lets you return a nonzero value to remove the element being iterated over. Used in the next commit. libctf/ * ctf-impl.h (ctf_hash_iter_f): New. (ctf_dynhash_iter): New declaration. (ctf_dynhash_iter_remove): New declaration. * ctf-hash.c (ctf_dynhash_iter): Define. (ctf_dynhash_iter_remove): Likewise. (ctf_hashtab_traverse): New. (ctf_hashtab_traverse_remove): Likewise. (struct ctf_traverse_cb_arg): Likewise. (struct ctf_traverse_remove_cb_arg): Likewise. commit 3e10cffc9872fda4519f76ba487fd108551a179f Author: Nick Alcock Date: Fri Jun 28 21:58:31 2019 +0100 libctf: fix hash removal We must call htab_remove_elt with an element (in this case, a mocked-up one with only the key populated, since no reasonable hash function will need the other fields), not with the key alone. libctf/ * ctf-hash.c (ctf_dynhash_remove): Call with a mocked-up element. commit c550e7ba937e6a5e04c17275efc362a74f8fd1b1 Author: Nick Alcock Date: Thu Jun 27 13:15:37 2019 +0100 libctf: disambiguate hex output in dumps We were sometimes printing hex values without prefixing them with '0x', leading to confusion about what base the numbers were actually in. libctf/ * ctf-dump.c (ctf_dump_format_type): Prefix hex strings with 0x. (ctf_dump_funcs): Likewise. commit 900e33b9cf45dd70012af7fc509119edebb93339 Author: Nick Clifton Date: Mon Jul 1 10:20:43 2019 +0100 Fix spelling error in assembler documentation. commit 9d3bf266fd601031d12584982ef43df22c95e933 Author: Jan Beulich Date: Mon Jul 1 08:38:50 2019 +0200 x86: drop Vec_Imm4 It is pretty wasteful to have a per-operand flag which is used in exactly 4 cases. It can be relatively easily replaced, and by doing so I've actually found some dead code to remove at the same time (there's no case of ImmExt set at the same time as Vec_Imm4). commit c3949f432f4f7e4a776bd15e10dad56593abeb47 Author: Jan Beulich Date: Mon Jul 1 08:37:40 2019 +0200 x86: limit ImmExt abuse In quite a few cases ImmExt gets used when there's not really any immediate, but rather a degenerate ModR/M byte. ENCL{S,U} show how this case is supposed to be dealt with. Eliminate most abuses, leaving in place (for now) only ones where process_immext() is involved. commit 5641ec015a191e0584fd4cae57bb3262f7a51735 Author: Jan Beulich Date: Mon Jul 1 08:35:08 2019 +0200 x86: optimize AND/OR with twice the same register It seems to be not uncommon for people to use AND or OR in this form for just setting the status flags. TEST, which doesn't write to any register other than EFLAGS, ought to be preferred. Make the change only for -O2 and above though, at least for now. commit 79dec6b7baa243a4ada018a082491990adb6aec1 Author: Jan Beulich Date: Mon Jul 1 08:33:56 2019 +0200 x86-64: optimize certain commutative VEX-encoded insns When they're in the 0F opcode space, swapping their source operands may allow switching from 3-byte to 2-byte VEX prefix encoding. Note that NaN behavior precludes us doing so for many packed and scalar floating point insns; such an optimization would need to be done by the compiler instead in this case, when it knows that NaN-s have undefined behavior anyway. While for explicitly specified AVX/AVX2 insns the optimization (for now at least) gets done only for -O2 and -Os, it is utilized by default in SSE2AVX mode, as there we're re-writing the programmer's specified insns anyway. Rather than introducing a new attribute flag, the change re-uses one which so far was meaningful only for EVEX-encoded insns. commit a80195f1224aced64392b452d55980b6bbd2a8b9 Author: Jan Beulich Date: Mon Jul 1 08:31:50 2019 +0200 x86: StaticRounding implies SAE This implication allows to simplify some conditionals, thus slightly improving performance. This change also paves the way for re-using StaticRounding for non-EVEX insns. commit a0a1771e895e6606a2a795c407e20aed73f69bd9 Author: Jan Beulich Date: Mon Jul 1 08:31:14 2019 +0200 x86: optimize EVEX packed integer logical instructions As long as there's no write mask as well as no broadcast, and as long as the scaled Disp8 wouldn't result in a shorter EVEX encoding, encode VPAND{D,Q}, VPANDN{D,Q}, VPOR{D,Q}, and VPXOR{D,Q} acting on only the lower 16 XMM/YMM registers using their VEX equivalents with -O1. Also take the opportunity and avoid looping twice over all operands when dealing with memory-with-displacement ones. commit cd546e7bd2832c882e69809fdbeb7b376b62039e Author: Jan Beulich Date: Mon Jul 1 08:28:58 2019 +0200 x86: add missing pseudo ops for VPCLMULQDQ ISA extension While the ISA extensions doc suggests them to be made available just like the SDM does for the PCLMULQDQ ISA extension, these weren't added when supposrt for the new extension was introduced. Also make sure the 64-bit non-AVX512 test actually tests VEX encodings, not EVEX ones. commit e3bba3fc751d2f8eea5a25b3f629b0d62257db86 Author: Jan Beulich Date: Mon Jul 1 08:27:38 2019 +0200 x86: drop bogus Disp8MemShift attributes In commit dc821c5f9a ("x86: replace Reg8, Reg16, Reg32, and Reg64") I apparently blindly copied the original register/memory templates into separate ones, in particular without removing the Disp8MemShift which are applicable to templates with memory operands only. commit d583596cc910249eff97e8f9b67c6524fb68af72 Author: Jan Beulich Date: Mon Jul 1 08:25:33 2019 +0200 x86: use encoding_length() also elsewhere commit 9c33702be70a7db648414775faa4850e7cf53034 Author: Jan Beulich Date: Mon Jul 1 08:24:57 2019 +0200 x86: warn about insns exceeding the 15-byte limit Such insns will cause #UD when an attempt to execute them is made. See also http://www.sandpile.org/x86/opc_enc.htm. commit 36cc073ef40f2cb9cb834cdb5d543fbb284f2b32 Author: Jan Beulich Date: Mon Jul 1 08:23:41 2019 +0200 x86: remove ModRM.mod decoding layer from AVX512F VMOVS{S,D} Just like their AVX counterparts they can utilize XMVexScalar / EXdVexScalarS / EXqVexScalarS taking care of dropping the middle operand for their memory forms. commit 219920a7c49069e30a7be2b166099bf795837a6d Author: Jan Beulich Date: Mon Jul 1 08:22:37 2019 +0200 x86: drop a few dead macros commit c444fad6da089b5b94ae7ea2aabce0521695a8d3 Author: GDB Administrator Date: Mon Jul 1 00:00:41 2019 +0000 Automatic date update in version.in commit 7f1c798dcc79c969d0e94bb787faa75cdf704b46 Author: GDB Administrator Date: Sun Jun 30 00:01:04 2019 +0000 Automatic date update in version.in commit d6954c38df90637bc1b0cc2b20473e2754e5eff7 Author: GDB Administrator Date: Sat Jun 29 00:00:22 2019 +0000 Automatic date update in version.in commit 7d7571f0c14b4673ca95f6dc31d6f07d429e6697 Author: Sergio Durigan Junior Date: Wed Jun 26 17:34:50 2019 -0400 Adjust i386 registers on SystemTap probes' arguments (PR breakpoints/24541) This bug has been reported on PR breakpoints/24541, but it is possible to reproduce it easily by running: make check-gdb TESTS=gdb.base/stap-probe.exp RUNTESTFLAGS='--target_board unix/-m32' The underlying cause is kind of complex, and involves decisions made by GCC and the sys/sdt.h header file about how to represent a probe argument that lives in a register in 32-bit programs. I'll use Andrew's example on the bug to illustrate the problem. libstdc++ has a probe named "throw" with two arguments. On i386, the probe is: stapsdt 0x00000028 NT_STAPSDT (SystemTap probe descriptors) Provider: libstdcxx Name: throw Location: 0x00072c96, Base: 0x00133d64, Semaphore: 0x00000000 Arguments: 4@%si 4@%di I.e., the first argument is an unsigned 32-bit value (represented by the "4@") that lives on %si, and the second argument is an unsigned 32-bit value that lives on %di. Note the discrepancy between the argument size reported by the probe (32-bit) and the register size being used to store the value (16-bit). However, if you take a look at the disassemble of a program that uses this probe, you will see: 00072c80 <__cxa_throw@@CXXABI_1.3>: 72c80: 57 push %edi 72c81: 56 push %esi 72c82: 53 push %ebx 72c83: 8b 74 24 10 mov 0x10(%esp),%esi 72c87: e8 74 bf ff ff call 6ec00 <__cxa_finalize@plt+0x980> 72c8c: 81 c3 74 e3 10 00 add $0x10e374,%ebx 72c92: 8b 7c 24 14 mov 0x14(%esp),%edi 72c96: 90 nop <----------------- PROBE IS HERE 72c97: e8 d4 a2 ff ff call 6cf70 <__cxa_get_globals@plt> 72c9c: 83 40 04 01 addl $0x1,0x4(%eax) 72ca0: 83 ec 04 sub $0x4,%esp 72ca3: ff 74 24 1c pushl 0x1c(%esp) 72ca7: 57 push %edi 72ca8: 56 push %esi 72ca9: e8 62 a3 ff ff call 6d010 <__cxa_init_primary_exception@plt> 72cae: 8d 70 40 lea 0x40(%eax),%esi 72cb1: c7 00 01 00 00 00 movl $0x1,(%eax) 72cb7: 89 34 24 mov %esi,(%esp) 72cba: e8 61 96 ff ff call 6c320 <_Unwind_RaiseException@plt> 72cbf: 89 34 24 mov %esi,(%esp) 72cc2: e8 c9 84 ff ff call 6b190 <__cxa_begin_catch@plt> 72cc7: e8 d4 b3 ff ff call 6e0a0 <_ZSt9terminatev@plt> 72ccc: 66 90 xchg %ax,%ax 72cce: 66 90 xchg %ax,%ax Note how the program is actually using %edi, and not %di, to store the second argument. This is the problem here. GDB will basically read the probe argument, then read the contents of %di, and then cast this value to uint32_t, which causes the wrong value to be obtained. In the gdb.base/stap-probe.exp case, this makes GDB read the wrong memory location, and not be able to display a test string. In Andrew's example, this causes GDB to actually stop at a "catch throw" when it should actually have *not* stopped. After some discussion with Frank Eigler and Jakub Jelinek, it was decided that this bug should be fixed on the client side (i.e., the program that actually reads the probes), and this is why I'm proposing this patch. The idea is simple: we will have a gdbarch method, which, for now, is only used by i386. The generic code that deals with register operands on gdb/stap-probe.c will call this method if it exists, passing the current parse information, the register name and its number. The i386 method will then verify if the register size is greater or equal than the size reported by the stap probe (the "4@" part). If it is, we're fine. Otherwise, it will check if we're dealing with any of the "extendable" registers (like ax, bx, si, di, sp, etc.). If we are, it will change the register name to include the "e" prefix. I have tested the patch here in many scenarios, and it fixes Andrew's bug and also the regressions I mentioned before, on gdb.base/stap-probe.exp. No regressions where found on other tests. Comments? gdb/ChangeLog: 2019-06-27 Sergio Durigan Junior PR breakpoints/24541 * gdbarch.c: Regenerate. * gdbarch.h: Regenerate. * gdbarch.sh: Add 'stap_adjust_register'. * i386-tdep.c: Include ''. (i386_stap_adjust_register): New function. (i386_elf_init_abi): Register 'i386_stap_adjust_register'. * stap-probe.c (stap_parse_register_operand): Call 'gdbarch_stap_adjust_register'. commit 5af5392a3d1525fb825747b203a6159ddcba0aa4 Author: Sergio Durigan Junior Date: Thu Jun 27 13:14:26 2019 -0400 Fix crash when using PYTHONMALLOC=debug (PR python/24742) This bug was originally reported against Fedora GDB: https://bugzilla.redhat.com/show_bug.cgi?id=1723564 The problem is that GDB will crash in the following scenario: - PYTHONMALLOC=debug or PYTHONDEVMODE=1 is set. - The Python debuginfo is installed. - GDB is used to debug Python. The crash looks like this: $ PYTHONMALLOC=debug gdb -args python3 -c pass GNU gdb (GDB) Fedora 8.3-3.fc30 Reading symbols from python3... Reading symbols from /usr/lib/debug/usr/bin/python3.7m-3.7.3-3.fc30.x86_64.debug... (gdb) run Starting program: /usr/bin/python3 -c pass Missing separate debuginfos, use: dnf debuginfo-install glibc-2.29-9.fc30.x86_64 Debug memory block at address p=0x5603977bf330: API '' 8098648152243306496 bytes originally requested The 7 pad bytes at p-7 are not all FORBIDDENBYTE (0xfb): at p-7: 0x03 *** OUCH at p-6: 0x00 *** OUCH at p-5: 0x00 *** OUCH at p-4: 0x00 *** OUCH at p-3: 0x00 *** OUCH at p-2: 0x00 *** OUCH at p-1: 0x00 *** OUCH Because memory is corrupted at the start, the count of bytes requested may be bogus, and checking the trailing pad bytes may segfault. The 8 pad bytes at tail=0x706483999ad1f330 are Segmentation fault (core dumped) It's hard to determine what happens, but after doing some investigation and talking to Victor Stinner I found that GDB should not use the Python memory allocation functions before the Python interpreter is initialized (which makes sense). However, we do just that on python/python.c:do_start_initialization: ... progsize = strlen (progname.get ()); progname_copy = (wchar_t *) PyMem_Malloc ((progsize + 1) * sizeof (wchar_t)); ... /* Note that Py_SetProgramName expects the string it is passed to remain alive for the duration of the program's execution, so it is not freed after this call. */ Py_SetProgramName (progname_copy); ... Py_Initialize (); PyEval_InitThreads (); Upon reading the Python 3 C API documentation, I found (https://docs.python.org/3.5/c-api/memory.html): To avoid memory corruption, extension writers should never try to operate on Python objects with the functions exported by the C library: malloc(), calloc(), realloc() and free(). This will result in mixed calls between the C allocator and the Python memory manager with fatal consequences, because they implement different algorithms and operate on different heaps. However, one may safely allocate and release memory blocks with the C library allocator for individual purposes[...] And Py_SetProgramName seems like a very simple call that doesn't need a Python-allocated memory to work on. So I'm proposing this patch, which simply replaces PyMem_Malloc by xmalloc. Testing this is more complicated. First, the crash is completely non-deterministic; I was able to reproduce it 10 times in a row, and then I wasn't able to reproduce it anymore. I found that if you completely remove your build directory and rebuild GDB from scratch, you can reproduce it again confidently. And with my patch, I confirmed that the bug doesn't manifest even in this situation. No regressions found. OK to apply? gdb/ChangeLog: 2019-06-28 Sergio Durigan Junior PR python/24742 https://bugzilla.redhat.com/show_bug.cgi?id=1723564 * python/python.c (do_start_initialization): Use 'xmalloc' instead of 'PyMem_Malloc'. commit 10d06d821919474afaf59fa24cb10450d2349131 Author: Tom Tromey Date: Thu Jun 20 13:50:15 2019 -0600 Handle either order of name and linkage name We discovered that the Ada support in gdb depends on the order of the DW_AT_name and DW_AT_linkage_name attributes in the DWARF. In particular, if they are emitted in the "wrong" order for some system symbols, "catch exception" will not work. This patch fixes this problem by arranging to always prefer the linkage name if both exist. This seems to be what the full symbol reader already does -- that is, this is another bug arising from having two different DWARF readers. Another possible issue here is that gdb still doesn't really preserve mangled names properly. There's a PR open about this. However, this seems to be somewhat involved to fix, which is why this patch continues to work around the bigger issue. gdb/ChangeLog 2019-06-28 Tom Tromey * dwarf2read.c (partial_die_info::read): Prefer the linkage name for Ada. gdb/testsuite/ChangeLog 2019-06-28 Tom Tromey * gdb.dwarf2/ada-linkage-name.c: New file. * gdb.dwarf2/ada-linkage-name.exp: New file. commit 7e56c51c7932cfdb178e9457011d09d53e98937b Author: Nick Clifton Date: Fri Jun 28 15:30:43 2019 +0100 Prevent attempts to allocate excessive amounts of memory when parsing corrupt ELF files. PR 24708 * elf.c (_bfd_elf_slurp_version_tables): Check for an excessively large version reference section. * compress.c (bfd_get_full_section_contents): Check for an uncompressed section whose size is larger than the file size. commit 781152ec18f56726c750cc0812a740396e4ec820 Author: Nick Clifton Date: Fri Jun 28 13:30:00 2019 +0100 Prevent an attempt to allocate an excessive amount of memory when dumping the symbols in a malformed file. PR 24707 * objdump.c (slurp_symtab): Fail with a helpful error message if the symbol table is too large. commit 999d6dff80fab12d22c2a8d91923db6bde7fb3e5 Author: Alan Modra Date: Fri Jun 28 10:18:49 2019 +0930 Plugin target handling This patch fixes failures with LTO on mingw32 targets. Since git commit 7cf7fcc83c all possible targets (minus binary) are matched in bfd_check_format_matches rather than lower priority targets being excluded once a higher priority target matches. During linking that results in the ld/plugin.c plugin_object_p function being called with the input file xvec set to plugin_vec, which means plugin_get_ir_dummy_bfd doesn't see the real format of the file (pe-i386). It defaults to the output format instead, which happens to be pei-i386, and this wrong choice persists for the dummy bfd. pei-i386 isn't recognised as a valid linker input file. So, omit recognizing a plugin object in bfd_check_format_matches when some other object format matches, and make sure those other object formats are checked first. * format.c (bfd_check_format_matches): Don't match plugin target if another target matches. Expand comment. * targets.c (_bfd_target_vector): Move plugin_vec after all other non-corefile targets, outside !SELECT_VECS. * config.bfd: Don't handle targ=plugin here. * configure.ac: Don't add plugin to enable_targets or handle in target loop setting selvecs and other target vars. * configure: Regenerate. commit f60c61e60e59c2bfc5fdd1b448408c2af287899e Author: Alan Modra Date: Fri Jun 28 10:18:03 2019 +0930 [GOLD] PowerPC tweak relnum tests There is a call of relocate() to perform a single relocation. In that case the "relnum" parameter is -1U and of course it isn't appropriate to consider any of the PowerPC code sequence optimisations triggered by a following relocation. * powerpc.cc (Target_powerpc::Relocate::relocate): Don't look at next/previous reloc when relnum is -1. commit f073a3e8c6735bd8fc24d35a957d8944087ea367 Author: Alan Modra Date: Fri Jun 28 10:17:45 2019 +0930 [GOLD] PowerPC linkage table error This fixes a segfault when attempring to output a "linkage table error". "object" is only non-NULL in the local symbol case. * powerpc.cc (Stub_table::plt_error): New function. (Stub_table::do_write): Use it. (Output_data_glink::do_write): Don't segfault emitting linkage table error. commit c432bbbaaa072438e6303b819bdcb4289c2b22e0 Author: Alan Modra Date: Fri Jun 28 10:17:08 2019 +0930 [GOLD] R_PPC64_REL16_HIGH relocs These relocs have been around for quite a while. It's past time gold supported them. elfcpp/ * powerpc.h (R_PPC64_REL16_HIGH, R_PPC64_REL16_HIGHA), (R_PPC64_REL16_HIGHER, R_PPC64_REL16_HIGHERA), (R_PPC64_REL16_HIGHEST, R_PPC64_REL16_HIGHESTA): Define. gold/ * powerpc.cc (Target_powerpc::Scan::get_reference_flags): Handle REL16_HIGH* relocs. (Target_powerpc::Scan::local): Likewise. (Target_powerpc::Scan::global): Likewise. (Target_powerpc::Relocate::relocate): Likewise. commit 60d53d7f032ad7af09760afbaf01b2ec413f198a Author: Alan Modra Date: Fri Jun 28 10:15:57 2019 +0930 PowerPC notoc call stub tests * testsuite/ld-powerpc/callstub-1.d, * testsuite/ld-powerpc/callstub-1.s: New test. * testsuite/ld-powerpc/callstub-2.d, * testsuite/ld-powerpc/callstub-2.s: New test. * testsuite/ld-powerpc/powerpc.exp: Run them. commit 0c823d25a6eb29b331a58082e08f4b5fe06e1394 Author: GDB Administrator Date: Fri Jun 28 00:00:56 2019 +0000 Automatic date update in version.in commit e395f487b3758b3de99fddd2ef15a799e9fc1203 Author: H.J. Lu Date: Thu Jun 27 13:39:19 2019 -0700 i386: Check vector length for scatter/gather prefetch instructions Since not all vector lengths are supported by scatter/gather prefetch instructions, decode them only with supported vector lengths. gas/ PR binutils/24719 * testsuite/gas/i386/disassem.s: Add test for vgatherpf0dps with invalid vector length. * testsuite/gas/i386/x86-64-disassem.s: Likewise. * testsuite/gas/i386/disassem.d: Updated. * testsuite/gas/i386/x86-64-disassem.d: Likewise. opcodes/ PR binutils/24719 * i386-dis-evex-len.h: Add EVEX_LEN_0F38C6_REG_1_PREFIX_2, EVEX_LEN_0F38C6_REG_2_PREFIX_2, EVEX_LEN_0F38C6_REG_5_PREFIX_2, EVEX_LEN_0F38C6_REG_6_PREFIX_2, EVEX_LEN_0F38C7_R_1_P_2_W_0, EVEX_LEN_0F38C7_R_1_P_2_W_1, EVEX_LEN_0F38C7_R_2_P_2_W_0, EVEX_LEN_0F38C7_R_2_P_2_W_1, EVEX_LEN_0F38C7_R_5_P_2_W_0, EVEX_LEN_0F38C7_R_5_P_2_W_1, EVEX_LEN_0F38C7_R_6_P_2_W_0 and EVEX_LEN_0F38C7_R_6_P_2_W_1. * i386-dis-evex-prefix.h: Update PREFIX_EVEX_0F38C6_REG_1, PREFIX_EVEX_0F38C6_REG_2, PREFIX_EVEX_0F38C6_REG_5 and PREFIX_EVEX_0F38C6_REG_6 entries. * i386-dis-evex-w.h: Update EVEX_W_0F38C7_R_1_P_2, EVEX_W_0F38C7_R_2_P_2, EVEX_W_0F38C7_R_5_P_2 and EVEX_W_0F38C7_R_6_P_2 entries. * i386-dis.c: Add EVEX_LEN_0F38C6_REG_1_PREFIX_2, EVEX_LEN_0F38C6_REG_2_PREFIX_2, EVEX_LEN_0F38C6_REG_5_PREFIX_2, EVEX_LEN_0F38C6_REG_6_PREFIX_2, EVEX_LEN_0F38C7_R_1_P_2_W_0, EVEX_LEN_0F38C7_R_1_P_2_W_1, EVEX_LEN_0F38C7_R_2_P_2_W_0, EVEX_LEN_0F38C7_R_2_P_2_W_1, EVEX_LEN_0F38C7_R_5_P_2_W_0, EVEX_LEN_0F38C7_R_5_P_2_W_1, EVEX_LEN_0F38C7_R_6_P_2_W_0 and EVEX_LEN_0F38C7_R_6_P_2_W_1 enums. commit 1b7f24cd6b4e96c64bf82eba06be2c48942699fa Author: Tom Tromey Date: Wed Jun 26 11:41:00 2019 -0600 Change arm_objfile_data_key to use type-safe registry After seeing Simon's patch to change arm_per_objfile to use new and delete, I realized it is now simple to change arm_objfile_data_key to use the type-safe registry. gdb/ChangeLog 2019-06-27 Tom Tromey * arm-tdep.c (arm_objfile_data_key): Move lower. Change type to objfile_key. (arm_find_mapping_symbol, arm_record_special_symbol) (_initialize_arm_tdep): Update. (arm_objfile_data_free): Remove. commit 3d507ff23b724ecb2b9a5a61cebd0fba275cfbc3 Author: Tom Tromey Date: Tue Jun 18 09:37:02 2019 -0600 Fix two buglets in cp_print_value_fields patch Pedro and Tom both pointed out issues in the cp_print_value_fields patch, aka the fix for PR c++/20020. This patch addresses both issues. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-06-27 Tom Tromey * cp-valprint.c (cp_print_value_fields): Pass opts, not options, to cp_print_static_field. gdb/testsuite/ChangeLog 2019-06-27 Tom Tromey * gdb.cp/constexpr-field.exp: Use setup_xfail. commit ba85f98c42877287f45644a6d75513239c9490a5 Author: Barnaby Wilk s Date: Thu Jun 27 14:06:02 2019 +0100 This fixes a bug in the ARm assembler where an immediate operand larger than 4 bits (0xF) could be passed to the SMC (Secure Monitor Call) instruction. For example, this code is invalid: smc #0x6951 The code would previously check for and encode for up to 16 bit immediate values, however this immediate should instead be only a 4 bit value (as documented herehttps://static.docs.arm.com/ddi0406/c/DDI0406C_C_arm_architecture_reference_manual.pdf ). Fixed this by adding range checks in the relevant areas and also removing code that would encode more than the first 4 bits of the immediate (code that is now redundant, as any immediate operand larger than 0xF would error now anyway). gas * config/tc-arm.c (do_smc): Add range check for immediate operand. (do_t_smc): Add range check for immediate operand. Remove obsolete immediate encoding. (md_apply_fix): Fix range check. Remove obsolete immediate encoding. * testsuite/gas/arm/arch6zk.d: Fix test. * testsuite/gas/arm/arch6zk.s: Fix test. * testsuite/gas/arm/smc-bad.d: New test. * testsuite/gas/arm/smc-bad.l: New test. * testsuite/gas/arm/smc-bad.s: New test. * testsuite/gas/arm/thumb32.d: Fix test. * testsuite/gas/arm/thumb32.s: Fix test. commit 5ceb1f4d804b09cb8767ca704c2ba41e50a2bcdb Author: Jan Beulich Date: Thu Jun 27 12:40:08 2019 +0200 x86: add missing test These files were mistakenly left out of commit c1dc7af521. commit 2b7bcc8740dda3f314284169aaf1759a9f56025f Author: Jan Beulich Date: Thu Jun 27 08:50:28 2019 +0200 x86: fold AVX scalar to/from int conversion insns There's no point doing a separate decode of the VEX.L bit - both decoded forms are identical. commit c1dc7af52143966da8065b527e7a7000cf9f7705 Author: Jan Beulich Date: Thu Jun 27 08:49:40 2019 +0200 x86: allow VEX et al encodings in 16-bit (protected) mode These encodings aren't valid in real and VM86 modes, but they are very well usable in 16-bit protected mode. A few adjustments in the disassembler tables are needed where Ev or Gv were wrongly used. Additionally an adjustment is needed to avoid printing "addr32" when that's already recognizable by the use of %eiz. Furthermore the Iq operand template was wrong for XOP:0Ah encoding insns: They're having a uniform 32-bit immediate. Drop Iq and introduce Id instead. Clone a few existing test cases to exercise assembler and disassembler. commit 65bd27298d31c6733b68d0cd6b7a4fc26e0598be Author: Jim Wilson Date: Wed Jun 26 18:12:55 2019 -0700 Fix a few non-dash safe xstormy16 shell scripts. Noticed by a customer while looking at a tangentially related problem. The gas testsuite for xstormy16 has two scripts that have a typo on the first line, they are missing the !. They also use shell syntax that doesn't work on a system where /bin/sh is dash. So I fixed the typo, changed the shell to bash, and made them executable, so that they now work when run directly even if /bin/sh is dash. gas/ * testsuite/gas/xstormy16/allinsn.sh: Change first line to #!/bin/bash and make it executable. * testsuite/gas/xstormy16/gcc.sh: Likewise. commit d7560e2df501c7da1b0e4e64116dd52fe5715a96 Author: Jim Wilson Date: Wed Jun 26 17:17:09 2019 -0700 RISC-V: Make objdump disassembly work right for binary files. Without the ELF header to set info->endian, it ends up as BFD_UNKNOWN_ENDIAN which gets printed as big-endian. But RISC-V instructions are always little endian, so we can set endian_code correctly, and then set display_endian from that. This is similar to how the aarch64 support works, but without the support for constant pools, as we don't have that on RISC-V. opcodes/ PR binutils/24739 * riscv-dis.c (riscv_disasemble_insn): Set info->endian_code. Set info->display_endian to info->endian_code. commit 696d5b3801a0e9d6514a92734bde09985f968a2f Author: GDB Administrator Date: Thu Jun 27 00:00:18 2019 +0000 Automatic date update in version.in commit aa108c0c462e43ab77a1f178d8c8d2277ac73a57 Author: Lili Cui Date: Wed Jun 26 15:12:58 2019 -0700 i386: Document memory size reference in assembler * doc/c-i386.texi: Document x/y/z instruction sufffixes in AT&T syntax and xmmword/ymmword/zmmword/fword/tbyte/oword ptr in Intel syntax. commit a68aa5d3020948564ef99d704d27e458ba22ad9d Author: Nick Clifton Date: Wed Jun 26 17:03:32 2019 +0100 Ensure that when attempting to process an ARM Mach-O file with unknown relocs, that a suitable error message is displayed. PR 24703 binutils* bucomm.c (bfd_nonfatal): If no bfd error code has been set then indicate this in the output. (bfd_nonfatal_message): Likewise. bfd * mach-o-arm.c (bfd_mach_o_arm_canonicalize_one_reloc): Add error messages for failures. * mach-o.c (bfd_mach_o_canonicalize_relocs): Set an bfd error code if returning an error value. commit 762c164d754fc456aa4764d2ed19cc4a3ec625fb Author: Tom Tromey Date: Wed Jun 26 09:48:32 2019 -0600 Remove lookup_minimal_symbol_solib_trampoline lookup_minimal_symbol_solib_trampoline is unused, so this patch removes it. The last use was apparently removed in commit 61a12cfa ("Remove HPUX"). gdb/ChangeLog 2019-06-26 Tom Tromey * minsyms.c (lookup_minimal_symbol_solib_trampoline): Remove. * minsyms.h (lookup_minimal_symbol_solib_trampoline): Don't declare. commit aa2f9bcf23a00fc7e9d7350757b8938c36106c42 Author: Alan Hayward Date: Wed Jun 26 15:48:12 2019 +0100 AArch64: Add missing CPSR flags Add all the CPSR flags for Armv8.1-A through to Armv8.4-A. In addition, document all the existing flags, and remove the superfluous empty spaces. gdb/ChangeLog: * features/aarch64-core.c (create_feature_aarch64_core): Regenerate. * features/aarch64-core.xml: Add cpsr flags. commit 3426ae5760319b6b31d71f3ba798154e6fcea34d Author: Alan Hayward Date: Wed Jun 26 14:10:08 2019 +0100 Arm: Allow version strings in the triplet regexp On Arm, the OS may use the full version string for the arch name when installing the compiler, for example armv7hl-redhat-linux-gnueabi-gcc. Implement gdbarch_gnu_triplet_regexp for Arm to allow this to be detected. Ensure that other Arm targets (eg iwmmxt) are not affected. This fixes the compile/ set of tests on those systems. gdb/ChangeLog: 2019-06-26 Alan Hayward * arm-tdep.c (arm_gnu_triplet_regexp): New function. (arm_gdbarch_init): Add arm_gnu_triplet_regexp. commit 8af58ffe5d06eaed8adfd1f0db2cb10d38c364e2 Author: Tom de Vries Date: Wed Jun 26 15:04:05 2019 +0200 [gdb/testsuite] Compile varval twice, once without bad DWARF When we run gdb.dwarf2/varval.exp with board cc-with-dwz, we run into: ... gdb compile failed, dwz: varval: Couldn't find DIE referenced by \ DW_OP_GNU_variable_value cc-with-tweaks.sh: dwz did not modify varval. UNTESTED: gdb.dwarf2/varval.exp: failed to prepare ... The problem is that varval contains some bad DWARF, which has been added intentionally to test GDB, but that bad DWARF causes dwz to error out, which has the consequence that the test-case remains untested with cc-with-dwz, while the test-case contains also correct DWARF that does not occur in any other test, and which we would really like to test with board cc-with-dwz. Fix this by compiling varval twice, once without and once with the bad DWARF, such that we have at least: ... PASS: gdb.dwarf2/varval.exp: print varval PASS: gdb.dwarf2/varval.exp: print varval2 PASS: gdb.dwarf2/varval.exp: print constval PASS: gdb.dwarf2/varval.exp: print mixedval PASS: gdb.dwarf2/varval.exp: print pointerval PASS: gdb.dwarf2/varval.exp: print *pointerval PASS: gdb.dwarf2/varval.exp: print structval PASS: gdb.dwarf2/varval.exp: print untypedval gdb compile failed, dwz: varval: Couldn't find DIE referenced by \ DW_OP_GNU_variable_value cc-with-tweaks.sh: dwz did not modify varval. UNTESTED: gdb.dwarf2/varval.exp: failed to prepare ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-06-26 Tom de Vries * gdb.dwarf2/varval.exp: Compile twice, once without bad DWARF. commit 22e217527d1ba9ff3d933a14c9d81b066fac606d Author: Tom de Vries Date: Wed Jun 26 05:52:47 2019 +0200 [gdb/testsuite] Add back missing debug for index-cache.exp The proc prepare_for_testing has "debug" as default argument for the options parameter. In the commit c596f180a1 "[gdb/testsuite] Compile index-cache.c with -Wl,--build-id", by setting the options argument we've effectively dropped "debug". This causes index-cache.exp to not contain any debug info anymore on most systems (though not on openSUSE), which causes index-cache.exp FAILs. Fix this by adding back the missing "debug" option. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-06-26 Tom de Vries * gdb.base/index-cache.exp: Add back missing debug option. commit a93cbd6e69abc024bb65c8c398fa9898e551860c Author: GDB Administrator Date: Wed Jun 26 00:00:18 2019 +0000 Automatic date update in version.in commit 4838e44c8fcb2ce2316294a6f30b8d40343c36af Author: Simon Marchi Date: Tue Jun 25 14:22:30 2019 -0400 arm-tdep: sort mapping symbols after parsing all minimal symbols Somebody on IRC reported a while ago that loading a big ARM program in GDB was very slow. Their profiling pointed out that a big amount of time was spent in VEC_safe_insert (arm_mapping_symbol_s, *map_p, idx, &new_map_sym); I was able to verify this as well. ARM mapping symbols are special ELF symbols named $a, $d and $t indicating that symbols starting at this address up to the next mapping symbol (in terms of address) are of type "ARM code", "data" and "Thumb code", respectively. GDB records these symbols in vectors (one for each section) in arm-tdep.c. These vectors are sorted by symbol address, to allow for quick lookup. The current approach is to insert new symbols at the right position to keep the vectors sorted at all time. This is done based on the assumption that mapping symbols come already almost sorted from the binary, as explains this comment in arm_record_special_symbol: /* Assume that most mapping symbols appear in order of increasing value. If they were randomly distributed, it would be faster to always push here and then sort at first use. */ Well, it turns out this is not the case. The original reporter mentioned that mapping symbols in their binaries are not nearly sorted, and this is not my experience either (at least in the binary used in the benchmark below). So if the values don't come nearly sorted, doing insertions to keep the vectors sorted ends up being of the order of number_of_mapping_symbols ^ 2. This patch changes it just like the comment above says, to just append to the vector in arm_record_special_symbol and sort the vector on first use. Benchmark ========= I have done some benchmarks using an --enable-targets=all GDB, compiled with -O2, running on x86-64 and parsing file dce18d22e5c2ecb6a3a57372f4e6ef614130bc.debug from this package: https://launchpad.net/ubuntu/+source/firefox/66.0.3+build1-0ubuntu1/+build/16608691/+files/firefox-dbg_66.0.3+build1-0ubuntu1_armhf.deb This file is the separate debug info for libxul.so (part of firefox) for ARM. I have added some traces to measure the execution time of just elf_symtab_read and ran GDB like this: ./gdb --data-directory=data-directory -nx -batch .../path/to/usr/lib/debug/.build-id/65/dce18d22e5c2ecb6a3a57372f4e6ef614130bc.debug Since the new code sorts the vectors on first use, it would be difficult to benchmark it as-is and be fair, since the "before" version does more work in elf_symtab_read. So I have actually benchmarked a version of the patch that did sort all the vectors at the end of elf_symtab_read, so the sorting would be considered in the measured execution time. Here's the measured execution time of elf_symtab_read, averaged on 3 runs: insert sorted (before): 28.678s sort after (after): 1.760s And here's the total execution time of the command above (just one run). The time is now mostly spent in reading DWARF. insert sorted: 71.12s user 2.71s system 99% cpu 1:14.03 total sort after: 46.42s user 2.60s system 99% cpu 49.147 total I tried for fun on my Raspberry Pi 3, the run time of elf_symtab_read goes from ~259s to ~9s, reading the same file. gdb/ChangeLog: * arm-tdep.c (struct arm_per_objfile) : New field. (arm_find_mapping_symbol): Sort mapping symbol vectors on first use. (arm_record_special_symbol): Don't insert new symbol in sorted position, push it at the end. commit 54cc7474d4851d0e76df5252478a5ebd76b61508 Author: Simon Marchi Date: Tue Jun 25 14:22:23 2019 -0400 arm-tdep: replace arm_mapping_symbol VEC with std::vector This patch replaces VEC (arm_mapping_symbol) with an std::vector. No functional changes intended. gdb/ChangeLog: * arm-tdep.c (struct arm_mapping_symbol) (operator <): New. (arm_mapping_symbol_s): Remove. (DEF_VEC_O(arm_mapping_symbol_s)): Remove. (arm_mapping_symbol_vec): New typedef. (struct arm_per_objfile): Add constructor. : Change type to std::unique_ptr. (arm_compare_mapping_symbols): Remove. (arm_find_mapping_symbol): Adjust to section_maps type change. (arm_objfile_data_free): Call delete on arm_per_objfile. (arm_record_special_symbol): Adjust to section_maps type change. Allocate arm_per_objfile with new. commit b65b566cdcb577edb57616c5b49a2f245b56325c Author: Philippe Waroquiers Date: Sun Jun 23 15:34:15 2019 +0200 Fix alias command not detecting non matching prefix & sometimes asserting. alias_command does not detect that the prefixes of the alias command and the aliased command are not matching: it is comparing the alias prefix with itself, instead of comparing it with the aliased command prefix. This causes either the alias command to silently do nothing, or to have GDB asserting: (gdb) alias assigne imprime limite-elements = set print elements ../../binutils-gdb/gdb/cli/cli-cmds.c:1552: internal-error: void alias_command(const char*, int): Assertion `c_command != NULL && c_command != (struct cmd_list_element *) -1' failed. A problem internal to GDB has been detected, Fix the logic, and update gdb.base/alias.exp to test these cases. gdb/ChangeLog 2019-06-25 Philippe Waroquiers * cli/cli-cmds.c (alias_command): Compare the alias prefix with the command prefix. gdb/testsuite/ChangeLog 2019-06-25 Philippe Waroquiers * gdb.base/alias.exp: Test non matching/non existing prefixes. commit 9b444f9533c38016e4f2de0198c889b13a62d2bc Author: Faraz Shahbazker Date: Wed Jun 19 15:55:04 2019 -0700 MIPS/gas: Fix order of instructions in LI macro expansion When MTHC1 instruction is paired with MTC1 to write a value to a 64-bit FPR, the MTC1 must be executed first, because the semantic definition of MTC1 is not aware that software will be using an MTHC1 to complete the operation, and sets the upper half of the 64-bit FPR to an UNPREDICTABLE value[1]. Fix the order of MTHC1 and MTC1 instructions in LI macro expansion. Modify the expansions to exploit moves from $zero directly by-passing the use of $AT, where ever possible. [1] "MIPS Architecture for Programmers Volume II-A: The MIPS32 Instruction Set Manual", Wave Computing, Inc., Document Number: MD00086, Revision 5.04, December 11, 2013, Section 3.2 "Alphabetical List of Instructions", pp. 217. gas/ * config/tc-mips.c (macro) : Re-order MTHC1 with respect to MTC1 and use $0 for either part where possible. * testsuite/gas/mips/li-d.s: Add test cases for non-zero words in double precision constants. * testsuite/gas/mips/li-d.d: Update reference output. * testsuite/gas/mips/micromips@isa-override-1.d: Likewise. * testsuite/gas/mips/mips32r2@isa-override-1.d: Likewise. * testsuite/gas/mips/mips64r2@isa-override-1.d: Likewise. commit 5c2c8c694de18370ac6161a21217627ddadeafc7 Author: Tom de Vries Date: Tue Jun 25 16:42:46 2019 +0200 [gdb/testsuite] Regenerate dw2-restrict.S When running gdb.dwarf2/dw2-restrict.exp with board cc-with-dwz, we run into: ... dwz: dw2-restrict: DW_AT_stmt_list not DW_FORM_sec_offset or DW_FORM_data4 ... The problem is that the DW_AT_stmt_list is encoded using DW_FORM_addr, while DW_FORM_sec_offset or DW_FORM_data4 would be appropriate. The test-case uses a dw2-restrict.S which was generated using clang 2.9, which contained a bug ( https://bugs.llvm.org/show_bug.cgi?id=9995 ) causing this problem. Fix this by regenerating using clang 5.0.1. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-06-25 Tom de Vries PR testsuite/24727 * gdb.dwarf2/dw2-restrict.S: Regenerate using clang 5.0.1. commit c2fc64f54ef82ccd2fedc9078c539ad273e83a0b Author: Tom Tromey Date: Sun Jun 23 16:38:06 2019 -0600 Tidy tui_delete_win tui_delete_win does its own NULL check, so ~tui_gen_win_info does not need to do it. Also, tui_delete_win has an extraneous "return". gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_delete_win): Remove "return". * tui/tui-data.c (~tui_gen_win_info): Remove "if". commit fb54fa768d148ccd07f2b27ae26e87d95605986c Author: Tom Tromey Date: Sun Jun 23 16:34:39 2019 -0600 Make tui_gen_win_info constructor protected Now that all the window types have their own concrete classes, the tui_gen_win_info constructor can be protected. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (init_and_make_win): Assert on unrecognized type. * tui/tui-data.h (struct tui_gen_win_info): Make constructor protected. commit f7952c5774671414d9e0e8d3524c2921daa6f28e Author: Tom Tromey Date: Sun Jun 23 16:07:12 2019 -0600 Fix latent bug in set_is_exec_point_at valgrind pointed out that the TUI was using uninitialized memory in set_is_exec_point_at. The bug is a missing check against LOA_ADDRESS, causing gdb to examine the uninitialized bits of the "addr" field. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.c (tui_source_window_base::set_is_exec_point_at): Add check against LOA_ADDRESS. commit 17568d782d96434537fe9698c5ebcb09f35c20cb Author: Tom Tromey Date: Sun Jun 23 14:28:11 2019 -0600 Remove NULL checks before xfree A couple of spots in the TUI did a NULL check before an xfree. This isn't necessary, and most other cases were removed from gdb a while ago. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-source.c (tui_set_source_content): Don't check before xfree. * tui/tui-disasm.c (tui_disassemble): Don't check before xfree. commit 53e7cdbaa1d8c0c53038226de07d8160d7f66d82 Author: Tom Tromey Date: Sun Jun 23 14:27:04 2019 -0600 Remove union tui_which_element This removes union tui_which_element, instead moving the content directly into tui_source_window_base. This allows for the deletion of a fair amount of code. Now the TUI window hierarchy is more type-safe. In particular, there is never any confusion now about which members are in use by which subtype. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.h (tui_update_source_window_as_is) (tui_alloc_source_buffer, tui_line_is_displayed) (tui_addr_is_displayed): Change type of win_info. * tui/tui-winsource.c (tui_update_source_window_as_is) (tui_clear_source_content, tui_show_source_line) (tui_show_source_content, tui_source_window_base::refill) (tui_source_window_base::set_is_exec_point_at) (tui_source_window_base::set_is_exec_point_at) (tui_update_breakpoint_info, tui_set_exec_info_content): Update. (tui_alloc_source_buffer, tui_line_is_displayed) (tui_addr_is_displayed): Change type of win_info. Update. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights) (tui_source_window_base::do_make_visible_with_new_height): Update. * tui/tui-source.c (tui_set_source_content) (tui_set_source_content_nil) (tui_source_window::do_scroll_vertical): Update. * tui/tui-layout.c (show_layout): Update. * tui/tui-disasm.c (tui_set_disassem_content) (tui_disasm_window::do_scroll_vertical): Update. * tui/tui-data.h (tui_win_content): Remove. (struct tui_gen_win_info) : Remove. (struct tui_source_element): Add initializers and destructor. (union tui_which_element, struct tui_win_element): Remove. (struct tui_source_window_base) : New field. (struct tui_data_window): Remove destructor. (tui_alloc_content, tui_free_win_content) (tui_free_all_source_wins_content): Don't declare. * tui/tui-data.c (tui_initialize_static_data): Update. (init_content_element, tui_alloc_content): Remove. (~tui_gen_win_info): Update. (~tui_data_window, tui_free_all_source_wins_content) (tui_free_win_content, free_content, free_content_elements): Remove. commit 7908abbf18dde6d3163758e447d72d6d2b267927 Author: Tom Tromey Date: Sun Jun 23 12:21:34 2019 -0600 More type safety for TUI source window functions A few functions can only operate on a source or disassembly window. This patch adds a bit more type safety to a few of these functions. This simplifies a subsequent patch. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.h (tui_clear_source_content) (tui_erase_source_content, tui_show_source_content): Change type of win_info. * tui/tui-winsource.c (tui_clear_source_content) (tui_erase_source_content, tui_show_source_content): Change type of win_info. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update. * tui/tui-source.h (tui_set_source_content_nil): Change type of win_info. * tui/tui-source.c (tui_set_source_content_nil): Change type of win_info. * tui/tui-layout.c (show_source_or_disasm_and_command): Update. commit 02c28df011542448e99041e32bec331c92b39945 Author: Tom Tromey Date: Sun Jun 23 10:25:03 2019 -0600 Use bool for is_exec_point This changes tui_source_element::is_exec_point to be a bool. I looked at also changing "has_break", but it turns out that this field is used inconsistently (sometimes as flags and sometimes as a bool), and so needs more invesstigation before it can be changed. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.c (tui_clear_source_content) (tui_source_window_base::set_is_exec_point_at): Update. * tui/tui-source.c (tui_set_source_content_nil): Update. * tui/tui-data.h (struct tui_source_element) : Now a bool. * tui/tui-data.c (init_content_element): Update. commit 6658b1bf6c2d8d9383826bdfd4068b77d38b3b94 Author: Tom Tromey Date: Sun Jun 23 08:27:55 2019 -0600 Fix "auxiliary" typo The TUI has a function called tui_win_is_auxillary, but the word should actually be spelled "auxiliary". This fixes the typo. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Update. * tui/tui-win.c (make_invisible_and_set_new_height): Update. * tui/tui-layout.c (init_and_make_win): Update. * tui/tui.h (enum tui_win_type): Update. * tui/tui-data.h (tui_win_is_auxiliary): Rename from tui_win_is_auxillary. * tui/tui-data.c (tui_win_is_auxiliary): Rename from tui_win_is_auxillary. commit 21e1c91ef99c3785d1c31314dff574747b4b6e68 Author: Tom Tromey Date: Sat Jun 22 12:49:06 2019 -0600 Separate out data window This removes "data_window" from union tui_which_element and updates the uses. It also changes how tui_data_window refers to the register data, and changes it not to need the "content" field at all (though as this is in a base class, it can't yet be removed). gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_data_window::refresh_window): Update. * tui/tui-windata.c (tui_data_window::first_data_item_displayed) (tui_delete_data_content_windows, tui_display_all_data) (tui_data_window::do_scroll_vertical, tui_display_data_from): Update. * tui/tui-win.c (tui_data_window::set_new_height): Simplify. * tui/tui-regs.c (tui_last_regs_line_no) (tui_line_from_reg_element_no, tui_first_reg_element_no_inline) (tui_show_registers): Update. (tui_show_register_group): Return void. Update. (tui_display_registers_from, tui_display_reg_element_at_line) (tui_display_registers_from_line, tui_check_register_values): Update. * tui/tui-data.h (union tui_which_element) : Remove member. (struct tui_data_window) : Now a std::vector. : Remove. (tui_add_content_elements, tui_free_data_content): Don't declare. * tui/tui-data.c (tui_data_window::clear_detail): Update. (init_content_element): Remove DATA_WIN case. Add assert. (tui_add_content_elements): Remove. (tui_data_window): Update. (tui_free_data_content): Remove. (free_content_elements): Remove DATA_WIN case. commit 115ac53b852ed91e23d97e8357f24216609fa86f Author: Tom Tromey Date: Sat Jun 22 12:07:13 2019 -0600 Remove "data_content" and "data_content_count" from TUI data window The TUI has some stub code for adding data other than registers to the data window. However, it doesn't do anything, and apparently never has. This removes the dead code. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.c (tui_data_item_window): Update. * tui/tui-windata.h (tui_check_data_values): Don't declare. * tui/tui-windata.c (tui_display_all_data) (tui_display_data_from_line): Update. (tui_check_data_values): Remove. * tui/tui-regs.c (tui_show_register_group) (tui_display_reg_element_at_line): Update. * tui/tui-hooks.c (tui_register_changed) (tui_refresh_frame_and_register_information): Call tui_check_register_values. * tui/tui-data.h (struct tui_data_window) : Remove. (enum tui_data_type): Remove. commit eaf9738bedf8de68d4bf8eafd0689cf1973648aa Author: Tom Tromey Date: Sat Jun 22 11:55:33 2019 -0600 Turn tui_first_data_item_displayed into a method tui_first_data_item_displayed is only called from tui_data_window methods, so turn it into a method as well. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-windata.h (tui_first_data_item_displayed): Don't declare. * tui/tui-windata.c (tui_data_window::first_data_item_displayed): Rename from tui_first_data_item_displayed. Update. (tui_data_window::refresh_all) (tui_data_window::do_scroll_vertical): Update. * tui/tui-data.h (struct tui_data_window) : Declare new method. commit 31ca47237fed3db1d912127a386cad6ffbb06750 Author: Tom Tromey Date: Sat Jun 22 11:45:58 2019 -0600 Remove tui_init_generic_part tui_init_generic_part has a single caller, so simply inline it there. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (tui_init_generic_part): Don't declare. * tui/tui-data.c (tui_init_generic_part): Remove, moving contents... (tui_initialize_static_data): ...here. commit 41bcff7feefea958e7be1656e087cae4d54a2af9 Author: Tom Tromey Date: Sat Jun 22 00:20:39 2019 -0600 Separate out data item window This introduces a new subclass of tui_gen_win_info for the data item windows, letting us remove another element from tui_which_element. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-regs.c (tui_show_registers, tui_show_register_group) (tui_display_registers_from, tui_check_register_values): Update. (tui_display_register): Remove win_info parameter; update. (tui_get_register): Change type of parameters. * tui/tui-data.h (struct tui_data_element): Remove. (union tui_which_element) : Remove. : Change type. (struct tui_data_item_window): New. * tui/tui-data.c (init_content_element): Remove DATA_ITEM_WIN case. Add assert. (~tui_data_item_window): New destructor. (free_content_elements): Remove DATA_ITEM_WIN case. commit d2802c33429eb73303dc610401f5d7d27e071ff2 Author: Tom Tromey Date: Sat Jun 22 00:00:11 2019 -0600 Remove two unused enum constants from tui_win_type This removes a couple of unused constants from enum tui_win_type. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui.h (enum tui_win_type) : Remove. commit dd835f8b70a2dfb4d8b84a4744606a9c922aeb25 Author: Tom Tromey Date: Fri Jun 21 06:16:06 2019 -0600 Remove command from tui_which_element union tui_which_element has a "command" member, but it is never used. This removes it. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (struct tui_command_element): Remove. (union tui_which_element) : Remove. * tui/tui-data.c (init_content_element): Remove CMD_WIN case. Add assert. (free_content_elements): Remove CMD_WIN case. commit bd7db367c4bc72bef9c7848b99aaaa1431cf1672 Author: Tom Tromey Date: Fri Jun 21 06:12:48 2019 -0600 Remove layout_def::split The "split" field in struct layout_def is never used, so this patch removes it. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (tui_set_layout): Update. * tui/tui-data.h (struct tui_layout_def) : Remove. * tui/tui-data.c (layout_def): Update. commit 3add462fff33beb0e6f1480d3853eb56d664b438 Author: Tom Tromey Date: Thu Jun 20 20:16:07 2019 -0600 Separate out locator window This introduces a new subclass of tui_gen_win_info for the locator, letting us remove another element from union tui_which_element. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_refresh_all): Update. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights) (tui_source_window_base::set_new_height): Update. * tui/tui-stack.c (tui_make_status_line): Change parameter type. Update. (tui_set_locator_fullname, tui_set_locator_info) (tui_show_frame_info): Update. * tui/tui-source.c (tui_set_source_content) (tui_source_is_displayed): Update. * tui/tui-layout.c (show_source_disasm_command, show_data) (show_source_or_disasm_and_command): Update. * tui/tui-disasm.c (tui_set_disassem_content) (tui_get_begin_asm_address): Update. * tui/tui-data.h (struct tui_locator_element): Remove. (union tui_which_element) : Remove. (struct tui_locator_window): New. (tui_locator_win_info_ptr): Change return type. * tui/tui-data.c (_locator): Change type. (tui_locator_win_info_ptr): Change return type. (init_content_element): Remove LOCATOR_WIN case. Add assert. (tui_alloc_content): Add assert. commit 489e9d8b7bb3337a7f4f902a03c176c22faeabc7 Author: Tom Tromey Date: Thu Jun 20 19:59:06 2019 -0600 Separate out execution-info window This pulls the EXEC_INFO_WIN case out into its own subclass of tui_gen_win_info. This lets us remove an element from union tui_which_element. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.c (tui_exec_info_window::maybe_allocate_content): New method. (tui_set_exec_info_content, tui_show_exec_info_content): Update. * tui/tui-layout.c (init_and_make_win): Add EXEC_INFO_WIN case. (make_source_or_disasm_window): Add cast. * tui/tui-data.h (union tui_which_element) : Remove. (struct tui_source_info): New. (struct tui_source_window_base) : Change type. * tui/tui-data.c (init_content_element): Remove EXEC_INFO_WIN case, and add assert. (tui_alloc_content): Add assert. commit c3fabb7d69b3735bc6042a2992729944c8ced62c Author: Tom Tromey Date: Thu Jun 20 15:31:00 2019 -0600 Remove tui_alloc_win_info There is only a single caller of tui_alloc_win_info, and we're going to add more "new" cases to that caller, so remove tui_alloc_win_info and inline it into init_and_make_win. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (tui_alloc_win_info): Don't declare. * tui/tui-layout.c (init_and_make_win): Use "new" directly. * tui/tui-data.c (tui_alloc_win_info): Remove. commit bbc228ee056cd006e971d5f1cb70ae0f69c1eb36 Author: Tom Tromey Date: Thu Jun 20 15:22:53 2019 -0600 Don't check window type in tui_set_win_focus_to This changes tui_set_win_focus_to so that it no longer checks the window type. Instead, now tui_unhighlight_win also checks whether the window can be highlighted. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-win.c (tui_set_win_focus_to): Don't check window type. * tui/tui-wingeneral.c (tui_unhighlight_win): Check can_highlight. commit 5fcee43a960f0735c53a7c24823b2e4bc1460b9f Author: Tom Tromey Date: Mon Jun 17 21:11:56 2019 -0600 Introduce tui_win_info::make_visible_with_new_height This changes make_visible_with_new_height to be a method on tui_win_info, letting us remove a spot that checks the window type. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-win.c (tui_source_window_base::update_tab_width): Call make_visible_with_new_height method. (tui_win_info::make_visible_with_new_height): New method. (tui_source_window_base::do_make_visible_with_new_height) (tui_data_window::do_make_visible_with_new_height) (tui_cmd_window::do_make_visible_with_new_height): New methods. (make_visible_with_new_height): Remove. (tui_resize_all, tui_adjust_win_heights): Use make_visible_with_new_height method. * tui/tui-data.h (struct tui_win_info) : New methods. (struct tui_source_window_base, struct tui_data_window) (struct tui_cmd_window) : New methods. commit d83f1fe65da075aa08ac7d6b6ef3508587c94600 Author: Tom Tromey Date: Mon Jun 17 18:48:00 2019 -0600 Introduce tui_win_info::update_tab_width This introduces a new tui_win_info::update_tab_width method, and changes the TUI to call it. This fixes another spot that was checking the window type. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-win.c (tui_source_window_base::update_tab_width): New method. (update_tab_width): Call update_tab_width method. * tui/tui-data.h (struct tui_win_info) (struct tui_source_window_base) : New methods. commit 17374de40e7be36e4eb27d29bb8aac89586ce4a1 Author: Tom Tromey Date: Mon Jun 17 17:15:23 2019 -0600 Introduce enum tui_box This adds a new enum to the TUI, replacing two #define constants, providing better type safety. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.h (tui_make_window): Change type of "box_it" parameter. * tui/tui-wingeneral.c (tui_make_window): Change type of "box_it" parameter. (tui_gen_win_info::make_visible): Update. * tui/tui-layout.c (init_and_make_win): Change type of "box_it" parameter. * tui/tui-data.h (enum tui_box): New enum. (BOX_WINDOW, DONT_BOX_WINDOW): Remove defines. commit f936bca26dd7593a3b792e76eba37c5de2374961 Author: Tom Tromey Date: Mon Jun 17 15:45:14 2019 -0600 Remove some TUI static allocations The TUI statically allocates the "execution_info" for the source and disassembly windows. However, there's no deep reason to do this, and this approach makes it harder to allow multiple such windows. This patch removes the static data and changes the code to simply allocate these windows as needed. This required pushing some code into the tui_gen_win_info destructor, but that seems like a good idea anyhow. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (make_source_or_disasm_window): Always use init_and_make_win for EXEC_INFO_WIN. * tui/tui-data.h (struct tui_gen_win_info) <~tui_gen_win_info>: No longer inline. (struct tui_win_info) <~tui_win_info>: Inline. (tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr): Don't declare. * tui/tui-data.c (source_win, disasm_win): Remove globals. (tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr): Remove. (tui_initialize_static_data): Update. (~tui_gen_win_info): Handle more cleanup here. (~tui_source_window_base): Delete "execution_info". (~tui_win_info): Move code to ~tui_gen_win_info; remove. commit d6ba6a11642cdbec4ce91fefe455920b5c073f60 Author: Tom Tromey Date: Mon Jun 17 14:08:44 2019 -0600 Introduce tui_gen_win_info::reset method This introduces the tui_gen_win_info::reset method and changes various places to use it. This led to the realization that the can_highlight member only needs to be set during construction, so this patch makes that change as well. Finally, init_and_make_win is drastically simplified. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (make_command_window): Don't set can_highlight. (show_source_disasm_command): Call the reset method. (show_data): Don't set can_highlight. Call the reset method. (tui_gen_win_info::reset): Rename from init_gen_win_info (init_and_make_win): Simplify. Return tui_gen_win_info. (show_source_or_disasm_and_command): Call the reset method. * tui/tui-data.h (struct tui_gen_win_info) : New method. (struct tui_cmd_window): Set can_highlight. commit 48a3bd16c2189174f601600dc6cceedd68e908b6 Author: Tom Tromey Date: Mon Jun 17 13:19:15 2019 -0600 Move make_visible method to tui_gen_win_info This moves the make_visible method from tui_win_info to its base class, tui_gen_win_info. This allows the removal of another window type check. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_gen_win_info::make_visible): Rename from make_visible. (tui_make_visible, tui_make_invisible): Rewrite. (tui_win_info::make_visible): Remove. (tui_source_window_base::make_visible): Update. * tui/tui-data.h (struct tui_gen_win_info) : New method. Moved from... (struct tui_win_info) : ...here. commit c3bd716ffc20cada32e8a18a209638b578d47f5e Author: Tom Tromey Date: Mon Jun 17 12:56:39 2019 -0600 Remove tui_scroll_direction enum The tui_scroll_direction enum is not really needed, because it's simple to adapt the various scrolling methods to use the sign of their argument as the direction in which to scroll. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.c (tui_source_window_base::do_scroll_horizontal): Remove direction parameter. * tui/tui-windata.c (tui_data_window::do_scroll_vertical): Remove direction parameter. * tui/tui-win.c (tui_win_info::forward_scroll) (tui_win_info::backward_scroll, tui_win_info::left_scroll) (tui_win_info::right_scroll): Update. * tui/tui-source.c (tui_source_window::do_scroll_vertical): Remove direction parameter. * tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Remove direction parameter. * tui/tui-data.h (enum tui_scroll_direction): Remove. (struct tui_win_info) : Remove direction parameter. (struct tui_source_window_base, struct tui_source_window) (struct tui_disasm_window, struct tui_data_window) (struct tui_cmd_window): Update. commit 21c32dca764039afd3517954f6dd0a23d0c9e16c Author: Tom Tromey Date: Mon Jun 17 12:51:29 2019 -0600 Change more TUI functions to take a tui_source_window_base Several more TUI functions should only be called with a source or disassembly window. This patch changes these functions so that this can be caught at compile time. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.h (tui_set_exec_info_content) (tui_show_exec_info_content, tui_erase_exec_info_content) (tui_clear_exec_info_content, tui_update_exec_info): Change argument to tui_source_window_base. * tui/tui-winsource.c (tui_set_exec_info_content) (tui_show_exec_info_content, tui_erase_exec_info_content) (tui_clear_exec_info_content, tui_update_exec_info): Change argument to tui_source_window_base. commit 73fbdc65a1f3da143e604d95443dc11ee86af710 Author: Tom Tromey Date: Sun Jun 16 17:51:34 2019 -0600 Change tui_set_exec_info_content to return void tui_set_exec_info_content can't return an error, so change it to return void instead. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.h (tui_set_exec_info_content): Return void. * tui/tui-winsource.c (tui_set_exec_info_content): Return void. commit 3332534318eb10a77e441307d28336996325558c Author: Tom Tromey Date: Sun Jun 16 17:51:01 2019 -0600 Remove NULL check from tui_set_exec_info_content tui_set_exec_info_content ensures that the window's "execution_info" is allocated, so the NULL check here is redundant and can be removed. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.c (tui_set_exec_info_content): Remove NULL check. commit 29d2c474f5a397017455da82e6dbc72629186359 Author: Tom Tromey Date: Sun Jun 16 17:49:41 2019 -0600 Change tui_alloc_source_buffer return type to void tui_alloc_source_buffer can't actually fail, so change its return type to void and update the callers. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.h (tui_alloc_source_buffer): Change return type to void. * tui/tui-winsource.c (tui_alloc_source_buffer): Change return type to void. * tui/tui-source.c (tui_set_source_content): Update. * tui/tui-disasm.c (tui_set_disassem_content): Update. commit 152f3f4b3342ae16df5ae0640896b8cea008c893 Author: Tom Tromey Date: Sun Jun 16 16:35:31 2019 -0600 Introduce tui_gen_win_info::name method This removes tui_win_name and replaces it with a method on tui_gen_win_info, removing another spot that switched on window type. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-win.c (window_name_completer, tui_set_focus) (tui_all_windows_info): Use name method. * tui/tui-data.h (struct tui_gen_win_info) (struct tui_source_window, struct tui_disasm_window) (struct tui_data_window, struct tui_cmd_window) : New method. (tui_win_name): Don't declare. * tui/tui-data.c (tui_partial_win_by_name): Use name method. (tui_win_name): Remove. commit be4da58857ee4a26b7e58893211ea4f54922e8fd Author: Tom Tromey Date: Sun Jun 16 16:31:37 2019 -0600 Change tui_update_source_window for better type safety tui_update_source_window can only be called for source and disassembly windows, so change the argument type to enforce this at compile time. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.h (tui_update_source_window) (tui_update_source_window_as_is): Change parameter type. * tui/tui-winsource.c (tui_update_source_window): Change win_info to be a tui_source_window_base. (tui_update_source_window_as_is): Likewise. * tui/tui-win.c (make_visible_with_new_height): Update. commit 5b81daba91b035ce98fb7be4970fc2be0183f6ea Author: Tom Tromey Date: Sun Jun 16 16:28:12 2019 -0600 Introduce refresh_window method This replaces tui_refresh_win with a new refresh_window method. This removes another spot that was checking the window's type. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.c (tui_erase_source_content) (tui_show_source_content, tui_show_exec_info_content) (tui_erase_exec_info_content): Use refresh_window method. * tui/tui-wingeneral.h (tui_refresh_win): Don't declare. * tui/tui-wingeneral.c (tui_gen_win_info::refresh_window): Rename from tui_refresh_win. (tui_data_window::refresh_window): New method. (tui_win_info::refresh, tui_source_window_base::refresh) (tui_refresh_all): Use refresh_window method. * tui/tui-stack.c (tui_show_locator_content): Call refresh_window method. * tui/tui-regs.c (tui_display_register): Call refresh_window method. * tui/tui-layout.c (show_source_disasm_command) (show_source_or_disasm_and_command): Call refresh_window method. * tui/tui-data.h (struct tui_gen_win_info) (struct tui_data_window, struct tui_cmd_window) : New method. commit cb2ce89305264543a4014d98bacb26800d92d394 Author: Tom Tromey Date: Sun Jun 16 16:03:54 2019 -0600 Derive tui_win_info from tui_gen_win_info This changes tui_win_info to derive from tui_gen_win_info, rather than having a tui_gen_win_info as a member. This removes a layer of member access from the entire TUI, which is why this patch is so large. This change will enable further removal of switches based on window type. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui.c (tui_rl_other_window, tui_enable) (tui_is_window_visible, tui_get_command_dimension): Update. * tui/tui-winsource.c (tui_update_source_window_as_is) (tui_clear_source_content, tui_erase_source_content) (tui_show_source_line, tui_source_window_base::refill) (tui_source_window_base::do_scroll_horizontal) (tui_source_window_base::set_is_exec_point_at) (tui_update_breakpoint_info, tui_set_exec_info_content) (tui_alloc_source_buffer, tui_line_is_displayed) (tui_addr_is_displayed): Update. * tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win) (tui_check_and_display_highlight_if_needed) (tui_win_info::make_visible, tui_win_info::refresh) (tui_refresh_all): Update. * tui/tui-windata.c (tui_first_data_item_displayed) (tui_delete_data_content_windows, tui_erase_data_content) (tui_display_all_data, tui_data_window::refresh_all) (tui_check_data_values): Update. * tui/tui-win.c (window_name_completer, tui_update_gdb_sizes) (tui_set_win_focus_to, tui_win_info::forward_scroll) (tui_win_info::backward_scroll, tui_refresh_all_win) (tui_resize_all, tui_set_focus, tui_all_windows_info) (update_tab_width, tui_set_win_height, tui_adjust_win_heights) (tui_source_window_base::set_new_height) (tui_data_window::set_new_height) (make_invisible_and_set_new_height) (make_visible_with_new_height, new_height_ok) (parse_scrolling_args): Update. * tui/tui-stack.c (tui_show_frame_info): Update. * tui/tui-source.c (tui_set_source_content) (tui_set_source_content_nil, tui_source_is_displayed) (tui_source_window::do_scroll_vertical): Update. * tui/tui-regs.c (tui_show_registers, tui_show_register_group) (tui_display_registers_from, tui_display_reg_element_at_line) (tui_check_register_values, tui_reg_command): Update. * tui/tui-layout.c (tui_default_win_height) (show_source_disasm_command, show_data, init_and_make_win) (show_source_or_disasm_and_command): Update. * tui/tui-io.c (update_cmdwin_start_line, tui_putc, tui_puts) (tui_redisplay_readline, tui_mld_flush) (tui_mld_erase_entire_line, tui_mld_getc, tui_cont_sig) (tui_getc): Update. * tui/tui-disasm.c (tui_set_disassem_content) (tui_disasm_window::do_scroll_vertical): Update. * tui/tui-data.h (struct tui_gen_win_info) <~tui_gen_win_info>: Now virtual. (struct tui_win_info): Derive from tui_gen_win_info. <~tui_win_info>: Mark as override. : Remove member. * tui/tui-data.c (tui_cmd_window::clear_detail, tui_next_win) (tui_prev_win, tui_partial_win_by_name, tui_win_info) (~tui_data_window, ~tui_win_info) (tui_free_all_source_wins_content): Update. * tui/tui-command.c (tui_refresh_cmd_win): Update. commit ab313b35e505ccab9c23acbe82087b6c22a2088d Author: Tom Tromey Date: Sun Jun 16 15:56:24 2019 -0600 Use new and delete for tui_gen_win_info This changes tui_gen_win_info to be allocated with new and destroyed with delete. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (init_and_make_win): Use new. * tui/tui-data.h (struct tui_gen_win_info): Add constructor, destructor, initializers. (tui_alloc_generic_win_info): Don't declare. * tui/tui-data.c (_locator): Add argument to constructor. (source_win, disasm_win): New globals. (exec_info): Remove. (tui_source_exec_info_win_ptr, tui_disassem_exec_info_win_ptr): Update. (tui_alloc_generic_win_info): Remove. (init_content_element): Use new. (tui_win_info::tui_win_info): Update. (free_content_elements) : Use delete. commit dc2c33e4562e0af441a9c8acff0400a78cb45d98 Author: Tom Tromey Date: Sun Jun 16 15:53:36 2019 -0600 Change tui_which_element::data_window to be a pointer A coming patch will add a constructor to tui_gen_win_info. However, because the tui_which_element union contains an object of this type, first something must be done here in order to avoid having a union with a member that has a constructor. This patch changes this element to be a pointer instead. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_refresh_win): Update. * tui/tui-windata.c (tui_first_data_item_displayed) (tui_delete_data_content_windows): Update. * tui/tui-win.c (tui_data_window::set_new_height): Update. * tui/tui-regs.c (tui_show_registers, tui_show_register_group) (tui_display_registers_from, tui_check_register_values): Update. * tui/tui-data.h (union tui_which_element) : Now a pointer. * tui/tui-data.c (init_content_element): Update. Allocate the new window. (tui_free_data_content): Update. (free_content_elements) : Free the window. commit 214a5cbea656f3ffc1e7e525627c56849347c709 Author: Tom Tromey Date: Sun Jun 16 15:28:03 2019 -0600 Introduce set_highlight method This introduces the tui_win_info::set_highlight method, and changes the highlighting-related code to use bool rather than int. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win): Update. * tui/tui-layout.c (make_command_window) (show_source_disasm_command, show_data, init_and_make_win) (show_source_or_disasm_and_command): Update. * tui/tui-data.h (struct tui_win_info) : New method. : Now bool. (tui_set_win_highlight): Don't declare. * tui/tui-data.c (tui_set_win_highlight): Remove. commit 8e2daf1532e587fee8d14aab1baad40e628065e2 Author: Tom Tromey Date: Sun Jun 16 15:17:52 2019 -0600 Remove redundant check from make_visible This removes a check of the window type from make_visible. This function already checks that the window type is not CMD_WIN near the top, so this condition can never be false. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (make_visible): Remove check of window type. commit 8903bd8a37f905f5d77d2e04219e1a1eddaa6133 Author: Tom Tromey Date: Sun Jun 16 15:16:52 2019 -0600 Introduce max_height method This introduces the tui_win_info::max_height method and changes new_height_ok to use it, rather than checking the window type directly. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-win.c (tui_win_info::max_height) (tui_cmd_window::max_height): New methods. (new_height_ok): Call max_height. * tui/tui-data.h (struct tui_win_info, struct tui_cmd_window) : New method. commit 3f02ce1e3df15731872befd2e711854b2b259745 Author: Tom Tromey Date: Sun Jun 16 15:12:25 2019 -0600 Introduce set_new_height method This introduces tui_win_info::set_new_height and implements it in the subclasses as appropriate. This removes another switch on the window type. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-win.c (tui_source_window_base::set_new_height) (tui_data_window::set_new_height): New methods. (make_invisible_and_set_new_height): Call set_new_height method. * tui/tui-data.h (struct tui_win_info) (struct tui_source_window_base, struct tui_data_window) : New method. commit 1825f487ae903438eb2a9b6f461337d8ec1b06c0 Author: Tom Tromey Date: Sun Jun 16 14:52:08 2019 -0600 Introduce the refresh_all method This introduces the tui_win_info::refresh_all method and implements it as needed in subclasses. The name and comment are a bit of a guess on my part. The main benefit of this patch is removing another switch on the type of the window. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui.c (tui_rl_other_window): Call the refresh_all method. * tui/tui-windata.c (tui_data_window::refresh_all): Rename from tui_refresh_data_win. * tui/tui-win.c (tui_source_window_base::refresh_all): New method. (tui_refresh_all_win): Call the refresh_all method. (tui_set_focus): Likewise. * tui/tui-data.h (struct tui_win_info) : New method. (struct tui_source_window_base, struct tui_data_window) : Likewise. commit ad54d15bdb71b05010ece1ef32ab22ab46794166 Author: Tom Tromey Date: Sun Jun 16 14:43:56 2019 -0600 Introduce two TUI source window methods This adds two methods to the TUI source window. These are just renamings of existing functions. It also changes the source window list to have a more precise type, letting the code be more type-safe. This will be useful again later. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.h (tui_refill_source_window) (tui_set_is_exec_point_at): Don't declare. * tui/tui-winsource.c (tui_update_source_windows_with_addr) (tui_source_window_base::refill): Rename from tui_refill_source_window. (tui_source_window_base::do_scroll_horizontal): Update. (tui_source_window_base::set_is_exec_point_at): Rename from tui_set_is_exec_point_at. (tui_update_all_breakpoint_info): Update. * tui/tui-stack.c (tui_show_frame_info): Update. * tui/tui-layout.c (show_data): Add cast. * tui/tui-hooks.c (tui_redisplay_source): Call refill method. * tui/tui-data.h (struct tui_source_window_base) : New methods. (tui_source_windows, tui_add_to_source_windows): Update types. (tui_add_to_source_windows): Remove redundant declaration. * tui/tui-data.c (source_windows): Store tui_source_window_base. (tui_source_windows): Change return type. (tui_clear_source_windows_detail): Update. (tui_add_to_source_windows): Change type of parameter. (tui_free_all_source_wins_content): Update. commit 2042b506c85274b4c652fbc9291be65b2550104d Author: Tom Tromey Date: Sun Jun 16 14:27:28 2019 -0600 Introduce the refresh method This adds tui_win_info::refresh and updates tui_source_window_base to implement it as well. This lets us simplify tui_refresh_all, removing a check of the window type. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_win_info::refresh) (tui_source_window_base::refresh): New methods. (tui_refresh_all): Call the refresh method. * tui/tui-data.h (struct tui_win_info) (struct tui_source_window_base) : New method. commit 56122977c04496325ca9d83231e7751ab94d6b14 Author: Tom Tromey Date: Sun Jun 16 14:24:42 2019 -0600 Use bool for visibility This changes the visibility-related functions and data members in the TUI to use bool rather than int. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui.h (tui_is_window_visible): Return bool. * tui/tui.c (tui_is_window_visible): Return bool. * tui/tui-wingeneral.c (tui_make_window, make_visible) (tui_make_visible, tui_make_invisible) (tui_win_info::make_visible) (tui_source_window_base::make_visible, make_all_visible) (tui_make_all_visible, tui_make_all_invisible): Update. * tui/tui-windata.c (tui_delete_data_content_windows): Update. * tui/tui-data.h (struct tui_gen_win_info) : Now bool. (struct tui_win_info, struct tui_source_window_base) (struct tui_cmd_window) : Change parameter to bool. * tui/tui-data.c (tui_init_generic_part): Update. commit cda37efbffb63e2634ea0600fdad2de6a8f9f3ad Author: Tom Tromey Date: Sun Jun 16 14:22:21 2019 -0600 Introduce make_visible method This introduceds the make_visible to tui_win_info and overrides it in subclasses as appropriate. This allows the removal of the tui_win_is_source_type, as it is no longer used. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-wingeneral.c (tui_win_info::make_visible) (tui_source_window_base::make_visible): New methods. (make_all_visible): Make method call. * tui/tui-data.h (struct tui_win_info) : New method. (struct tui_source_window_base, struct tui_cmd_window): Override make_visible. (tui_win_is_source_type): Don't declare. * tui/tui-data.c (tui_win_is_source_type): Remove. commit 6a0ee02c22b78b6d49fda99b6f2f9154d0cb0a47 Author: Tom Tromey Date: Sun Jun 16 14:14:10 2019 -0600 Remove an unneeded NULL check show_source_or_disasm_and_command will either create or reset the source window, so the final NULL check is not necessary. This patch removes it. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (show_source_or_disasm_and_command): Remove NULL check. commit 63901aeccf923abaca02c8a58b1141d3859d7247 Author: Tom Tromey Date: Sun Jun 16 14:06:18 2019 -0600 Inline constructors and initializers This inlines the constructors and initializers for tui_cmd_window and tui_data_window. This makes the code a bit simpler. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (struct tui_data_window, struct tui_cmd_window): Inline constructor. Add initializers for members. * tui/tui-data.c (tui_data_window, tui_cmd_window): Remove constructors; now inline in class. commit ceb13a13822b28d8e1cdc2e02975bb6569d3d8e6 Author: Tom Tromey Date: Sun Jun 16 14:04:11 2019 -0600 Change tui_data_window::display_regs to bool This changes tui_data_window::display_regs to bool and updates the uses. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-regs.c (tui_show_registers): Update. * tui/tui-data.h (struct tui_data_window) : Now bool. * tui/tui-data.c (tui_data_window::clear_detail) (tui_data_window): Update. commit 238eb706f902da8afef1d5e3c9fdfeecf688bac3 Author: Tom Tromey Date: Sun Jun 16 14:03:04 2019 -0600 Remove struct tui_data_info Like the previous two patches, this removes struct tui_data_info in favor of inlining its contents into tui_data_window. This was the last member of the tui_win_info detail union, so that is removed. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-windata.c (tui_display_all_data) (tui_display_data_from_line, tui_display_data_from) (tui_check_data_values, tui_data_window::do_scroll_vertical): Update. * tui/tui-regs.c (tui_last_regs_line_no) (tui_line_from_reg_element_no, tui_first_reg_element_no_inline) (tui_show_registers, tui_show_register_group) (tui_display_registers_from, tui_display_reg_element_at_line) (tui_display_registers_from_line, tui_check_register_values) (tui_reg_next, tui_reg_prev): Update. * tui/tui-layout.c (tui_set_layout, show_data): Update. * tui/tui-data.h (struct tui_data_info): Remove. Move contents to tui_data_window. (struct tui_win_info) : Remove. Add new fields from tui_data_info. (TUI_DATA_WIN): Add cast. * tui/tui-data.c (tui_data_window::clear_detail, tui_data_window) (~tui_data_window): Simplify. commit 81491aa0968e5bcab0388914f909ccb12e084e32 Author: Tom Tromey Date: Sun Jun 16 13:55:51 2019 -0600 Remove struct tui_command_info Like the previous patch, this removes tui_command_info in favor of putting it elements directly into tui_cmd_window. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (show_source_disasm_command) (show_source_or_disasm_and_command): Update. * tui/tui-io.c (update_cmdwin_start_line) (tui_redisplay_readline): Update. * tui/tui-data.h (struct tui_command_info): Remove. (struct tui_win_info) : Remove command_info member. (struct tui_data_window) : New member, from tui_command_info. (TUI_CMD_WIN): Add casts. commit e6e4150110bcee66adfadb9f126eb3bb1fd7c054 Author: Tom Tromey Date: Sun Jun 16 13:46:18 2019 -0600 Remove struct tui_source_info The tui_source_info struct is used as a member of the "detail" union in tui_win_info, and this member of the union is only used by source and disassembly windows. This patch removes tui_source_info and moves its members directly to tui_source_window_base. This simplifies the code by removing a layer of references from many places. In a few spots, a new cast was needed, but most of these will be removed by the end of the series. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.c (tui_update_source_window) (tui_refill_source_window) (tui_source_window_base::do_scroll_horizontal) (tui_update_breakpoint_info, tui_set_exec_info_content) (tui_show_exec_info_content, tui_erase_exec_info_content) (tui_clear_exec_info_content): Update. * tui/tui-wingeneral.c (make_all_visible, tui_refresh_all): Update. * tui/tui-win.c (make_invisible_and_set_new_height) (make_visible_with_new_height): Update. * tui/tui-source.c (tui_set_source_content) (tui_show_symtab_source): Update. * tui/tui-layout.c (extract_display_start_addr) (show_source_disasm_command, show_data) (make_source_or_disasm_window) (show_source_or_disasm_and_command): Update. * tui/tui-disasm.c (tui_set_disassem_content): Simplify. (tui_disasm_window::do_scroll_vertical): Remove shadowing "gdbarch". * tui/tui-data.h (struct tui_source_info): Remove. Move contents to tui_source_window_base. (struct tui_win_info) : Remove source_info member. (struct tui_source_window_base) : Inline. Move contents from tui_source_info; rename has_locator member to m_has_locator. (TUI_SRC_WIN, TUI_DISASM_WIN): Add casts. * tui/tui-data.c (tui_source_window_base::has_locator): Move to header file. (tui_source_window_base::clear_detail, ~tui_source_window_base): Simplify. (tui_free_all_source_wins_content): Cast to tui_source_window_base. commit 44f0e208eb32a7ac469cef2b6760f72534abac09 Author: Tom Tromey Date: Sun Jun 16 11:37:49 2019 -0600 Introduce has_locator method This changes tui_win_has_locator to be a method on tui_win_info, and changes the locator code to use bool rather than int. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-win.c (make_invisible_and_set_new_height) (make_visible_with_new_height): Call has_locator method. * tui/tui-layout.c (show_source_disasm_command, show_data) (show_source_or_disasm_and_command): Update for bool change. * tui/tui-data.h (struct tui_source_info) : Now bool. (tui_win_info) : New method. (struct tui_source_window_base) : New method. (tui_win_has_locator): Don't declare. * tui/tui-data.c (tui_source_window_base::has_locator): Rename from tui_win_has_locator. (tui_source_window_base): Use false, not FALSE. commit 7778b9128f46b1bb7af965ae3821f63b05c627ef Author: Tom Tromey Date: Sun Jun 16 11:29:45 2019 -0600 Remove tui_clear_win_detail An earlier patch changed the context of the sole call to tui_clear_win_detail to make it clear that this can never be called with a NULL window pointer. So, remove tui_clear_win_detail in favor of calling the method directly. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (tui_clear_win_detail): Don't declare. * tui/tui-data.c (tui_clear_source_windows_detail): Call the clear_detail method directly. (tui_clear_win_detail): Remove. commit f83d391c5aa3304faf8ef1384a6c64f082653260 Author: Tom Tromey Date: Sun Jun 16 16:31:56 2019 -0600 Don't use TUI_DISASM_WIN in tui_disasm_window method The previous patch made it clear that the diassembly window scrolling method was written to assume there could only ever be a single disassembly window. This changes that spot to use "this" rather than the TUI_DISASM_WIN global. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Use "this", not TUI_DISASM_WIN. commit 13446e05a363db17f0140b1450fc7df509d2ca37 Author: Tom Tromey Date: Sun Jun 16 11:22:38 2019 -0600 Introduce methods for scrolling This changes the TUI to use virtual methods on the various window types for scrolling. Window-specific functions for this purpose are renamed to be methods, and the generic tui_scroll function is removed as it is no longer called. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.h (tui_horizontal_source_scroll): Don't declare. * tui/tui-winsource.c (tui_source_window_base::do_scroll_horizontal): Rename from tui_horizontal_source_scroll. * tui/tui-windata.h (tui_vertical_data_scroll): Don't declare. * tui/tui-windata.c (tui_data_window::do_scroll_vertical): Rename from tui_vertical_data_scroll. * tui/tui-win.h (tui_scroll): Don't declare. * tui/tui-win.c (tui_win_info::forward_scroll) (tui_win_info::backward_scroll, tui_win_info::left_scroll) (tui_win_info::right_scroll): Rename and update. (tui_scroll_forward_command, tui_scroll_backward_command) (tui_scroll_left_command, tui_scroll_right_command): Update. (tui_scroll): Remove. * tui/tui-source.h: Don't declare tui_vertical_source_scroll. * tui/tui-source.c (tui_source_window::do_scroll_vertical): Rename from tui_vertical_source_scroll. * tui/tui-disasm.h (tui_vertical_disassem_scroll): Don't declare. * tui/tui-disasm.c (tui_disasm_window::do_scroll_vertical): Rename from tui_vertical_disassem_scroll. * tui/tui-data.h (struct tui_win_info) : New methods. : Likewise. (struct tui_source_window_base): Add do_scroll_horizontal. (struct tui_source_window, struct tui_disasm_window): Add do_scroll_vertical. (struct tui_data_window, struct tui_cmd_window): Add do_scroll_horizontal and do_scroll_vertical. * tui/tui-command.c (tui_dispatch_ctrl_char): Use method calls. commit 5cf82909a7047cee471ee40cfe623250c258d76e Author: Tom Tromey Date: Sun Jun 16 11:08:43 2019 -0600 Create tui_disasm_window This introduces the new tui_disasm_window class, which represents a disassembly window. It shares a lot of behavior with the source window, so a new tui_source_window_base class is also created. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (struct tui_source_window_base): New struct. (struct tui_source_window): Derive from tui_source_window_base. (struct tui_disasm_window): New struct. * tui/tui-data.c (tui_source_window_base::clear_detail): Rename from tui_source_window::clear_detail. (tui_source_window_base): Rename from tui_source_window. (~tui_source_window_base): Rename from ~tui_source_window. (tui_alloc_win_info): Create a tui_disasm_window. commit ee1d42d6c1a05725868a8ea4855eaa81cbbda635 Author: Tom Tromey Date: Sun Jun 16 10:52:27 2019 -0600 Split the tui_win_info destructor This patch adds destructors to tui_source_window and tui_data_window, and splits ~tui_win_info as appropriate. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (struct tui_source_window) (struct tui_data_window): Declare destructors. * tui/tui-data.c (~tui_source_window, ~tui_data_window): New destructors. (tui_win_info): Simplify. commit b4eb24524b5838141bd3c3998afc81f65302eca1 Author: Tom Tromey Date: Sun Jun 16 10:49:45 2019 -0600 Remove tui_list This removes the tui_list type in favor of a std::vector. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-winsource.c (tui_display_main) (tui_update_source_windows_with_addr) (tui_update_all_breakpoint_info): Update. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights) (new_height_ok, parse_scrolling_args): Update. * tui/tui-stack.c (tui_show_frame_info): Update. * tui/tui-data.h (struct tui_list): Remove. (tui_source_windows): Return a reference to a std::vector. * tui/tui-data.c (source_windows): Now a std::vector. (tui_source_windows): Change return type. (tui_clear_source_windows): Rewrite. (tui_clear_source_windows_detail, tui_add_to_source_windows) (tui_free_all_source_wins_content): Rewrite. commit 8761a91b2614304963bfe211ff8c682c7eba3b51 Author: Tom Tromey Date: Sun Jun 16 10:42:09 2019 -0600 Introduce tui_win_info::clear_detail method This introduces the clear_detail method and updates the various subclasses of tui_win_info to implement it. A subsequent patch will remove tui_clear_win_detail, but that isn't done for now because at this point it isn't readily obvious that the NULL check is not needed. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (struct tui_win_info, struct tui_source_window) (struct tui_data_window, struct tui_cmd_window): Declare clear_detail method. * tui/tui-data.c (tui_source_window::clear_detail) (tui_cmd_window::clear_detail, tui_data_window::clear_detail): New methods. (tui_clear_win_detail): Simplify. commit 0ed69edaab683b9290a05962faa50d970facfa84 Author: Tom Tromey Date: Sun Jun 16 10:37:25 2019 -0600 Simplify source and disassembly window creation Similar to the previous patch, neither make_source_window nor make_disasm_window could be called when *win_info_ptr was non-NULL. This patch simplifies the functions by removing the parameter and having them return their results directly. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (make_source_window, make_disasm_window) (make_source_or_disasm_window): Remove win_info_ptr parameter. Return the new window. (show_source_disasm_command, show_data) (show_source_or_disasm_and_command): Update. commit 82432e10143669d4936848d77e2a7b78c62c26e0 Author: Tom Tromey Date: Sun Jun 16 10:32:35 2019 -0600 Simplify command window creation make_command_window is never called when *win_info_ptr is non-NULL, so this patch simplifies the function by removing the parameter and having it return its result directly. This in turn makes it more obvious that a NULL check in show_source_disasm_command can be removed. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (make_command_window): Remove win_info_ptr parameter. Return the new window. (show_source_disasm_command): Update and remove NULL check. (show_source_or_disasm_and_command): Update. commit ec328aa512ee09ab326d59b417836bb950083230 Author: Tom Tromey Date: Sun Jun 16 10:23:10 2019 -0600 Remove an unnecessary NULL check from the TUI In init_and_make_win, opaque_win_info can't be NULL after a new window is allocated. This patch removes an unnecessary NULL check. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-layout.c (init_and_make_win): Remove NULL check. commit 33b906abfa7721128791883875d90394f8e2e7c2 Author: Tom Tromey Date: Sun Jun 16 10:13:13 2019 -0600 Create subclasses for different window types This changes the TUI so that each different major window type has its own subclass. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (struct tui_win_info): Make constructor protected. Make destructor virtual. Add initializers. (tui_source_window, tui_data_window, tui_cmd_window): New classes. * tui/tui-data.c (tui_win_info): Rename from init_win_info. Now a constructor. Add "type" parameter. (tui_source_window, tui_data_window, tui_cmd_window): New constructors. (tui_alloc_win_info): Instantiate the appropriate subclass. commit e7e11af42dca6482302833c4106974176aa66052 Author: Tom Tromey Date: Sun Jun 16 09:43:21 2019 -0600 Add destructor to tui_win_info This changes tui_free_window into a destructor for tui_free_window and then updates the users. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-win.c (tui_resize_all): Use delete. * tui/tui-data.h (struct tui_win_info) <~tui_win_info>: Declare destructor. (tui_free_window): Don't declare. * tui/tui-data.c (~tui_win_info): Rename from tui_free_window. Update. commit 6792b55e08ec49f40916d4f8d7168d0047b9e928 Author: Tom Tromey Date: Sun Jun 16 09:41:06 2019 -0600 Use new and delete for TUI windows This changes tui_win_info to use new and delete, rather than XNEW and xfree. gdb/ChangeLog 2019-06-25 Tom Tromey * tui/tui-data.h (struct tui_win_info): Add constructor. * tui/tui-data.c (tui_alloc_win_info): Use new. (tui_free_window): Use delete. commit 8e5cb9a54e156ba24a439aefa7b35e53b4cb0374 Author: Jan Beulich Date: Tue Jun 25 12:02:23 2019 +0200 ld/plugins: avoid shadowing a C library symbol With my (oldish) gcc/glibc combination I'm seeing .../ld/plugin.c: In function ‘get_lto_kind’: .../ld/plugin.c:664: error: declaration of ‘index’ shadows a global declaration /usr/include/string.h:487: error: shadowed declaration is here .../ld/plugin.c: In function ‘get_lto_resolution’: .../ld/plugin.c:685: error: declaration of ‘index’ shadows a global declaration /usr/include/string.h:487: error: shadowed declaration is here .../ld/plugin.c: In function ‘get_lto_visibility’: .../ld/plugin.c:711: error: declaration of ‘index’ shadows a global declaration /usr/include/string.h:487: error: shadowed declaration is here commit ab9f654ca3f1222f63533aabfffc223ae1fc69dc Author: Jan Beulich Date: Tue Jun 25 12:01:50 2019 +0200 bfd/elf-properties: avoid shadowing a C library symbol With my (oldish) gcc/glibc combination I'm seeing .../bfd/elf-properties.c: In function ‘elf_find_and_remove_property’: .../bfd/elf-properties.c:244: error: declaration of ‘remove’ shadows a global declaration /usr/include/stdio.h:157: error: shadowed declaration is here commit 3e50a591d9f0c0b22bbf93d09eef7d2286f3716c Author: Jan Beulich Date: Tue Jun 25 11:09:22 2019 +0200 readelf: avoid shadowing a libiberty symbol With my (oldish) gcc I'm seeing .../binutils/readelf.c: In function ‘dump_ctf_indent_lines’: .../binutils/readelf.c:13851: error: declaration of ‘spaces’ shadows a global declaration .../binutils/../include/libiberty.h:253: error: shadowed declaration is here commit 63160fc99678fd85311ad5c89494164e6f8439d7 Author: Jan Beulich Date: Tue Jun 25 11:08:53 2019 +0200 objdump: avoid shadowing a libiberty symbol With my (oldish) gcc I'm seeing .../binutils/objdump.c: In function ‘dump_ctf_indent_lines’: .../binutils/objdump.c:3210: error: declaration of ‘spaces’ shadows a global declaration .../binutils/../include/libiberty.h:253: error: shadowed declaration is here commit 2c70385689542a4c4cbe160601e54f9f18a4c4c5 Author: Jan Beulich Date: Tue Jun 25 09:41:33 2019 +0200 x86: correct / adjust debug printing For quite some time we've been using combinations of bits for specifying various registers in operands and templates. I think it was Alan who had indicated that likely the debug printing would need adjustment as a result. Here we go. Accumulator handling for GPRs gets changed to match that for FPU regs. For this to work, OPERAND_TYPE_ACC{32,64} get repurposed, with their original uses replaced by direct checks of the two bits of interest, which is cheaper than operand_type_equal() invocations. For SIMD registers nothing similar appears to be needed, as respective operands get stripped from the (copy of the) template before pt() is reached. The type change on pi() is to silence a compiler diagnostic. Arguably its other parameter could also be const-qualified. commit 4970191fa557c4769697fb41db06f2dcb5f7de2e Author: Jan Beulich Date: Tue Jun 25 09:40:44 2019 +0200 x86: document certain command line options as "dangerous" Errata BT36, BT41, and BT230 mean that gas may, when using one ofthese options, produce code that causes #UD on (at least) SandyBridge systems. commit 54fbadc0c35f3dad663e2e175ea8d60546ffd710 Author: Jan Beulich Date: Tue Jun 25 09:28:33 2019 +0200 x86: drop dqa_mode I assume this mode was needed when EVEX.W handling wasn't really correct yet for other than 64-bit mode. It's clearly not needed anymore. Its elimination also allows dropping the EVEX.W split of VCVT{,U}SI2SS. (For the record, the dropped mode would have been wrong if used in any table entry not already guaranteeing EVEX.W=1.) commit a38d71189b5895bae7bb476aa34d8a7ba75376d6 Author: Jan Beulich Date: Tue Jun 25 09:27:49 2019 +0200 x86: don't open code is_any_vex_encoding() commit a280ab8e81498c6049dca79f64bd0cc02ead01ab Author: Jan Beulich Date: Tue Jun 25 09:27:05 2019 +0200 x86: simplify OP_I64() The only meaningful difference from OP_I() is the handling of the VEX.W=1 case in 64-bit mode for bytemode being v_mode. Funnel everything else into OP_I(), and drop no longer needed local variables. commit e1a1babdad9d14b935cbddc7d63fb76a580a16c5 Author: Jan Beulich Date: Tue Jun 25 09:25:26 2019 +0200 x86: fix (dis)assembly of certain SSE2 insns in 16-bit mode MOVNTI was wrongly assembled with a 66h prefix. Add IgnoreSize to address this. It and the scalar to/from integer conversion insns also were also wrongly using Ev / Gv, leading to 16-bit register names being printed when 32-bit ones were meant. Clone the 32-bit SSE2 test to cover both assembler and disassembler. commit b8364fa775112f036a80e799b70311f69baac131 Author: Jan Beulich Date: Tue Jun 25 09:23:48 2019 +0200 x86-64: also optimize ANDQ with immediate fitting in 7 bits The same reasoning applies here as did/does for immediates fitting in 31 bits. commit 2a410bd1c373d377c221476ccda2156b595e6d6b Author: Jan Beulich Date: Tue Jun 25 09:22:38 2019 +0200 x86: add CVT{,T}PS2PI cases to xmmwords test I've (not so) recently noticed this further pair which should be tested here. commit de62696504f96816faf2165132d907924e904649 Author: Alan Modra Date: Tue Jun 25 16:56:16 2019 +0930 Fix logical expression in last commit * config/tc-ppc.c (ppc_handle_align): Add parentheses. commit 22f72c4868a1fd55d8d9b1cbabe6e01ed5a6f072 Author: Alan Modra Date: Tue Jun 25 10:12:58 2019 +0930 PowerPC nops This patch corrects ppc rs_align_code handling to choose the alignment nops based on the machine in force at the alignment directive rather than the machine at the end of file. * config/tc-ppc.h (ppc_nop_select): Declare. (NOP_OPCODE): Define. * config/tc-ppc.c (ppc_elf_end, ppc_xcoff_end): Zero ppc_cpu. (ppc_nop_encoding_for_rs_align_code): New enum. (ppc_nop_select): New function. (ppc_handle_align): Don't use ppc_cpu here. Get nop type from frag. * testsuite/gas/ppc/groupnop.d, * testsuite/gas/ppc/groupnop.s: New test. * testsuite/gas/ppc/ppc.exp: Run it. commit 2e7c439dec066ac8a597d0b85193b8d3ec8e09eb Author: GDB Administrator Date: Tue Jun 25 00:00:35 2019 +0000 Automatic date update in version.in commit 04b865dc2ede2b8ca8c60f0487a179eb97895fee Author: Jim Wilson Date: Mon Jun 24 13:50:10 2019 -0700 RISC-V: Enable lui relaxation for CODE and MERGE sections. 2019-06-24 Ilia Diachkov bfd/ * elfnn-riscv.c (_bfd_riscv_relax_lui): Delete early exit when SEC_MERGE or SEC_CODE flags are set. (_bfd_riscv_relax_section): New local symtype. Set sym_sec and symtype consistently. Don't include sec_addr (sym_sec) in symval. Add check for SEC_INFO_TYPE_MERGE and call _bfd_merged_section_offset. Add sec_addr (sym_sec) after handling merge sections. commit f93ab3a0b8039a1667a666f013cca50b03d67f9b Author: H.J. Lu Date: Mon Jun 24 11:08:40 2019 -0700 elf: Remove the property after reporting its removal commit d2ef37ebd9f771d06edf1fdea37970f60b242b2d Author: H.J. Lu Date: Fri Dec 7 08:30:30 2018 -0800 elf: Report property change when merging properties failed to remove the property after reporting it has been removed. This patch corrects it. bfd/ PR ld/24721 * elf-properties.c (elf_merge_gnu_property_list): Remove the property after reporting property removal. ld/ PR ld/24721 * testsuite/ld-x86-64/x86-64.exp: Run PR ld/24721 tests. * testsuite/ld-x86-64/pr24721-x32.d: New file. * testsuite/ld-x86-64/pr24721.d: Likewise. * testsuite/ld-x86-64/pr24721.map: Likewise. * testsuite/ld-x86-64/pr24721a.s: Likewise. * testsuite/ld-x86-64/pr24721b.s: Likewise. commit 164e3873cf41d01a9a67396575dceef7489cee64 Author: Tom de Vries Date: Mon Jun 24 18:26:10 2019 +0200 [gdb/testsuite] Fix label reference in implptr-64bit.exp When running gdb.dwarf2/implptr-64bit.exp with board cc-with-dwz-m, we run into: ... dwz: dwz.c:2363: checksum_die: \ Assertion `\ ((!op_multifile && !rd_multifile && !fi_multifile) || cu != die_cu (ref)) \ && (!op_multifile || cu->cu_chunk == die_cu (ref)->cu_chunk)' failed. cc-with-tweaks.sh: line 218: 13030 Aborted \ $DWZ -m ${output_file}.dwz "$output_file" ${output_file}.alt > /dev/null ... In other words, PR dwz/24170. The trigger for the dwz PR is when intra-CU references are encoded using section-relative encoding DW_FORM_ref_addr, but could have been encoded using CU-relative encoding DW_FORM_ref4. Fix the intra-CU '%' label reference in implptr-64bit.exp. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-06-24 Tom de Vries * gdb.dwarf2/implptr-64bit.exp: Fix intra-CU '%' label reference. commit 824eacee59ea8c5625b9fad5b6eb0861b4d0f691 Author: Tom de Vries Date: Mon Jun 24 13:29:23 2019 +0200 [gdb/testsuite] Fix DW_AT_decl_file in gdb.trace tests When running gdb.trace/{entry-values.exp,unavailable-dwarf-piece.exp} with board cc-with-dwz, we run into two failures related to the DW_AT_decl_file attribute: - The encoding DW_FOR_sdata is used for DW_AT_decl_file, while the attribute is required to have a an "unsigned integer constant" value. - The DW_AT_decl_file attributes refer to a file with index one, while there's no such file. Fix this by using DW_FOR_udata and the value 0, meaning "no file specified". Tested on x86_64-linux with board native-gdbserver. gdb/testsuite/ChangeLog: 2019-06-24 Tom de Vries * gdb.trace/entry-values.exp: Use DW_FORM_udata instead of DW_FOR_sdata for DW_AT_decl_file. Use 0 for DW_AT_decl_file. * gdb.trace/unavailable-dwarf-piece.exp: Same. commit 385b97d3ac9c5c57a610d2e5b358ed888008ae31 Author: Tom de Vries Date: Mon Jun 24 12:20:39 2019 +0200 [gdb/testsuite] Fix inter-cu refs in inlined_subroutine-inheritance.exp When running gdb.dwarf2/inlined_subroutine-inheritance.exp with board cc-with-dwz, we run into: ... dwz: inlined_subroutine-inheritance: Couldn't find DIE referenced by \ DW_AT_abstract_origin ... The problem is that the DW_AT_abstract_origin attributes refer to DIEs in other CUs, while the references are encoded using the cu-relative encoding DW_FORM_ref4. Fix this by forcing the references to use DW_FORM_ref_addr. Tested on x86_64-linux. Tested with commit c24bdb023c "Introduce dwarf2_cu::get_builder" reverted, and verified that the test-case fails in the same way before and after this patch. gdb/testsuite/ChangeLog: 2019-06-24 Tom de Vries * gdb.dwarf2/inlined_subroutine-inheritance.exp: commit a33f989b4ed69c9f8f905360444e3d57a83a0cb6 Author: GDB Administrator Date: Mon Jun 24 00:00:31 2019 +0000 Automatic date update in version.in commit bb22a41815facfaa3de621aad5d055eb8e477082 Author: Alan Modra Date: Sun Jun 23 12:28:39 2019 +0930 PR24704, Internal error building skiboot for powerpc64-linux-gnu While the skiboot linker script bears some culpability in this PR, it's also true that the GOT indirect to GOT relative optimisation for 16-bit offsets isn't safe. At least, it isn't safe to remove the GOT entry based on distance between the GOT pointer and symbol calculated from the preliminary layout. So this patch removes that optimisation, and reduces the range allowed for 32-bit and 34-bit offsets. PR 24704 bfd/ * elf64-ppc.c (R_PPC64_GOT16_DS): Don't set has_gotrel. (ppc64_elf_edit_toc): Don't remove R_PPC64_GOT16_DS got entries. Reduce range of offsets allowed for other GOT relocs. ld/ * testsuite/ld-powerpc/elfv2exe.d: Update. * testsuite/ld-powerpc/elfv2so.d: Update. commit 14b2a8e4244a29208ad430167860a0f01b20f215 Author: Alan Modra Date: Sun Jun 23 12:10:02 2019 +0930 PR24689 again, string table corruption Depending on optimisation level and gcc version, git commit 890f750a3b introduces a false positive warning that i_shdrp may be used uninitialized. PR 24689 * elfcode.h (elf_object_p): Warning fix. commit a8d21e9ef0ae63c650e2ffa14edf5b1cd22be5cb Author: GDB Administrator Date: Sun Jun 23 00:00:55 2019 +0000 Automatic date update in version.in commit f95675e12d3ab100ce11257a09663c68df7784ee Author: Tom Tromey Date: Sat Jun 22 11:50:19 2019 -0600 Remove tui_first_data_element_no_in_line tui_first_data_element_no_in_line is never used. This patch removes it. Tested by rebuilding, and by grep. gdb/ChangeLog 2019-06-22 Tom Tromey * tui/tui-windata.h (tui_first_data_element_no_in_line): Don't declare. * tui/tui-windata.c (tui_first_data_element_no_in_line): Remove. commit 5bff081c10ab4debfd3416739fda93b6c275496b Author: Tom Tromey Date: Sun Jun 16 10:04:49 2019 -0600 Remove two unused functions from the TUI This removes two unused functions from the TUI. According to "git grep -G", they have never been used. gdb/ChangeLog 2019-06-22 Tom Tromey * tui/tui-data.h (tui_del_window, tui_del_data_windows): Don't declare. * tui/tui-data.c (tui_del_window, tui_del_data_windows): Remove. commit 47e3f47487396414ac936e2fd37b870fe08a55d0 Author: Tom de Vries Date: Sat Jun 22 10:59:37 2019 +0200 [gdb] Fix s390x -m31 build When building gdb on s390x with -m31, we run into this Wformat warning (which Werror turns into an error): ... gdb/dwarf2read.c: In function \ 'void create_addrmap_from_aranges(dwarf2_per_objfile*, \ dwarf2_section_info*)': gdb/dwarf2read.c:3277:22: error: format '%zu' expects argument of type \ 'size_t', but argument 3 has type 'int' [-Werror=format=] warning (_("Section .debug_aranges in %s entry at offset %zu " ... The Wformat warning is triggered in this statement: ... warning (_("Section .debug_aranges in %s entry at offset %zu " "length %s exceeds section length %s, " "ignoring .debug_aranges."), objfile_name (objfile), entry_addr - section->buffer, plongest (bytes_read + entry_length), pulongest (section->size)); ... where 'entry_addr - section->buffer' is of type ptrdiff_t and '%zu' prints an unsigned with the same size as size_t/ssize_t. On s390x with -m31, we have: - size_t : unsigned long int (32-bit) - ptrdiff_t: int (32-bit) Wformat warns against this because even though long int and int have the same size, the types are not compatible. [ The Wformat warning is to similar to what we would get for x86_64 -m32 (where long and int are also the same size) and: ... int i; printf ("%ld", i); ... ] Fix this by using '%s' and plongest instead of '%zu' to print ptrdiff_t. Build and reg-tested on x86_64. gdb/ChangeLog: 2019-06-22 Tom de Vries * dwarf2read.c (create_addrmap_from_aranges) (read_debug_names_from_section): Print ptrdiff_t using '%s' and plongest instead of '%zu'. commit 5ec331ef744a495ad35469928564a43a09391562 Author: GDB Administrator Date: Sat Jun 22 00:00:20 2019 +0000 Automatic date update in version.in commit c596f180a130c85faf8942d161be9ecf71c6791c Author: Tom de Vries Date: Fri Jun 21 23:56:18 2019 +0200 [gdb/testsuite] Compile index-cache.c with -Wl,--build-id When testing gdb.base/index-cache.exp using a gcc build without --enable-linker-build-id we get: ... FAIL: gdb.base/index-cache.exp: \ test_cache_enabled_miss: at least one file was created FAIL: gdb.base/index-cache.exp: \ test_cache_enabled_miss: couldn't get executable build id FAIL: gdb.base/index-cache.exp: \ test_cache_enabled_hit: check index-cache stats ... With "set debug index-cache on" we find: ... (gdb) file index-cache Reading symbols from index-cache... index cache: objfile index-cache has no build id ... The problem is that a build-id is required for the index-cache functionality. Fix this by compiling index-cache.c with -Wl,--build-id. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-06-21 Tom de Vries * gdb.base/index-cache.exp: Add additional_flags=-Wl,--build-id. commit ad692897c12247d1f8fe4e6a2f6e6d9f22703170 Author: H.J. Lu Date: Fri Jun 21 13:18:41 2019 -0700 i386: Break i386-dis-evex.h into small files Break i386-dis-evex.h into small files such that each file is included just once. * i386-dis-evex.h: Break into ... * i386-dis-evex-len.h: New file. * i386-dis-evex-mod.h: Likewise. * i386-dis-evex-prefix.h: Likewise. * i386-dis-evex-reg.h: Likewise. * i386-dis-evex-w.h: Likewise. * i386-dis.c: Include i386-dis-evex-reg.h, i386-dis-evex-prefix.h, i386-dis-evex.h, i386-dis-evex-len.h, i386-dis-evex-w.h and i386-dis-evex-mod.h. commit fd5866f6aad7336f7a2b59578b9deef81383ea3b Author: Simon Marchi Date: Fri Jun 21 14:10:15 2019 -0400 dwarf2read: Get rid of VEC (dwarf2_section_info_def) This patch removes uses of VEC (dwarf2_section_info_def) in favor of std::vector. The conversion is relatively straightforward, no function changes are intended. gdb/ChangeLog: * dwarf2read.h (dwarf2_section_info_def): Remove. (DEF_VEC_O (dwarf2_section_info_def)): Remove. * dwarf2read.c (struct dwo_sections) : Change type to std::vector. (struct dwo_file) <~dwo_file>: Remove. (dwarf2_per_objfile::~dwarf2_per_objfile): Don't manually free types field. (dwarf2_per_objfile::locate_sections): Adjust to std::vector. (dwarf2_read_debug_names): Likewise. (create_debug_types_hash_table): Change parameter type to array_view, adjust code accordingly. (dwarf2_locate_dwo_sections): Adjust to std::vector. (partial_die_info::fixup): Likewise. (determine_prefix): Likewise. * dwarf-index-write.c (write_psymtabs_to_index): Adjust. commit fb1eb2f94a62813ab3daa34da59c035717ffb9da Author: Simon Marchi Date: Fri Jun 21 14:10:57 2019 -0400 dwarf2read: Make dwo_file::dbfd a gdb_bfd_ref_ptr This removes the manual call to gdb_bfd_ref in favor of gdb_bfd_ref_ptr. gdb/ChangeLog: * dwarf2read.c (struct dwo_file) : Change type to gdb_bfd_ref_ptr. <~dwo_file>: Remove call to gdb_bfd_unref. (open_and_init_dwo_file): Move gdb_bfd_ref_ptr into dbfd field. Call gdb_bfd_ref_ptr::get. commit 51ac9db596ea9f0affa9f7db25bb179cf70beac4 Author: Simon Marchi Date: Fri Jun 21 14:10:14 2019 -0400 dwarf2read: C++ify dwo_file This patch changes dwo_file to be allocated/deallocated with new/delete, so that we can start using C++ features in it, and in struct dwo_sections. The free_dwo_file function becomes the destructor of struct dwo_file (and will disappear in upcoming patches, which will use gdb_bfd_ref_ptr for dbfd and an std::vector for sections.types). gdb/ChangeLog: * dwarf2read.h (struct dwarf2_per_objfile) : Change type to htab_up. * dwarf2read.c (struct dwo_file): Initialize fields. <~dwo_file>: New. (free_dwo_file): Remove, move content to ~dwo_file. (struct dwo_file_deleter): Remove. (dwo_file_up>: Remove custom deleter. (free_dwo_files): Remove. (dwarf2_per_objfile::~dwarf2_per_objfile): Don't explicitly free dwo_files. (process_skeletonless_type_units): Call unique_ptr::get. (allocate_dwo_file_hash_table): Add deleter to created hash table. Change return type to htab_up. (lookup_dwo_file_slot): Don't memset dwo_file, call unique_ptr::get. (create_dwo_unit_in_dwp_v1): Allocate dwo_file with new. (create_dwo_unit_in_dwp_v2): Likewise. (open_and_init_dwo_file): Likewise. (free_dwo_file_from_slot): Remove. commit dc4ccb6f7f07e41616fd42625226229f0795d198 Author: Simon Marchi Date: Fri Jun 21 14:10:13 2019 -0400 dwarf2read: Use bool for dwarf2_section_info fields Use bool instead of char where applicable in dwarf2_section_info. No functional changes intended. gdb/ChangeLog: * dwarf2read.h (struct dwarf2_section_info) : Change type to bool. * dwarf2read.c (dwarf2_read_section, create_dwp_v2_section): Use true instead of 1. commit b13a7d03c29e28bc0b38ce166ad1907403709d36 Author: Tom de Vries Date: Fri Jun 21 17:03:27 2019 +0200 [gdb/testsuite] Mark ptype_union.exp as unsupported for cc-with-gdb-index When testing gdb with board cc-with-gdb-index, we run into: ... FAIL: gdb.ada/ptype_union.exp: ptype global FAIL: gdb.ada/ptype_union.exp: print global ... The index is not supported for Ada (PR24713), and cc-with-gdb-index does not add an index for Ada test-cases. However, this test-case compiles C sources, for which cc-with-gdb-index does add an index. In gdb we load the executable containing the index and set the language to Ada, resulting in gdb trying to handle something that is not supported. Fix the fail by marking this unsupported. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-06-21 Tom de Vries PR testsuite/24518 PR ada/24713 * gdb.ada/ptype_union.exp: Mark as unsupported if executable contains index. commit be74b5b71481afe03aad074ad1951dcae152b97a Author: Andreas Schwab Date: Fri Jun 21 14:42:22 2019 +0200 Add gnulib to gdb release tarball * src-release.sh (GDB_SUPPORT_DIRS): Add gnulib. commit 70175d8d62178279d0fecce661b26a4f5b209fea Author: Gary Benson Date: Fri Jun 21 13:23:59 2019 +0100 Fix gnulib/update-gnulib.sh This commit fixes two paths in update-gnulib.sh that weren't updated when gnulib was moved to toplevel. gnulib/ChangeLog: * update-gnulib.sh: Adjust paths. commit cf02c44dfd2876867ebd6baa3ce19cf41ff978e1 Author: Nick Alcock Date: Wed Jun 19 15:56:52 2019 +0100 libctf: fix ctf_open endianness problems with raw CTF files ctf_open (or, rather, ctf_fdopen, which underlies it) has several endianness problems, even though it was written after the endian-swapping code was implemented, so should have been endian-aware. Even though the comment right above the relevant check says that it wil check for CTF magic in any endianness, it only checks in the native endianness, so opening raw LE CTF files on BE, or vice-versa, will fail. It also checks the CTF version by hand, without ever endianness-swapping the header, so that too will fail, and is entirely redundant because ctf_simple_open does the job properly in any case. We have a similar problem in the next if block, which checks for raw CTF archives: we are checking in the native endianness while we should be doing a le64toh() on it to check in little-endian form only: so opening CTF archives created on the local machine will fail if the local machine is big-endian. Adding insult to injury, if ctf_simple_open then fails, we go on and try to turn it into a single-element CTF archive regardless, throwing the error away. Since this involves dereferencing null pointers it is not likely to work very well. libctf/ * ctf-open-bfd.c: Add swap.h and ctf-endian.h. (ctf_fdopen): Check for endian-swapped raw CTF magic, and little-endian CTF archive magic. Do not check the CTF version: ctf_simple_open does that in endian-safe ways. Do not dereference null pointers on open failure. commit 7cee18263c234073bfe88cbc962b1fc68509df82 Author: Nick Alcock Date: Wed Jun 19 12:34:56 2019 +0100 libctf: endianness fixes Testing of the first code to generate CTF_K_SLICEs on big-endian revealed a bunch of new problems in this area. Most importantly, the trick we did earlier to avoid wasting two bytes on padding in the ctf_slice_t is best avoided: because it leads to the whole file after that point no longer being naturally aligned, all multibyte accesses from then on must use memmove() to avoid unaligned access on platforms where that is fatal. In future, this is planned, but for now we are still doing direct access in many places, so we must revert to making ctf_slice_t properly aligned for storage in an array. Rather than wasting bytes on padding, we boost the size of cts_offset and cts_bits. This is still a waste of space (we cannot have offsets or bits in bitfields > 256) but it cannot be avoided for now, and slices are not so common that this will be a serious problem. A possibly-worse endianness problem fixed at the same time involves a codepath used only for foreign-endian, uncompressed CTF files, where we were not copying the actual CTF data into the buffer, leading to libctf reading only zeroes (or, possibly, uninitialized garbage). Finally, when we read in a CTF file, we copy the header and work from the copy. We were flipping the endianness of the header copy, and of the body of the file buffer, but not of the header in the file buffer itself: so if we write the file back out again we end up with an unreadable frankenfile with header and body of different endiannesses. Fix by flipping both copies of the header. include/ * ctf.h (ctf_slice_t): Make cts_offset and cts_bits unsigned short, so following structures are properly aligned. libctf/ * ctf-open.c (get_vbytes_common): Return the new slice size. (ctf_bufopen): Flip the endianness of the CTF-section header copy. Remember to copy in the CTF data when opening an uncompressed foreign-endian CTF file. Prune useless variable manipulation. commit 0b4fa56e07639ed28cbbcd890868e01a82a5e45c Author: Nick Alcock Date: Wed Jun 19 12:27:18 2019 +0100 libctf: unidentified type kinds on open are a sign of file corruption If we see a CTF type with a kind we do not recognize in its ctt_info during opening, we cannot skip it and continue opening the file: if the type kind is unknown, we do not know how long its vlen is, and we cannot have skipped past it: so if we continue reading we will almost certainly read in part of the vlen as if it were a new ctf_type_t. Avoid this trouble by considering unknown type kinds to be a reason to return ECTF_CORRUPT, just like everything else that reads in type kinds does. libctf/ * ctf-open.c (ctf_types): Fail when unidentified type kinds are seen. commit 364620bf636a0a961892c9274616f8d5ad85eecc Author: Nick Alcock Date: Wed Jun 19 12:23:38 2019 +0100 libctf: dump header offsets into the debugging output This is an essential first piece of info needed to debug both libctf writing and reading problems, and we weren't recording it anywhere! (This is a short-term fix: fairly soon, we will record all of this in a form that outlives ctf_bufopen, and then ctf_dump() will be able to dump it like it can everything else.) libctf/ * ctf-open.c (ctf_bufopen): Dump header offsets into the debugging output. commit 65365aa856e5a258329dc350b02bbb51f84b4c16 Author: Nick Alcock Date: Wed Jun 19 12:20:47 2019 +0100 libctf: drop mmap()-based CTF data allocator This allocator has the ostensible benefit that it lets us mprotect() the memory used for CTF storage: but in exchange for this it adds considerable complexity, since we have to track allocation sizes ourselves for use at freeing time, note whether the data we are storing was ctf_data_alloc()ed or not so we know if we can safely mprotect() it... and while the mprotect()ing has found few bugs, it *has* been the cause of more than one due to errors in all this tracking leading to us mprotect()ing bits of the heap and stuff like that. We are about to start composing CTF buffers from pieces so that we can do usage-based optimizations on the strtab. This means we need realloc(), which needs nonportable mremap() and *more* tracking of the *original* allocation size, and the complexity and bureaucracy of all of this is just too high for its negligible benefits. Drop the whole thing and just use malloc() like everyone else. It knows better than we do when it is safe to use mmap() under the covers, anyway. While we're at it, don't leak the entire buffer if ctf_compress_write() fails to compress it. libctf/ * ctf-subr.c (_PAGESIZE): Remove. (ctf_data_alloc): Likewise. (ctf_data_free): Likewise. (ctf_data_protect): Likewise. * ctf-impl.h: Remove declarations. * ctf-create.c (ctf_update): No longer call ctf_data_protect: use ctf_free, not ctf_data_free. (ctf_compress_write): Use ctf_data_alloc, not ctf_alloc. Free the buffer again on compression error. * ctf-open.c (ctf_set_base): No longer track the size: call ctf_free, not ctf_data_free. (upgrade_types): Likewise. Call ctf_alloc, not ctf_data_alloc. (ctf_bufopen): Likewise. No longer call ctf_data_protect. commit 24865428034f44d9fffe6b2d9a318e1bd507c63a Author: Nick Alcock Date: Wed Jun 19 12:14:16 2019 +0100 libctf: handle errors on dynhash insertion better We were missing several cases where dynhash insertion might fail, likely due to OOM but possibly for other reasons. Pass the errors on. libctf/ * ctf-create.c (ctf_dtd_insert): Pass on error returns from ctf_dynhash_insert. (ctf_dvd_insert): Likewise. (ctf_add_generic): Likewise. (ctf_add_variable): Likewise. * ctf-impl.h: Adjust declarations. commit 890f750a3b053532a4b839a2dd6243076de12031 Author: Alan Modra Date: Fri Jun 21 11:51:38 2019 +0930 PR24689, string table corruption The testcase in the PR had a e_shstrndx section of type SHT_GROUP. hdr->contents were initialized by setup_group rather than being read from the file, thus last byte was not zero and string dereference ran off the end of the buffer. PR 24689 * elfcode.h (elf_object_p): Check type of e_shstrndx section. commit 2a81e61405262fd0299a5079b29ce417a8edba0c Author: GDB Administrator Date: Fri Jun 21 00:00:20 2019 +0000 Automatic date update in version.in commit 7d10623d3b153d6c15406b203fb1cf111c53f1dd Author: Tom de Vries Date: Thu Jun 20 11:31:36 2019 +0200 [gdbserver] Fix s390x -m31 gdbserver build When building gdb on s390x with -m31, we run into this error: ... gdb/gdbserver/linux-s390-ipa.c: \ In function 'const target_desc* get_ipa_tdesc(int)': gdb/gdbserver/linux-s390-ipa.c:371:18: error: 's390_te_ft_collect_regmap' \ was not declared in this scope SET_REGMAP(s390_te_ft_collect_regmap, 0); The offending line is part of this code snippet: ... case S390_TDESC_GS: SET_REGMAP(s390_te_ft_collect_regmap, 0); return tdesc_s390_gs_linux64; ... introduced in commit ce29f8439f "S390: Make IPA recognize tdescs with guarded storage". The snippet is part of an #ifdef __s390x__ construct, in the false branch, and in the true branch we find a snippet introduced by the same commit: ... case S390_TDESC_GS: SET_REGMAP(s390x_te_ft_collect_regmap, 0); return tdesc_s390x_gs_linux64; ... which is paired with a comment update for s390x_te_ft_collect_regmap: ... -/* Used for s390x-te-linux64, s390x-tevx-linux64. */ +/* Used for s390x-te-linux64, s390x-tevx-linux64, and + s390x-gs-linux64. */ static const int s390x_te_ft_collect_regmap[] = { ... A similar comment update is added in the same commit for s390_te_linux64_ft_collect_regmap: ... -/* Used for s390-te-linux64, s390-tevx-linux64. */ +/* Used for s390-te-linux64, s390-tevx-linux64, and s390-gs-linux64. */ static const int s390_te_linux64_ft_collect_regmap[] = { ... but not paired with any update. Fix the build breaker by making the offending SET_REGMAP use the regmap indicated by the comment. ... - SET_REGMAP(s390_te_ft_collect_regmap, 0); + SET_REGMAP(s390_te_linux64_ft_collect_regmap, 0); ... Build on s390x-linux with -m31. gdb/gdbserver/ChangeLog: 2019-06-20 Tom de Vries * linux-s390-ipa.c (get_ipa_tdesc)[!__s390x__]: Use s390_te_linux64_ft_collect_regmap for S390_TDESC_GS. commit e6a1c5cbcb9cee5a08d814669419936ee151b19d Author: Tom Tromey Date: Wed Jun 19 22:24:30 2019 -0600 Don't declare tui_init_content_element I noticed that tui_init_content_element is declared but never defined. This removes the declaration. Tested by rebuilding. (I should have merged this with the previous patch but I had forgotten that I found two of these.) gdb/ChangeLog 2019-06-19 Tom Tromey * tui/tui-data.h (tui_init_content_element): Don't declare. commit 6f6ffbeb5a6bce5a1274478256937867f337a037 Author: Tom Tromey Date: Sun Jun 16 16:06:14 2019 -0600 Don't declare tui_init_win_info I noticed that tui_init_win_info is declared but never defined. This removes the declaration. Tested by rebuilding. gdb/ChangeLog 2019-06-19 Tom Tromey * tui/tui-data.h (tui_init_win_info): Don't declare. commit 698dc1d7a269917df6237b80ccbb00733bea52cf Author: GDB Administrator Date: Thu Jun 20 00:00:18 2019 +0000 Automatic date update in version.in ----------------------------------------------------------------------- Summary of changes: ChangeLog | 92 + bfd/ChangeLog | 520 + bfd/archive.c | 21 +- bfd/archive64.c | 9 +- bfd/bfd-in2.h | 10 + bfd/bfd.c | 3 + bfd/coffcode.h | 8 + bfd/coffgen.c | 4 +- bfd/compress.c | 20 + bfd/config.bfd | 5 - bfd/configure | 15 +- bfd/configure.ac | 15 +- bfd/cpu-aarch64.c | 9 +- bfd/dwarf2.c | 347 +- bfd/elf-bfd.h | 46 +- bfd/elf-hppa.h | 6 +- bfd/elf-m10300.c | 6 +- bfd/elf-nacl.c | 5 +- bfd/elf-nacl.h | 2 +- bfd/elf-properties.c | 18 +- bfd/elf-vxworks.c | 19 +- bfd/elf-vxworks.h | 2 +- bfd/elf.c | 197 +- bfd/elf32-arc.c | 321 +- bfd/elf32-arm.c | 98 +- bfd/elf32-avr.c | 6 +- bfd/elf32-bfin.c | 6 +- bfd/elf32-cr16.c | 10 +- bfd/elf32-cris.c | 6 +- bfd/elf32-d10v.c | 1 - bfd/elf32-d30v.c | 1 - bfd/elf32-h8300.c | 7 +- bfd/elf32-i386.c | 4 - bfd/elf32-lm32.c | 5 +- bfd/elf32-m32r.c | 6 +- bfd/elf32-m68hc11.c | 1 - bfd/elf32-m68hc12.c | 1 - bfd/elf32-m68k.c | 6 +- bfd/elf32-mips.c | 8 +- bfd/elf32-msp430.c | 6 +- bfd/elf32-nds32.c | 6 +- bfd/elf32-or1k.c | 6 +- bfd/elf32-pj.c | 6 +- bfd/elf32-ppc.c | 79 +- bfd/elf32-s12z.c | 1 - bfd/elf32-sparc.c | 18 +- bfd/elf32-v850.c | 6 +- bfd/elf32-visium.c | 2 +- bfd/elf32-xc16x.c | 6 +- bfd/elf32-xtensa.c | 77 +- bfd/elf64-alpha.c | 2 +- bfd/elf64-bpf.c | 282 +- bfd/elf64-hppa.c | 4 +- bfd/elf64-ia64-vms.c | 6 +- bfd/elf64-ppc.c | 555 +- bfd/elf64-x86-64.c | 153 +- bfd/elfcode.h | 7 +- bfd/elflink.c | 136 +- bfd/elfnn-aarch64.c | 2 +- bfd/elfnn-ia64.c | 6 +- bfd/elfnn-riscv.c | 81 +- bfd/elfxx-mips.c | 95 +- bfd/elfxx-mips.h | 10 +- bfd/elfxx-target.h | 7 +- bfd/format.c | 9 +- bfd/libbfd-in.h | 2 +- bfd/libbfd.h | 9 +- bfd/mach-o-arm.c | 22 + bfd/mach-o.c | 15 +- bfd/peXXigen.c | 7 + bfd/reloc.c | 14 + bfd/targets.c | 8 +- bfd/version.h | 2 +- binutils/ChangeLog | 219 + binutils/Makefile.am | 5 +- binutils/Makefile.in | 56 +- binutils/ar.c | 14 +- binutils/bucomm.c | 12 +- binutils/doc/binutils.texi | 43 +- binutils/dwarf.c | 92 +- binutils/nm.c | 23 +- binutils/objcopy.c | 20 +- binutils/objdump.c | 32 +- binutils/readelf.c | 246 +- binutils/testsuite/binutils-all/arm/in-order-all.d | 1 + binutils/testsuite/binutils-all/arm/in-order.d | 1 + .../testsuite/binutils-all/arm/out-of-order-all.d | 1 + binutils/testsuite/binutils-all/arm/out-of-order.d | 1 + binutils/testsuite/binutils-all/i386/empty.d | 2 +- binutils/testsuite/binutils-all/i386/ibt.d | 2 +- binutils/testsuite/binutils-all/i386/pr21231a.d | 2 +- binutils/testsuite/binutils-all/i386/pr21231b.d | 2 +- binutils/testsuite/binutils-all/i386/shstk.d | 2 +- binutils/testsuite/binutils-all/note-2-32.d | 2 +- binutils/testsuite/binutils-all/note-2-64.d | 2 +- binutils/testsuite/binutils-all/objcopy.exp | 4 +- binutils/testsuite/binutils-all/objdump.exp | 71 + binutils/testsuite/binutils-all/x86-64/empty-x32.d | 2 +- binutils/testsuite/binutils-all/x86-64/empty.d | 2 +- binutils/testsuite/binutils-all/x86-64/ibt-x32.d | 2 +- binutils/testsuite/binutils-all/x86-64/ibt.d | 2 +- binutils/testsuite/binutils-all/x86-64/pr21231a.d | 2 +- binutils/testsuite/binutils-all/x86-64/pr21231b.d | 2 +- .../testsuite/binutils-all/x86-64/pr23494a-x32.d | 2 +- binutils/testsuite/binutils-all/x86-64/pr23494a.d | 2 +- .../testsuite/binutils-all/x86-64/pr23494c-x32.d | 2 +- binutils/testsuite/binutils-all/x86-64/pr23494c.d | 2 +- .../testsuite/binutils-all/x86-64/pr23494d-x32.d | 2 +- binutils/testsuite/binutils-all/x86-64/pr23494d.d | 2 +- .../testsuite/binutils-all/x86-64/pr23494e-x32.d | 2 +- binutils/testsuite/binutils-all/x86-64/pr23494e.d | 2 +- binutils/testsuite/binutils-all/x86-64/shstk-x32.d | 2 +- binutils/testsuite/binutils-all/x86-64/shstk.d | 2 +- binutils/testsuite/gentestdlls.c | 178 + configure | 24 +- configure.ac | 16 +- cpu/ChangeLog | 15 + cpu/bpf.cpu | 71 +- elfcpp/ChangeLog | 27 + elfcpp/powerpc.h | 35 + gas/ChangeLog | 757 + gas/NEWS | 6 + gas/config/atof-ieee.c | 37 +- gas/config/obj-elf.c | 122 +- gas/config/tc-aarch64.c | 33 +- gas/config/tc-arm.c | 210 +- gas/config/tc-arm.h | 4 + gas/config/tc-bpf.c | 48 +- gas/config/tc-epiphany.c | 39 +- gas/config/tc-hppa.h | 8 + gas/config/tc-i386-intel.c | 5 +- gas/config/tc-i386.c | 361 +- gas/config/tc-mips.c | 105 +- gas/config/tc-mips.h | 5 + gas/config/tc-ppc.c | 114 +- gas/config/tc-ppc.h | 3 + gas/doc/as.texi | 10 +- gas/doc/c-aarch64.texi | 10 +- gas/doc/c-arm.texi | 33 + gas/doc/c-bpf.texi | 39 +- gas/doc/c-i386.texi | 47 +- gas/doc/c-riscv.texi | 14 +- gas/po/sv.po | 9960 ++-- gas/testsuite/gas/aarch64/codealign.d | 1 + gas/testsuite/gas/aarch64/codealign_1.d | 1 + gas/testsuite/gas/aarch64/cpu-cortex-a34.d | 6 + gas/testsuite/gas/aarch64/cpu-cortex-a65.d | 6 + gas/testsuite/gas/aarch64/cpu-cortex-a65ae.d | 6 + gas/testsuite/gas/aarch64/cpu-cortex-a76ae.d | 6 + gas/testsuite/gas/aarch64/cpu-cortex-a77.d | 6 + gas/testsuite/gas/aarch64/diagnostic.l | 1 + gas/testsuite/gas/aarch64/diagnostic.s | 1 + gas/testsuite/gas/aarch64/dwarf.d | 2 +- gas/testsuite/gas/aarch64/illegal-sve2-aes.d | 6 +- gas/testsuite/gas/aarch64/illegal-sve2-sha3.d | 2 +- gas/testsuite/gas/aarch64/illegal-sve2-sm4.d | 2 +- gas/testsuite/gas/aarch64/illegal-sve2.d | 2 +- gas/testsuite/gas/aarch64/illegal-sve2.l | 18 +- gas/testsuite/gas/aarch64/illegal-sve2.s | 10 + gas/testsuite/gas/aarch64/illegal-sysreg-4.l | 1 + gas/testsuite/gas/aarch64/illegal.l | 6 +- gas/testsuite/gas/aarch64/illegal.s | 5 + gas/testsuite/gas/aarch64/mapmisc.d | 2 +- gas/testsuite/gas/aarch64/mapping.d | 1 + gas/testsuite/gas/aarch64/mapping2.d | 1 + gas/testsuite/gas/aarch64/mapping3.d | 1 + gas/testsuite/gas/aarch64/mapping4.d | 1 + gas/testsuite/gas/aarch64/mapping_5.d | 1 + gas/testsuite/gas/aarch64/mapping_6.d | 1 + gas/testsuite/gas/aarch64/nop-asm.s | 1 + gas/testsuite/gas/aarch64/sve-movprfx_1.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_10.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_11.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_12.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_13.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_14.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_15.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_16.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_17.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_18.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_19.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_2.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_20.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_21.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_22.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_23.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_24.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_25.d | 4 +- gas/testsuite/gas/aarch64/sve-movprfx_25.l | 1 - gas/testsuite/gas/aarch64/sve-movprfx_25.s | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_26.d | 42 +- gas/testsuite/gas/aarch64/sve-movprfx_26.l | 12 +- gas/testsuite/gas/aarch64/sve-movprfx_26.s | 28 +- gas/testsuite/gas/aarch64/sve-movprfx_27.d | 14 + gas/testsuite/gas/aarch64/sve-movprfx_27.s | 11 + gas/testsuite/gas/aarch64/sve-movprfx_3.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_4.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_5.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_6.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_7.d | 4 +- gas/testsuite/gas/aarch64/sve-movprfx_8.d | 2 +- gas/testsuite/gas/aarch64/sve-movprfx_9.d | 2 +- gas/testsuite/gas/aarch64/sve2.d | 4 +- gas/testsuite/gas/aarch64/sve2.s | 4 + gas/testsuite/gas/aarch64/symbol-variant_pcs-1.d | 1 + gas/testsuite/gas/aarch64/symbol-variant_pcs-2.d | 1 + gas/testsuite/gas/aarch64/symbol-variant_pcs-3.d | 1 + gas/testsuite/gas/aarch64/sysreg-4.d | 1 + gas/testsuite/gas/aarch64/sysreg-4.s | 1 + gas/testsuite/gas/all/assign.d | 1 + gas/testsuite/gas/all/none.d | 1 + gas/testsuite/gas/all/weakref1.d | 1 + gas/testsuite/gas/arc/nps400-6.d | 2 +- gas/testsuite/gas/arm/arch6zk.d | 4 +- gas/testsuite/gas/arm/arch6zk.s | 4 +- gas/testsuite/gas/arm/float16-bad.d | 3 + gas/testsuite/gas/arm/float16-bad.l | 10 + gas/testsuite/gas/arm/float16-bad.s | 13 + gas/testsuite/gas/arm/float16-be.d | 11 + .../gas/arm/float16-eabi-alternative-format.d | 10 + gas/testsuite/gas/arm/float16-eabi-ieee-format.d | 10 + gas/testsuite/gas/arm/float16-eabi-no-format.d | 8 + gas/testsuite/gas/arm/float16-eabi.s | 2 + gas/testsuite/gas/arm/float16-format-bad.d | 3 + gas/testsuite/gas/arm/float16-format-bad.l | 5 + gas/testsuite/gas/arm/float16-format-bad.s | 5 + gas/testsuite/gas/arm/float16-format-opt-bad.d | 4 + gas/testsuite/gas/arm/float16-format-opt-bad.l | 4 + gas/testsuite/gas/arm/float16-le.d | 11 + gas/testsuite/gas/arm/float16.s | 25 + gas/testsuite/gas/arm/got_prel.d | 2 +- gas/testsuite/gas/arm/local_function.d | 1 + gas/testsuite/gas/arm/mapdir.d | 2 +- gas/testsuite/gas/arm/mapmisc.d | 2 +- gas/testsuite/gas/arm/mapping2.d | 1 + gas/testsuite/gas/arm/mapping3.d | 1 + gas/testsuite/gas/arm/mapping4.d | 1 + gas/testsuite/gas/arm/mapsecs.d | 2 +- gas/testsuite/gas/arm/mapshort-eabi.d | 1 + gas/testsuite/gas/arm/mve-shift-bad.l | 10 +- gas/testsuite/gas/arm/mve-shift-bad.s | 6 + gas/testsuite/gas/arm/mve-shift.d | 6 +- gas/testsuite/gas/arm/mve-shift.s | 6 +- gas/testsuite/gas/arm/mve-vqdmladh-bad.l | 108 +- gas/testsuite/gas/arm/mve-vqdmladh-bad.s | 8 - gas/testsuite/gas/arm/mve-vqdmladh.d | 6 + gas/testsuite/gas/arm/mve-vqdmladh.s | 6 + gas/testsuite/gas/arm/mve-vqdmlah-bad.d | 3 + gas/testsuite/gas/arm/mve-vqdmlah-bad.l | 7 + gas/testsuite/gas/arm/mve-vqdmlah-bad.s | 4 + gas/testsuite/gas/arm/mve-vqdmlah.d | 1354 +- gas/testsuite/gas/arm/mve-vqdmlah.s | 6 +- gas/testsuite/gas/arm/mve-vqdmlash-bad.d | 3 + gas/testsuite/gas/arm/mve-vqdmlash-bad.l | 7 + gas/testsuite/gas/arm/mve-vqdmlash-bad.s | 4 + gas/testsuite/gas/arm/mve-vqdmlash.d | 1354 +- gas/testsuite/gas/arm/mve-vqdmlash.s | 6 +- gas/testsuite/gas/arm/mve-vqdmlsdh-bad.l | 108 +- gas/testsuite/gas/arm/mve-vqdmlsdh-bad.s | 8 - gas/testsuite/gas/arm/mve-vqdmlsdh.d | 6 + gas/testsuite/gas/arm/mve-vqdmlsdh.s | 6 + gas/testsuite/gas/arm/pr24907.d | 19 + gas/testsuite/gas/arm/pr24907.s | 16 + gas/testsuite/gas/arm/smc-bad.d | 3 + gas/testsuite/gas/arm/smc-bad.l | 8 + gas/testsuite/gas/arm/smc-bad.s | 14 + gas/testsuite/gas/arm/thumb32.d | 2 +- gas/testsuite/gas/arm/thumb32.s | 2 +- gas/testsuite/gas/arm/thumbrel.d | 1 + gas/testsuite/gas/arm/unwind.d | 1 + gas/testsuite/gas/bpf/alu-be.d | 24 +- gas/testsuite/gas/bpf/alu.d | 24 +- gas/testsuite/gas/bpf/alu32-be.d | 26 +- gas/testsuite/gas/bpf/alu32.d | 26 +- gas/testsuite/gas/bpf/bpf.exp | 2 + gas/testsuite/gas/bpf/data-be.d | 9 + gas/testsuite/gas/bpf/data.d | 8 + gas/testsuite/gas/bpf/data.s | 4 + gas/testsuite/gas/bpf/lddw-be.d | 2 +- gas/testsuite/gas/bpf/lddw.d | 2 +- gas/testsuite/gas/bpf/mem-be.d | 16 +- gas/testsuite/gas/bpf/mem.d | 16 +- gas/testsuite/gas/bpf/mem.s | 16 +- gas/testsuite/gas/cfi/cfi-label.d | 2 +- gas/testsuite/gas/elf/elf.exp | 14 +- gas/testsuite/gas/elf/section12a.d | 5 +- gas/testsuite/gas/elf/section12b.d | 8 +- gas/testsuite/gas/elf/section13.d | 2 + gas/testsuite/gas/elf/section13.l | 2 +- gas/testsuite/gas/elf/type-2.e | 20 + gas/testsuite/gas/elf/type-2.l | 3 + gas/testsuite/gas/elf/type-2.s | 49 + gas/testsuite/gas/h8300/h8300.exp | 87 +- gas/testsuite/gas/h8300/misc.s | 4 +- gas/testsuite/gas/h8300/misch.s | 4 +- gas/testsuite/gas/h8300/miscs.s | 4 +- gas/testsuite/gas/i386/avx-16bit.d | 3274 ++ gas/testsuite/gas/i386/avx-16bit.s | 7 + gas/testsuite/gas/i386/avx512f-16bit.d |13297 +++++ gas/testsuite/gas/i386/avx512f-16bit.s | 4 + gas/testsuite/gas/i386/avx512f_vpclmulqdq-intel.d | 4 + gas/testsuite/gas/i386/avx512f_vpclmulqdq.d | 4 + gas/testsuite/gas/i386/avx512f_vpclmulqdq.s | 5 + gas/testsuite/gas/i386/avx512vl_vpclmulqdq-intel.d | 8 + gas/testsuite/gas/i386/avx512vl_vpclmulqdq.d | 8 + gas/testsuite/gas/i386/avx512vl_vpclmulqdq.s | 10 + gas/testsuite/gas/i386/bmi-16bit.d | 46 + gas/testsuite/gas/i386/bmi-16bit.s | 4 + gas/testsuite/gas/i386/bmi2-16bit.d | 51 + gas/testsuite/gas/i386/bmi2-16bit.s | 4 + gas/testsuite/gas/i386/bss.d | 2 +- gas/testsuite/gas/i386/disassem.d | 6 +- gas/testsuite/gas/i386/disassem.s | 2 + gas/testsuite/gas/i386/i386.exp | 12 + gas/testsuite/gas/i386/ifunc-3.d | 1 + gas/testsuite/gas/i386/ilp32/mixed-mode-reloc64.d | 1 + gas/testsuite/gas/i386/ilp32/quad.d | 2 +- gas/testsuite/gas/i386/ilp32/reloc64.d | 2 +- gas/testsuite/gas/i386/ilp32/x86-64-opcode.d | 306 +- gas/testsuite/gas/i386/ilp32/x86-64-simd-intel.d | 244 +- gas/testsuite/gas/i386/ilp32/x86-64-simd-suffix.d | 244 +- gas/testsuite/gas/i386/ilp32/x86-64-simd.d | 244 +- gas/testsuite/gas/i386/ilp32/x86-64-size-1.d | 2 +- gas/testsuite/gas/i386/ilp32/x86-64-size-3.d | 2 +- gas/testsuite/gas/i386/ilp32/x86-64-size-5.d | 2 +- gas/testsuite/gas/i386/ilp32/x86-64-sse2avx.d | 1226 +- gas/testsuite/gas/i386/ilp32/x86-64-unwind.d | 2 +- gas/testsuite/gas/i386/inval-16.l | 2 +- gas/testsuite/gas/i386/inval-16.s | 2 +- gas/testsuite/gas/i386/lwp-16bit.d | 74 + gas/testsuite/gas/i386/lwp-16bit.s | 4 + gas/testsuite/gas/i386/mixed-mode-reloc32.d | 2 +- gas/testsuite/gas/i386/mixed-mode-reloc64.d | 1 + gas/testsuite/gas/i386/noextreg.d | 1 + gas/testsuite/gas/i386/nop-6.d | 2 +- gas/testsuite/gas/i386/optimize-1.d | 48 + gas/testsuite/gas/i386/optimize-1.s | 54 + gas/testsuite/gas/i386/optimize-1a.d | 48 + gas/testsuite/gas/i386/optimize-2.d | 70 + gas/testsuite/gas/i386/optimize-2.s | 80 + gas/testsuite/gas/i386/optimize-2b.d | 163 + gas/testsuite/gas/i386/optimize-3.d | 8 + gas/testsuite/gas/i386/optimize-3.s | 9 + gas/testsuite/gas/i386/optimize-4.d | 48 + gas/testsuite/gas/i386/optimize-5.d | 56 + gas/testsuite/gas/i386/optimize-5.s | 9 + gas/testsuite/gas/i386/oversized16.l | 41 + gas/testsuite/gas/i386/oversized16.s | 11 + gas/testsuite/gas/i386/oversized64.l | 40 + gas/testsuite/gas/i386/oversized64.s | 10 + gas/testsuite/gas/i386/property-1.d | 4 +- gas/testsuite/gas/i386/property-2.d | 4 +- gas/testsuite/gas/i386/relax.d | 2 +- gas/testsuite/gas/i386/reloc64.d | 2 +- gas/testsuite/gas/i386/size-1.d | 2 +- gas/testsuite/gas/i386/size-3.d | 2 +- gas/testsuite/gas/i386/sse2-16bit.d | 167 + gas/testsuite/gas/i386/sse2-16bit.s | 7 + gas/testsuite/gas/i386/tbm-16bit.d | 170 + gas/testsuite/gas/i386/tbm-16bit.s | 4 + gas/testsuite/gas/i386/vpclmulqdq-intel.d | 4 + gas/testsuite/gas/i386/vpclmulqdq.d | 4 + gas/testsuite/gas/i386/vpclmulqdq.s | 5 + gas/testsuite/gas/i386/x86-64-avx-swap-2.d | 380 + gas/testsuite/gas/i386/x86-64-avx-swap-2.s | 393 + .../gas/i386/x86-64-avx512f_vpclmulqdq-intel.d | 4 + gas/testsuite/gas/i386/x86-64-avx512f_vpclmulqdq.d | 4 + gas/testsuite/gas/i386/x86-64-avx512f_vpclmulqdq.s | 5 + .../gas/i386/x86-64-avx512vl_vpclmulqdq-intel.d | 8 + .../gas/i386/x86-64-avx512vl_vpclmulqdq.d | 8 + .../gas/i386/x86-64-avx512vl_vpclmulqdq.s | 10 + gas/testsuite/gas/i386/x86-64-disassem.d | 5 +- gas/testsuite/gas/i386/x86-64-disassem.s | 2 + gas/testsuite/gas/i386/x86-64-nop-6.d | 1 + gas/testsuite/gas/i386/x86-64-opcode.d | 4 + gas/testsuite/gas/i386/x86-64-opcode.s | 4 + gas/testsuite/gas/i386/x86-64-optimize-1.d | 6 + gas/testsuite/gas/i386/x86-64-optimize-1.s | 6 + gas/testsuite/gas/i386/x86-64-optimize-2.d | 48 + gas/testsuite/gas/i386/x86-64-optimize-2.s | 54 + gas/testsuite/gas/i386/x86-64-optimize-2a.d | 48 + gas/testsuite/gas/i386/x86-64-optimize-2b.d | 48 + gas/testsuite/gas/i386/x86-64-optimize-3.d | 80 + gas/testsuite/gas/i386/x86-64-optimize-3.s | 91 + gas/testsuite/gas/i386/x86-64-optimize-3b.d | 199 + gas/testsuite/gas/i386/x86-64-optimize-4.d | 8 + gas/testsuite/gas/i386/x86-64-optimize-4.s | 9 + gas/testsuite/gas/i386/x86-64-optimize-5.d | 48 + gas/testsuite/gas/i386/x86-64-optimize-6.d | 56 + gas/testsuite/gas/i386/x86-64-optimize-6.s | 9 + gas/testsuite/gas/i386/x86-64-property-1.d | 4 +- gas/testsuite/gas/i386/x86-64-property-2.d | 4 +- gas/testsuite/gas/i386/x86-64-simd-intel.d | 132 +- gas/testsuite/gas/i386/x86-64-simd-suffix.d | 132 +- gas/testsuite/gas/i386/x86-64-simd.d | 132 +- gas/testsuite/gas/i386/x86-64-size-1.d | 2 +- gas/testsuite/gas/i386/x86-64-size-3.d | 2 +- gas/testsuite/gas/i386/x86-64-size-5.d | 2 +- gas/testsuite/gas/i386/x86-64-sse2avx.d | 93 + gas/testsuite/gas/i386/x86-64-sse2avx.s | 93 + gas/testsuite/gas/i386/x86-64-unwind.d | 2 +- gas/testsuite/gas/i386/x86-64-vpclmulqdq-intel.d | 16 +- gas/testsuite/gas/i386/x86-64-vpclmulqdq.d | 16 +- gas/testsuite/gas/i386/x86-64-vpclmulqdq.s | 17 +- gas/testsuite/gas/i386/xmmword.l | 2 + gas/testsuite/gas/i386/xmmword.s | 4 + gas/testsuite/gas/macros/irp.d | 1 + gas/testsuite/gas/macros/repeat.d | 1 + gas/testsuite/gas/macros/rept.d | 1 + gas/testsuite/gas/macros/test2.d | 1 + gas/testsuite/gas/macros/test3.d | 1 + gas/testsuite/gas/macros/vararg.d | 1 + gas/testsuite/gas/mips/insn-isa-mode.d | 16 + gas/testsuite/gas/mips/insn-isa-mode.s | 14 + gas/testsuite/gas/mips/li-d.d | 51 +- gas/testsuite/gas/mips/li-d.s | 39 + gas/testsuite/gas/mips/micromips@isa-override-1.d | 12 +- gas/testsuite/gas/mips/mips.exp | 1 + gas/testsuite/gas/mips/mips32r2@isa-override-1.d | 12 +- gas/testsuite/gas/mips/mips64r2@isa-override-1.d | 12 +- gas/testsuite/gas/ppc/astest2.d | 1 + gas/testsuite/gas/ppc/astest2_64.d | 1 + gas/testsuite/gas/ppc/astest64.d | 1 + gas/testsuite/gas/ppc/groupnop.d | 19 + gas/testsuite/gas/ppc/groupnop.s | 19 + gas/testsuite/gas/ppc/power4.d | 2 +- gas/testsuite/gas/ppc/ppc.exp | 2 + gas/testsuite/gas/ppc/test1elf64.d | 1 + gas/testsuite/gas/riscv/alias-csr.d | 23 + gas/testsuite/gas/riscv/alias-csr.s | 14 + gas/testsuite/gas/riscv/insn.d | 99 +- gas/testsuite/gas/riscv/insn.s | 19 +- gas/testsuite/gas/riscv/no-aliases-csr.d | 23 + gas/testsuite/gas/riscv/priv-reg.d | 2 +- gas/testsuite/gas/xstormy16/allinsn.sh | 2 +- gas/testsuite/gas/xstormy16/gcc.sh | 2 +- gas/write.c | 22 +- gdb/ChangeLog | 3758 ++ gdb/MAINTAINERS | 1 + gdb/Makefile.in | 154 +- gdb/NEWS | 91 +- gdb/README | 3 +- gdb/aarch32-linux-nat.h | 5 - gdb/aarch32-tdep.c | 33 + gdb/aarch32-tdep.h | 25 + gdb/aarch64-fbsd-nat.c | 15 +- gdb/aarch64-linux-nat.c | 18 +- gdb/aarch64-linux-tdep.c | 2 +- gdb/aarch64-ravenscar-thread.c | 1 + gdb/aarch64-tdep.c | 73 +- gdb/aarch64-tdep.h | 2 +- gdb/acinclude.m4 | 5 +- gdb/ada-exp.y | 22 +- gdb/ada-lang.c | 119 +- gdb/ada-lang.h | 8 +- gdb/ada-tasks.c | 22 +- gdb/agent.c | 2 +- gdb/alloc.c | 4 +- gdb/alpha-bsd-tdep.h | 2 + gdb/alpha-linux-tdep.c | 1 + gdb/alpha-mdebug-tdep.c | 1 + gdb/amd64-darwin-tdep.c | 2 +- gdb/amd64-dicos-tdep.c | 2 +- gdb/amd64-fbsd-nat.c | 2 +- gdb/amd64-fbsd-tdep.c | 2 +- gdb/amd64-linux-nat.c | 2 +- gdb/amd64-linux-tdep.c | 30 +- gdb/amd64-nbsd-tdep.c | 2 +- gdb/amd64-obsd-tdep.c | 2 +- gdb/amd64-sol2-tdep.c | 2 +- gdb/amd64-tdep.c | 27 +- gdb/amd64-windows-tdep.c | 2 +- gdb/annotate.c | 11 +- gdb/arch-utils.c | 10 +- gdb/arch-utils.h | 7 +- gdb/arch/aarch32.c | 43 + gdb/arch/aarch32.h | 27 + gdb/arch/aarch64-insn.c | 2 +- gdb/arch/aarch64.c | 2 +- gdb/arch/aarch64.h | 2 +- gdb/arch/amd64.c | 4 +- gdb/arch/amd64.h | 2 +- gdb/arch/arm-get-next-pcs.c | 9 +- gdb/arch/arm-linux.c | 6 +- gdb/arch/arm.c | 88 +- gdb/arch/arm.h | 50 +- gdb/arch/i386.c | 6 +- gdb/arch/i386.h | 2 +- gdb/arch/ppc-linux-common.c | 2 +- gdb/arch/riscv.c | 2 +- gdb/arch/riscv.h | 2 +- gdb/arch/tic6x.c | 4 +- gdb/arm-fbsd-nat.c | 14 +- gdb/arm-fbsd-tdep.c | 12 +- gdb/arm-linux-nat.c | 42 +- gdb/arm-linux-tdep.c | 54 +- gdb/arm-linux-tdep.h | 12 +- gdb/arm-nbsd-tdep.c | 2 +- gdb/arm-tdep.c | 485 +- gdb/arm-tdep.h | 27 +- gdb/arm-wince-tdep.c | 2 +- gdb/auto-load.c | 6 +- gdb/auxv.c | 2 +- gdb/ax-gdb.c | 2 +- gdb/ax-general.c | 3 +- gdb/ax.h | 4 +- gdb/block.c | 19 +- gdb/block.h | 10 +- gdb/blockframe.c | 2 + gdb/break-catch-syscall.c | 4 +- gdb/break-catch-throw.c | 35 +- gdb/breakpoint.c | 512 +- gdb/breakpoint.h | 57 +- gdb/btrace.c | 5 +- gdb/btrace.h | 4 +- gdb/build-id.c | 2 +- gdb/build-id.h | 2 +- gdb/buildsym-legacy.c | 1 + gdb/buildsym.c | 5 +- gdb/buildsym.h | 2 + gdb/c-exp.y | 11 +- gdb/c-lang.c | 1 + gdb/c-lang.h | 2 +- gdb/c-typeprint.c | 2 +- gdb/charset.c | 8 +- gdb/charset.h | 2 +- gdb/cli-out.c | 25 +- gdb/cli-out.h | 9 +- gdb/cli/cli-cmds.c | 261 +- gdb/cli/cli-cmds.h | 22 +- gdb/cli/cli-decode.c | 33 +- gdb/cli/cli-decode.h | 10 +- gdb/cli/cli-dump.c | 5 +- gdb/cli/cli-logging.c | 4 +- gdb/cli/cli-option.c | 171 +- gdb/cli/cli-option.h | 25 +- gdb/cli/cli-script.c | 2 +- gdb/cli/cli-script.h | 2 + gdb/cli/cli-setshow.c | 79 +- gdb/cli/cli-setshow.h | 5 + gdb/cli/cli-style.c | 28 +- gdb/cli/cli-style.h | 1 + gdb/cli/cli-utils.c | 158 +- gdb/cli/cli-utils.h | 51 +- gdb/coff-pe-read.c | 2 +- gdb/coff-pe-read.h | 1 + gdb/coffread.c | 11 +- gdb/command.h | 23 +- gdb/common/agent.c | 282 - gdb/common/agent.h | 68 - gdb/common/byte-vector.h | 63 - gdb/common/common-debug.c | 37 - gdb/common/common-defs.h | 150 - gdb/common/common-utils.c | 358 - gdb/common/common-utils.h | 181 - gdb/common/common.host | 36 - gdb/common/create-version.sh | 38 - gdb/common/def-vector.h | 36 - gdb/common/environ.c | 183 - gdb/common/errors.c | 69 - gdb/common/filestuff.c | 503 - gdb/common/format.h | 96 - gdb/common/forward-scope-exit.h | 123 - gdb/common/gdb_optional.h | 219 - gdb/common/gdb_tilde_expand.c | 95 - gdb/common/job-control.c | 86 - gdb/common/job-control.h | 38 - gdb/common/netstuff.c | 154 - gdb/common/pathstuff.c | 290 - gdb/common/pathstuff.h | 95 - gdb/common/rsp-low.h | 101 - gdb/common/scope-exit.h | 186 - gdb/common/scoped_mmap.c | 49 - gdb/common/tdesc.c | 401 - gdb/common/valid-expr.h | 108 - gdb/compile/compile-c-support.c | 5 +- gdb/compile/compile-c.h | 2 +- gdb/compile/compile-cplus-symbols.c | 2 +- gdb/compile/compile-cplus-types.c | 4 +- gdb/compile/compile-cplus.h | 3 +- gdb/compile/compile-loc2c.c | 3 +- gdb/compile/compile-object-load.c | 1 + gdb/compile/compile.c | 28 +- gdb/completer.c | 2 +- gdb/completer.h | 2 +- gdb/config.in | 3 - gdb/configure | 125 +- gdb/configure.ac | 50 +- gdb/configure.tgt | 8 +- gdb/contrib/ari/gdb_ari.sh | 50 +- gdb/corefile.c | 3 +- gdb/corelow.c | 5 +- gdb/cp-support.c | 14 +- gdb/cp-support.h | 6 +- gdb/cp-valprint.c | 5 +- gdb/cris-linux-tdep.c | 1 + gdb/csky-tdep.c | 2 +- gdb/ctf.c | 3 +- gdb/d-lang.c | 1 + gdb/d-namespace.c | 1 + gdb/darwin-nat-info.c | 5 +- gdb/darwin-nat.c | 9 +- gdb/dbxread.c | 40 +- gdb/dcache.c | 1 + gdb/debug.c | 2 +- gdb/defs.h | 12 +- gdb/dicos-tdep.c | 1 + gdb/dictionary.c | 1 + gdb/disasm-selftests.c | 3 +- gdb/disasm.c | 61 +- gdb/disasm.h | 22 +- gdb/doc/ChangeLog | 74 + gdb/doc/gdb.texinfo | 233 +- gdb/doc/python.texi | 45 +- gdb/dtrace-probe.c | 2 +- gdb/dummy-frame.c | 1 + gdb/dummy-frame.h | 1 + gdb/dwarf-index-cache.c | 10 +- gdb/dwarf-index-cache.h | 2 +- gdb/dwarf-index-write.c | 12 +- gdb/dwarf2-frame-tailcall.c | 1 + gdb/dwarf2-frame.c | 10 +- gdb/dwarf2expr.c | 3 +- gdb/dwarf2loc.c | 53 +- gdb/dwarf2loc.h | 36 +- gdb/dwarf2read.c | 551 +- gdb/dwarf2read.h | 15 +- gdb/event-loop.c | 2 +- gdb/event-top.c | 2 +- gdb/exceptions.c | 2 +- gdb/exec.c | 2 +- gdb/expression.h | 2 + gdb/extension.h | 9 +- gdb/f-lang.c | 1 + gdb/fbsd-nat.c | 7 +- gdb/features/Makefile | 113 +- gdb/features/aarch64-core.c | 9 +- gdb/features/aarch64-core.xml | 28 +- gdb/features/aarch64-fpu.c | 2 +- gdb/features/aarch64-pauth.c | 3 +- gdb/features/aarch64-sve.c | 2 +- gdb/features/aarch64.xml | 14 - gdb/features/arm/arm-core.c | 31 + gdb/features/arm/arm-fpa.c | 23 + gdb/features/arm/arm-m-profile-with-fpa.c | 39 + gdb/features/arm/arm-m-profile-with-fpa.xml | 39 + gdb/features/arm/arm-m-profile.c | 31 + gdb/features/arm/arm-vfpv2.c | 30 + gdb/features/arm/arm-vfpv3.c | 46 + gdb/features/arm/arm-with-iwmmxt.c | 83 - gdb/features/arm/arm-with-iwmmxt.xml | 13 - gdb/features/arm/arm-with-m-fpa-layout.c | 46 - gdb/features/arm/arm-with-m-fpa-layout.xml | 46 - gdb/features/arm/arm-with-m-vfp-d16.c | 56 - gdb/features/arm/arm-with-m-vfp-d16.xml | 14 - gdb/features/arm/arm-with-m.c | 37 - gdb/features/arm/arm-with-m.xml | 12 - gdb/features/arm/arm-with-neon.c | 74 - gdb/features/arm/arm-with-neon.xml | 14 - gdb/features/arm/arm-with-vfpv2.c | 56 - gdb/features/arm/arm-with-vfpv2.xml | 13 - gdb/features/arm/arm-with-vfpv3.c | 72 - gdb/features/arm/arm-with-vfpv3.xml | 13 - gdb/features/arm/xscale-iwmmxt.c | 57 + gdb/features/i386/32bit-avx.c | 2 +- gdb/features/i386/32bit-avx512.c | 2 +- gdb/features/i386/32bit-core.c | 2 +- gdb/features/i386/32bit-linux.c | 2 +- gdb/features/i386/32bit-mpx.c | 2 +- gdb/features/i386/32bit-pkeys.c | 2 +- gdb/features/i386/32bit-segments.c | 2 +- gdb/features/i386/32bit-sse.c | 2 +- gdb/features/i386/64bit-avx.c | 2 +- gdb/features/i386/64bit-avx512.c | 2 +- gdb/features/i386/64bit-core.c | 2 +- gdb/features/i386/64bit-linux.c | 2 +- gdb/features/i386/64bit-mpx.c | 2 +- gdb/features/i386/64bit-pkeys.c | 2 +- gdb/features/i386/64bit-segments.c | 2 +- gdb/features/i386/64bit-sse.c | 2 +- gdb/features/i386/amd64-avx-avx512-linux.xml | 20 - gdb/features/i386/amd64-avx-avx512.xml | 18 - gdb/features/i386/amd64-avx-linux.xml | 19 - .../i386/amd64-avx-mpx-avx512-pku-linux.xml | 23 - gdb/features/i386/amd64-avx-mpx-avx512-pku.xml | 20 - gdb/features/i386/amd64-avx-mpx-linux.xml | 20 - gdb/features/i386/amd64-avx-mpx.xml | 18 - gdb/features/i386/amd64-avx.xml | 17 - gdb/features/i386/amd64-linux.xml | 18 - gdb/features/i386/amd64-mpx-linux.xml | 19 - gdb/features/i386/amd64-mpx.xml | 17 - gdb/features/i386/amd64.xml | 16 - gdb/features/i386/i386-avx-avx512-linux.xml | 19 - gdb/features/i386/i386-avx-avx512.xml | 17 - gdb/features/i386/i386-avx-linux.xml | 18 - .../i386/i386-avx-mpx-avx512-pku-linux.xml | 22 - gdb/features/i386/i386-avx-mpx-avx512-pku.xml | 19 - gdb/features/i386/i386-avx-mpx-linux.xml | 19 - gdb/features/i386/i386-avx-mpx.xml | 17 - gdb/features/i386/i386-avx.xml | 16 - gdb/features/i386/i386-linux.xml | 17 - gdb/features/i386/i386-mmx-linux.xml | 16 - gdb/features/i386/i386-mmx.xml | 14 - gdb/features/i386/i386-mpx-linux.xml | 18 - gdb/features/i386/i386-mpx.xml | 16 - gdb/features/i386/i386.xml | 15 - gdb/features/i386/x32-avx-avx512-linux.xml | 20 - gdb/features/i386/x32-avx-linux.xml | 19 - gdb/features/i386/x32-core.c | 2 +- gdb/features/i386/x32-linux.xml | 18 - gdb/features/riscv/32bit-cpu.c | 2 +- gdb/features/riscv/32bit-csr.c | 2 +- gdb/features/riscv/32bit-fpu.c | 2 +- gdb/features/riscv/64bit-cpu.c | 2 +- gdb/features/riscv/64bit-csr.c | 2 +- gdb/features/riscv/64bit-fpu.c | 2 +- gdb/features/tic6x-c6xp.c | 2 +- gdb/features/tic6x-core.c | 2 +- gdb/features/tic6x-gp.c | 2 +- gdb/filename-seen-cache.h | 2 +- gdb/filesystem.c | 4 +- gdb/findcmd.c | 2 +- gdb/findvar.c | 2 +- gdb/fork-child.c | 8 +- gdb/frame-base.c | 1 + gdb/frame-unwind.c | 1 + gdb/frame.c | 32 +- gdb/frame.h | 54 +- gdb/frv-linux-tdep.c | 1 + gdb/gcore.c | 6 +- gdb/gdb-stabs.h | 41 +- gdb/gdb_bfd.c | 6 +- gdb/gdb_bfd.h | 2 +- gdb/gdb_obstack.c | 10 - gdb/gdb_obstack.h | 27 +- gdb/gdb_proc_service.h | 2 +- gdb/gdb_regex.c | 2 +- gdb/gdb_select.h | 2 +- gdb/gdb_usleep.c | 2 +- gdb/gdbarch-selftests.c | 5 +- gdb/gdbarch.c | 55 + gdb/gdbarch.h | 36 + gdb/gdbarch.sh | 28 + gdb/gdbserver/ChangeLog | 123 + gdb/gdbserver/Makefile.in | 136 +- gdb/gdbserver/acinclude.m4 | 5 +- gdb/gdbserver/ax.c | 10 +- gdb/gdbserver/config.in | 3 - gdb/gdbserver/configure | 165 +- gdb/gdbserver/configure.ac | 15 +- gdb/gdbserver/configure.srv | 46 +- gdb/gdbserver/debug.c | 2 +- gdb/gdbserver/debug.h | 2 +- gdb/gdbserver/event-loop.c | 2 +- gdb/gdbserver/fork-child.c | 2 +- gdb/gdbserver/gdb_proc_service.h | 2 +- gdb/gdbserver/gdbreplay.c | 8 +- gdb/gdbserver/gdbthread.h | 2 +- gdb/gdbserver/hostio-errno.c | 2 +- gdb/gdbserver/hostio.c | 2 +- gdb/gdbserver/i387-fp.c | 2 +- gdb/gdbserver/inferiors.c | 6 +- gdb/gdbserver/inferiors.h | 2 +- gdb/gdbserver/linux-aarch32-low.c | 8 +- gdb/gdbserver/linux-aarch32-low.h | 2 - gdb/gdbserver/linux-aarch32-tdesc.c | 47 + gdb/gdbserver/linux-aarch32-tdesc.h | 29 + gdb/gdbserver/linux-aarch64-low.c | 11 +- gdb/gdbserver/linux-aarch64-tdesc-selftest.c | 45 - gdb/gdbserver/linux-aarch64-tdesc.h | 4 - gdb/gdbserver/linux-amd64-ipa.c | 2 +- gdb/gdbserver/linux-arm-low.c | 125 +- gdb/gdbserver/linux-arm-tdesc.c | 62 + gdb/gdbserver/linux-arm-tdesc.h | 29 + gdb/gdbserver/linux-i386-ipa.c | 2 +- gdb/gdbserver/linux-low.c | 20 +- gdb/gdbserver/linux-ppc-low.c | 22 +- gdb/gdbserver/linux-s390-ipa.c | 2 +- gdb/gdbserver/linux-s390-low.c | 4 +- gdb/gdbserver/linux-tic6x-low.c | 2 +- gdb/gdbserver/linux-x86-low.c | 16 +- gdb/gdbserver/linux-x86-tdesc-selftest.c | 183 - gdb/gdbserver/linux-x86-tdesc.c | 2 +- gdb/gdbserver/linux-x86-tdesc.h | 2 - gdb/gdbserver/lynx-i386-low.c | 2 +- gdb/gdbserver/lynx-low.c | 6 +- gdb/gdbserver/mem-break.c | 30 +- gdb/gdbserver/mem-break.h | 2 +- gdb/gdbserver/nto-x86-low.c | 2 +- gdb/gdbserver/proc-service.c | 2 +- gdb/gdbserver/regcache.c | 14 +- gdb/gdbserver/regcache.h | 12 +- gdb/gdbserver/remote-utils.c | 12 +- gdb/gdbserver/server.c | 33 +- gdb/gdbserver/server.h | 15 +- gdb/gdbserver/spu-low.c | 4 +- gdb/gdbserver/symbol.c | 4 +- gdb/gdbserver/target.c | 33 +- gdb/gdbserver/target.h | 7 +- gdb/gdbserver/tdesc.c | 12 +- gdb/gdbserver/tdesc.h | 2 +- gdb/gdbserver/thread-db.c | 4 +- gdb/gdbserver/tracepoint.c | 36 +- gdb/gdbserver/win32-i386-low.c | 2 +- gdb/gdbserver/win32-low.c | 4 +- gdb/gdbsupport/agent.c | 282 + gdb/gdbsupport/agent.h | 68 + gdb/{common => gdbsupport}/array-view.h | 0 gdb/{common => gdbsupport}/ax.def | 0 gdb/{common => gdbsupport}/break-common.h | 0 gdb/{common => gdbsupport}/btrace-common.c | 0 gdb/{common => gdbsupport}/btrace-common.h | 0 gdb/{common => gdbsupport}/buffer.c | 0 gdb/{common => gdbsupport}/buffer.h | 0 gdb/gdbsupport/byte-vector.h | 63 + gdb/{common => gdbsupport}/cleanups.c | 0 gdb/{common => gdbsupport}/cleanups.h | 0 gdb/gdbsupport/common-debug.c | 37 + gdb/{common => gdbsupport}/common-debug.h | 0 gdb/gdbsupport/common-defs.h | 150 + gdb/{common => gdbsupport}/common-exceptions.c | 0 gdb/{common => gdbsupport}/common-exceptions.h | 0 gdb/{common => gdbsupport}/common-gdbthread.h | 0 gdb/{common => gdbsupport}/common-inferior.h | 0 gdb/{common => gdbsupport}/common-regcache.c | 0 gdb/{common => gdbsupport}/common-regcache.h | 0 gdb/{common => gdbsupport}/common-types.h | 0 gdb/gdbsupport/common-utils.c | 417 + gdb/gdbsupport/common-utils.h | 191 + gdb/gdbsupport/common.host | 36 + gdb/{common => gdbsupport}/common.m4 | 0 gdb/gdbsupport/create-version.sh | 38 + gdb/gdbsupport/def-vector.h | 36 + gdb/{common => gdbsupport}/default-init-alloc.h | 0 gdb/{common => gdbsupport}/enum-flags.h | 0 gdb/gdbsupport/environ.c | 183 + gdb/{common => gdbsupport}/environ.h | 0 gdb/gdbsupport/errors.c | 69 + gdb/{common => gdbsupport}/errors.h | 0 gdb/{common => gdbsupport}/fileio.c | 0 gdb/{common => gdbsupport}/fileio.h | 0 gdb/gdbsupport/filestuff.c | 503 + gdb/{common => gdbsupport}/filestuff.h | 0 gdb/{common => gdbsupport}/filtered-iterator.h | 0 gdb/{common => gdbsupport}/format.c | 0 gdb/gdbsupport/format.h | 96 + gdb/gdbsupport/forward-scope-exit.h | 123 + gdb/{common => gdbsupport}/function-view.h | 0 gdb/{common => gdbsupport}/gdb_assert.h | 0 gdb/{common => gdbsupport}/gdb_locale.h | 0 gdb/gdbsupport/gdb_optional.h | 219 + gdb/{common => gdbsupport}/gdb_proc_service.h | 0 gdb/{common => gdbsupport}/gdb_ref_ptr.h | 0 gdb/{common => gdbsupport}/gdb_setjmp.h | 0 gdb/{common => gdbsupport}/gdb_signals.h | 0 gdb/{common => gdbsupport}/gdb_splay_tree.h | 0 gdb/{common => gdbsupport}/gdb_string_view.h | 0 gdb/{common => gdbsupport}/gdb_string_view.tcc | 0 gdb/{common => gdbsupport}/gdb_sys_time.h | 0 gdb/gdbsupport/gdb_tilde_expand.c | 95 + gdb/{common => gdbsupport}/gdb_tilde_expand.h | 0 gdb/{common => gdbsupport}/gdb_unique_ptr.h | 0 gdb/{common => gdbsupport}/gdb_unlinker.h | 0 gdb/{common => gdbsupport}/gdb_vecs.c | 0 gdb/{common => gdbsupport}/gdb_vecs.h | 0 gdb/{common => gdbsupport}/gdb_wait.h | 0 gdb/{common => gdbsupport}/hash_enum.h | 0 gdb/{common => gdbsupport}/host-defs.h | 0 gdb/gdbsupport/job-control.c | 86 + gdb/gdbsupport/job-control.h | 38 + gdb/{common => gdbsupport}/mingw-strerror.c | 0 gdb/gdbsupport/netstuff.c | 154 + gdb/{common => gdbsupport}/netstuff.h | 0 gdb/{common => gdbsupport}/new-op.c | 0 gdb/{common => gdbsupport}/next-iterator.h | 0 gdb/{common => gdbsupport}/observable.h | 0 gdb/{common => gdbsupport}/offset-type.h | 0 gdb/gdbsupport/pathstuff.c | 290 + gdb/gdbsupport/pathstuff.h | 95 + gdb/{common => gdbsupport}/poison.h | 0 gdb/{common => gdbsupport}/posix-strerror.c | 0 gdb/{common => gdbsupport}/preprocessor.h | 0 gdb/{common => gdbsupport}/print-utils.c | 0 gdb/{common => gdbsupport}/print-utils.h | 0 gdb/{common => gdbsupport}/ptid.c | 0 gdb/{common => gdbsupport}/ptid.h | 0 gdb/{common => gdbsupport}/refcounted-object.h | 0 gdb/{common => gdbsupport}/rsp-low.c | 0 gdb/gdbsupport/rsp-low.h | 101 + gdb/{common => gdbsupport}/run-time-clock.c | 0 gdb/{common => gdbsupport}/run-time-clock.h | 0 gdb/{common => gdbsupport}/safe-iterator.h | 0 gdb/gdbsupport/scope-exit.h | 186 + gdb/{common => gdbsupport}/scoped_fd.h | 0 gdb/gdbsupport/scoped_mmap.c | 49 + gdb/{common => gdbsupport}/scoped_mmap.h | 0 gdb/{common => gdbsupport}/scoped_restore.h | 0 gdb/{common => gdbsupport}/selftest.c | 0 gdb/{common => gdbsupport}/selftest.h | 0 .../signals-state-save-restore.c | 0 .../signals-state-save-restore.h | 0 gdb/{common => gdbsupport}/signals.c | 0 gdb/{common => gdbsupport}/symbol.h | 0 gdb/gdbsupport/tdesc.c | 401 + gdb/{common => gdbsupport}/tdesc.h | 0 gdb/{common => gdbsupport}/traits.h | 0 gdb/{common => gdbsupport}/underlying.h | 0 gdb/gdbsupport/valid-expr.h | 108 + gdb/{common => gdbsupport}/vec.c | 0 gdb/{common => gdbsupport}/vec.h | 0 gdb/{common => gdbsupport}/version.h | 0 gdb/{common => gdbsupport}/x86-xstate.h | 0 gdb/{common => gdbsupport}/xml-utils.c | 0 gdb/{common => gdbsupport}/xml-utils.h | 0 gdb/gdbthread.h | 8 +- gdb/gdbtypes.c | 10 +- gdb/gdbtypes.h | 11 +- gdb/gnu-nat.c | 12 +- gdb/go-lang.c | 1 + gdb/go32-nat.c | 2 +- gdb/guile/guile.c | 2 +- gdb/guile/scm-ports.c | 2 +- gdb/guile/scm-safe-call.c | 2 +- gdb/guile/scm-type.c | 2 +- gdb/h8300-tdep.c | 54 +- gdb/hppa-nbsd-tdep.c | 1 + gdb/hppa-obsd-tdep.c | 1 + gdb/i386-dicos-tdep.c | 1 + gdb/i386-fbsd-nat.c | 2 +- gdb/i386-fbsd-tdep.c | 2 +- gdb/i386-go32-tdep.c | 2 +- gdb/i386-linux-nat.c | 2 +- gdb/i386-linux-tdep.c | 32 +- gdb/i386-tdep.c | 54 +- gdb/i386-tdep.h | 1 + gdb/i387-tdep.c | 2 +- gdb/ia64-libunwind-tdep.c | 2 +- gdb/ia64-libunwind-tdep.h | 2 + gdb/ia64-linux-nat.c | 2 +- gdb/ia64-vms-tdep.c | 1 + gdb/inf-child.c | 8 +- gdb/inf-ptrace.c | 3 +- gdb/infcall.c | 4 +- gdb/infcall.h | 2 +- gdb/infcmd.c | 13 +- gdb/inferior-iter.h | 4 +- gdb/inferior.c | 8 +- gdb/inferior.h | 8 +- gdb/inflow.c | 2 +- gdb/inflow.h | 2 +- gdb/infrun.c | 49 +- gdb/infrun.h | 2 +- gdb/inline-frame.c | 2 +- gdb/interps.c | 9 +- gdb/interps.h | 1 + gdb/jit.c | 45 +- gdb/language.c | 9 +- gdb/language.h | 2 +- gdb/libmcheck.m4 | 43 - gdb/linespec.c | 7 +- gdb/linux-fork.c | 5 +- gdb/linux-nat-trad.c | 1 + gdb/linux-nat.c | 12 +- gdb/linux-record.c | 1 + gdb/linux-tdep.c | 4 +- gdb/linux-thread-db.c | 23 +- gdb/location.c | 2 +- gdb/location.h | 2 + gdb/m2-lang.c | 1 + gdb/m32r-linux-tdep.c | 1 + gdb/machoread.c | 2 +- gdb/macrotab.h | 2 +- gdb/main.c | 12 +- gdb/maint-test-options.c | 142 +- gdb/maint-test-settings.c | 215 +- gdb/maint.c | 90 +- gdb/maint.h | 2 +- gdb/mdebugread.c | 12 +- gdb/mem-break.c | 2 + gdb/memattr.c | 13 +- gdb/memrange.h | 2 +- gdb/mi/mi-cmd-break.h | 2 +- gdb/mi/mi-cmd-env.c | 2 +- gdb/mi/mi-cmd-file.c | 6 +- gdb/mi/mi-cmd-stack.c | 14 +- gdb/mi/mi-cmd-var.c | 28 +- gdb/mi/mi-interp.c | 12 +- gdb/mi/mi-main.c | 48 +- gdb/mi/mi-out.c | 25 +- gdb/mi/mi-out.h | 12 +- gdb/mi/mi-parse.h | 2 +- gdb/mi/mi-symbol-cmds.c | 2 +- gdb/mingw-hdep.c | 9 - gdb/minsyms.c | 38 +- gdb/minsyms.h | 12 - gdb/mips-linux-tdep.c | 4 +- gdb/mn10300-linux-tdep.c | 1 + gdb/namespace.c | 13 +- gdb/namespace.h | 4 +- gdb/nat/aarch64-linux-hw-point.c | 6 +- gdb/nat/aarch64-linux-hw-point.h | 2 +- gdb/nat/aarch64-linux.c | 4 +- gdb/nat/aarch64-sve-linux-ptrace.c | 6 +- gdb/nat/amd64-linux-siginfo.c | 2 +- gdb/nat/fork-inferior.c | 14 +- gdb/nat/linux-btrace.c | 12 +- gdb/nat/linux-btrace.h | 4 +- gdb/nat/linux-namespaces.c | 8 +- gdb/nat/linux-nat.h | 2 +- gdb/nat/linux-osdata.c | 8 +- gdb/nat/linux-personality.c | 2 +- gdb/nat/linux-procfs.c | 4 +- gdb/nat/linux-ptrace.c | 4 +- gdb/nat/linux-ptrace.h | 2 +- gdb/nat/linux-waitpid.c | 4 +- gdb/nat/mips-linux-watch.c | 2 +- gdb/nat/mips-linux-watch.h | 2 +- gdb/nat/ppc-linux.c | 2 +- gdb/nat/x86-dregs.c | 4 +- gdb/nat/x86-dregs.h | 2 +- gdb/nat/x86-linux-dregs.c | 2 +- gdb/nat/x86-linux.c | 2 +- gdb/nios2-linux-tdep.c | 1 + gdb/nto-procfs.c | 4 +- gdb/nto-tdep.c | 2 +- gdb/objfile-flags.h | 2 +- gdb/objfiles.c | 10 +- gdb/objfiles.h | 13 +- gdb/obsd-nat.c | 4 +- gdb/observable.h | 2 +- gdb/opencl-lang.c | 1 + gdb/or1k-linux-tdep.c | 1 + gdb/osdata.c | 2 +- gdb/p-lang.c | 1 + gdb/p-valprint.c | 2 +- gdb/parse.c | 2 +- gdb/parser-defs.h | 3 +- gdb/ppc-linux-nat.c | 2 +- gdb/ppc-tdep.h | 2 + gdb/printcmd.c | 195 +- gdb/probe.c | 2 +- gdb/probe.h | 2 + gdb/proc-api.c | 2 +- gdb/procfs.c | 8 +- gdb/producer.c | 2 +- gdb/progspace.c | 2 +- gdb/progspace.h | 8 +- gdb/psymtab.h | 2 +- gdb/python/lib/gdb/__init__.py | 16 +- gdb/python/lib/gdb/function/strfns.py | 8 +- gdb/python/py-block.c | 45 +- gdb/python/py-breakpoint.c | 8 +- gdb/python/py-framefilter.c | 106 +- gdb/python/py-inferior.c | 38 +- gdb/python/py-infthread.c | 8 +- gdb/python/py-objfile.c | 80 +- gdb/python/py-record-btrace.c | 1 + gdb/python/py-ref.h | 2 +- gdb/python/py-symbol.c | 40 + gdb/python/py-type.c | 2 +- gdb/python/py-unwind.c | 6 +- gdb/python/py-value.c | 2 +- gdb/python/python-internal.h | 4 +- gdb/python/python.c | 8 +- gdb/ravenscar-thread.c | 8 +- gdb/record-btrace.c | 41 +- gdb/record-full.c | 8 +- gdb/record.c | 8 +- gdb/record.h | 3 +- gdb/regcache-dump.c | 7 +- gdb/regcache.c | 16 +- gdb/regcache.h | 14 +- gdb/regformats/aarch64.dat | 74 - gdb/regformats/i386/amd64-avx-avx512-linux.dat | 154 - gdb/regformats/i386/amd64-avx-linux.dat | 82 - .../i386/amd64-avx-mpx-avx512-pku-linux.dat | 161 - gdb/regformats/i386/amd64-avx-mpx-linux.dat | 88 - gdb/regformats/i386/amd64-linux.dat | 66 - gdb/regformats/i386/amd64-mpx-linux.dat | 72 - gdb/regformats/i386/amd64.dat | 65 - gdb/regformats/i386/i386-avx-avx512-linux.dat | 72 - gdb/regformats/i386/i386-avx-linux.dat | 56 - .../i386/i386-avx-mpx-avx512-pku-linux.dat | 79 - gdb/regformats/i386/i386-avx-mpx-linux.dat | 62 - gdb/regformats/i386/i386-linux.dat | 48 - gdb/regformats/i386/i386-mmx-linux.dat | 48 - gdb/regformats/i386/i386-mpx-linux.dat | 54 - gdb/regformats/i386/i386.dat | 47 - gdb/regformats/i386/x32-avx-avx512-linux.dat | 154 - gdb/regformats/i386/x32-avx-linux.dat | 82 - gdb/regformats/i386/x32-linux.dat | 66 - gdb/remote-fileio.c | 6 +- gdb/remote-fileio.h | 2 +- gdb/remote-sim.c | 81 +- gdb/remote.c | 55 +- gdb/riscv-fbsd-nat.c | 15 +- gdb/riscv-fbsd-tdep.c | 1 + gdb/riscv-linux-tdep.c | 1 + gdb/riscv-tdep.c | 49 +- gdb/rs6000-aix-tdep.c | 2 +- gdb/rust-exp.y | 7 +- gdb/s12z-tdep.c | 4 +- gdb/s390-linux-nat.c | 81 +- gdb/s390-tdep.c | 33 + gdb/selftest-arch.c | 2 +- gdb/ser-base.c | 2 +- gdb/ser-event.c | 2 +- gdb/ser-pipe.c | 4 +- gdb/ser-tcp.c | 22 +- gdb/ser-unix.c | 4 +- gdb/serial.c | 8 +- gdb/sh-linux-tdep.c | 1 + gdb/sh-nbsd-tdep.c | 1 + gdb/skip.c | 34 +- gdb/solib-aix.c | 147 +- gdb/solib-darwin.c | 24 +- gdb/solib-dsbt.c | 40 +- gdb/solib-spu.c | 15 +- gdb/solib-svr4.c | 3 +- gdb/solib-target.c | 2 +- gdb/solib.c | 4 +- gdb/source-cache.c | 303 +- gdb/source-cache.h | 63 +- gdb/source.c | 166 +- gdb/source.h | 7 +- gdb/sparc-nat.c | 2 +- gdb/sparc-nbsd-tdep.c | 1 + gdb/sparc-obsd-tdep.c | 1 + gdb/sparc-ravenscar-thread.c | 1 + gdb/sparc64-fbsd-tdep.c | 1 + gdb/sparc64-linux-tdep.c | 6 +- gdb/spu-linux-nat.c | 2 +- gdb/spu-tdep.c | 28 +- gdb/stabsread.c | 19 +- gdb/stack.c | 321 +- gdb/stack.h | 12 + gdb/stap-probe.c | 34 +- gdb/std-regs.c | 2 + gdb/symfile-add-flags.h | 2 +- gdb/symfile.c | 50 +- gdb/symfile.h | 8 +- gdb/symtab.c | 387 +- gdb/symtab.h | 32 +- gdb/target-descriptions.c | 28 +- gdb/target-descriptions.h | 3 +- gdb/target-float.c | 2 +- gdb/target-memory.c | 4 +- gdb/target.c | 8 +- gdb/target.h | 8 +- gdb/target/waitstatus.c | 2 +- gdb/target/waitstatus.h | 2 +- gdb/testsuite/ChangeLog | 617 + gdb/testsuite/gdb.ada/catch_assert_if.exp | 2 +- gdb/testsuite/gdb.ada/catch_ex.exp | 8 +- gdb/testsuite/gdb.ada/char_enum.exp | 6 + gdb/testsuite/gdb.ada/char_enum/foo.adb | 6 +- gdb/testsuite/gdb.ada/char_enum/pck.ads | 2 +- gdb/testsuite/gdb.ada/display_nested.exp | 29 + gdb/testsuite/gdb.ada/display_nested/foo.adb | 30 + gdb/testsuite/gdb.ada/display_nested/pack.adb | 23 + gdb/testsuite/gdb.ada/display_nested/pack.ads | 20 + gdb/testsuite/gdb.ada/info_auto_lang.exp | 5 +- gdb/testsuite/gdb.ada/length_cond.exp | 3 + gdb/testsuite/gdb.ada/mi_catch_assert.exp | 2 +- gdb/testsuite/gdb.ada/mi_catch_ex.exp | 8 +- gdb/testsuite/gdb.ada/mi_catch_ex_hand.exp | 4 +- gdb/testsuite/gdb.ada/mi_ex_cond.exp | 2 +- gdb/testsuite/gdb.ada/ptype_union.exp | 5 + gdb/testsuite/gdb.arch/aarch64-prologue.c | 83 + gdb/testsuite/gdb.arch/aarch64-prologue.exp | 36 + gdb/testsuite/gdb.arch/amd64-break-on-asm-line.S | 35 + gdb/testsuite/gdb.arch/amd64-break-on-asm-line.exp | 35 + gdb/testsuite/gdb.arch/arm-cmse-sgstubs.c | 50 + gdb/testsuite/gdb.arch/arm-cmse-sgstubs.exp | 50 + gdb/testsuite/gdb.arch/i386-pkru.exp | 2 +- gdb/testsuite/gdb.arch/riscv-bp-infcall.c | 29 + gdb/testsuite/gdb.arch/riscv-bp-infcall.exp | 56 + gdb/testsuite/gdb.base/alias.exp | 50 + gdb/testsuite/gdb.base/batch-exit-status.exp | 32 +- .../gdb.base/batch-preserve-term-settings.exp | 7 + gdb/testsuite/gdb.base/break-idempotent.exp | 66 +- gdb/testsuite/gdb.base/break-interp.exp | 8 + gdb/testsuite/gdb.base/compare-sections.exp | 11 +- gdb/testsuite/gdb.base/define.exp | 13 +- gdb/testsuite/gdb.base/examine-backward.exp | 2 +- gdb/testsuite/gdb.base/frame-args.exp | 60 + gdb/testsuite/gdb.base/help.exp | 62 +- gdb/testsuite/gdb.base/index-cache.exp | 3 +- gdb/testsuite/gdb.base/info-macros.exp | 21 +- gdb/testsuite/gdb.base/info-types.c | 117 + gdb/testsuite/gdb.base/info-types.exp | 131 + gdb/testsuite/gdb.base/info_sources.c | 23 + gdb/testsuite/gdb.base/info_sources.exp | 96 + gdb/testsuite/gdb.base/info_sources_base.c | 22 + .../gdb.base/infoline-reloc-main-from-zero.exp | 2 +- gdb/testsuite/gdb.base/maint.exp | 6 +- gdb/testsuite/gdb.base/options.exp | 231 +- gdb/testsuite/gdb.base/printcmds.exp | 58 +- gdb/testsuite/gdb.base/settings.exp | 35 +- gdb/testsuite/gdb.base/shell.exp | 47 +- gdb/testsuite/gdb.base/signals.exp | 17 +- gdb/testsuite/gdb.base/structs.exp | 6 +- gdb/testsuite/gdb.base/style.c | 7 +- gdb/testsuite/gdb.base/style.exp | 8 +- gdb/testsuite/gdb.base/with.c | 41 + gdb/testsuite/gdb.base/with.exp | 289 + gdb/testsuite/gdb.cp/constexpr-field.exp | 3 +- gdb/testsuite/gdb.cp/except-multi-location-lib.cc | 25 + gdb/testsuite/gdb.cp/except-multi-location-main.cc | 36 + gdb/testsuite/gdb.cp/except-multi-location.exp | 87 + gdb/testsuite/gdb.cp/exception.exp | 18 +- gdb/testsuite/gdb.cp/nested-types.exp | 11 +- gdb/testsuite/gdb.dwarf2/ada-linkage-name.c | 41 + gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp | 95 + gdb/testsuite/gdb.dwarf2/dw2-dir-file-name.exp | 7 + gdb/testsuite/gdb.dwarf2/dw2-ranges-func-hi-cold.c | 82 + gdb/testsuite/gdb.dwarf2/dw2-ranges-func-lo-cold.c | 82 + gdb/testsuite/gdb.dwarf2/dw2-ranges-func.c | 78 - gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp | 704 +- gdb/testsuite/gdb.dwarf2/dw2-restrict.S | 509 +- gdb/testsuite/gdb.dwarf2/implptr-64bit.exp | 2 +- .../gdb.dwarf2/inlined_subroutine-inheritance.exp | 6 +- gdb/testsuite/gdb.dwarf2/multidictionary.exp | 6 + gdb/testsuite/gdb.dwarf2/varval.exp | 423 +- gdb/testsuite/gdb.fortran/vla-ptype.exp | 12 + gdb/testsuite/gdb.fortran/vla-sizeof.exp | 10 + gdb/testsuite/gdb.fortran/vla-value.exp | 27 + gdb/testsuite/gdb.fortran/vla.f90 | 15 + gdb/testsuite/gdb.gdb/selftest.exp | 23 +- gdb/testsuite/gdb.linespec/break-ask.exp | 6 +- gdb/testsuite/gdb.linespec/explicit.exp | 17 +- .../gdb.mi/list-thread-groups-available.exp | 13 +- gdb/testsuite/gdb.mi/mi-catch-cpp-exceptions.exp | 119 +- gdb/testsuite/gdb.mi/mi-complete.exp | 6 +- gdb/testsuite/gdb.multi/tids.exp | 21 +- gdb/testsuite/gdb.objc/basicclass.exp | 2 +- gdb/testsuite/gdb.objc/basicclass.m | 1 + gdb/testsuite/gdb.objc/nondebug.m | 1 + gdb/testsuite/gdb.objc/objcdecode.m | 1 + gdb/testsuite/gdb.python/py-block.exp | 5 + gdb/testsuite/gdb.python/py-breakpoint.exp | 5 +- gdb/testsuite/gdb.python/py-completion.exp | 88 +- gdb/testsuite/gdb.python/py-events.exp | 2 +- gdb/testsuite/gdb.python/py-evsignal.exp | 2 +- gdb/testsuite/gdb.python/py-evthreads.exp | 2 +- .../gdb.python/py-framefilter-invalidarg.exp | 4 +- gdb/testsuite/gdb.python/py-framefilter.exp | 86 +- .../gdb.python/py-mi-var-info-path-expression.exp | 3 +- gdb/testsuite/gdb.python/py-objfile-script.exp | 2 +- gdb/testsuite/gdb.python/py-objfile.c | 3 + gdb/testsuite/gdb.python/py-objfile.exp | 35 +- gdb/testsuite/gdb.python/py-pp-maint.exp | 2 +- gdb/testsuite/gdb.python/py-pp-registration.exp | 2 +- gdb/testsuite/gdb.python/py-section-script.exp | 21 +- gdb/testsuite/gdb.python/py-symbol.c | 5 + gdb/testsuite/gdb.python/py-symbol.exp | 24 + gdb/testsuite/gdb.python/py-symtab.exp | 4 +- gdb/testsuite/gdb.python/python.exp | 8 +- gdb/testsuite/gdb.server/reconnect-ctrl-c.exp | 5 + gdb/testsuite/gdb.server/unittest.exp | 2 +- .../gdb.testsuite/foreach_with_prefix.exp | 98 + gdb/testsuite/gdb.threads/fork-plus-threads.exp | 8 + gdb/testsuite/gdb.trace/entry-values.exp | 4 +- .../gdb.trace/unavailable-dwarf-piece.exp | 8 +- gdb/testsuite/gdb.tui/basic.exp | 55 + gdb/testsuite/gdb.tui/empty.exp | 101 + gdb/testsuite/gdb.tui/list.exp | 37 + gdb/testsuite/gdb.tui/main.exp | 34 + gdb/testsuite/gdb.tui/regs.exp | 48 + gdb/testsuite/gdb.tui/resize.exp | 42 + gdb/testsuite/lib/completion-support.exp | 23 +- gdb/testsuite/lib/gdb.exp | 180 +- gdb/testsuite/lib/mi-support.exp | 7 + gdb/testsuite/lib/pascal.exp | 2 + gdb/testsuite/lib/read1.c | 6 +- gdb/testsuite/lib/tuiterm.exp | 608 + gdb/thread-iter.h | 6 +- gdb/thread.c | 102 +- gdb/tic6x-linux-tdep.c | 1 + gdb/tilegx-linux-tdep.c | 1 + gdb/tilegx-tdep.c | 2 +- gdb/top.c | 65 +- gdb/top.h | 3 +- gdb/tracefile-tfile.c | 9 +- gdb/tracefile.c | 3 +- gdb/tracepoint.c | 59 +- gdb/tracepoint.h | 2 +- gdb/trad-frame.c | 1 + gdb/tui/tui-command.c | 92 +- gdb/tui/tui-command.h | 54 +- gdb/tui/tui-data.c | 699 +- gdb/tui/tui-data.h | 390 +- gdb/tui/tui-disasm.c | 155 +- gdb/tui/tui-disasm.h | 50 +- gdb/tui/tui-hooks.c | 26 +- gdb/tui/tui-interp.c | 2 - gdb/tui/tui-io.c | 96 +- gdb/tui/tui-layout.c | 870 +- gdb/tui/tui-layout.h | 4 +- gdb/tui/tui-out.c | 6 +- gdb/tui/tui-out.h | 4 +- gdb/tui/tui-regs.c | 618 +- gdb/tui/tui-regs.h | 107 +- gdb/tui/tui-source.c | 328 +- gdb/tui/tui-source.h | 67 +- gdb/tui/tui-stack.c | 173 +- gdb/tui/tui-stack.h | 29 + gdb/tui/tui-win.c | 683 +- gdb/tui/tui-win.h | 2 - gdb/tui/tui-windata.c | 295 - gdb/tui/tui-windata.h | 39 - gdb/tui/tui-wingeneral.c | 167 +- gdb/tui/tui-wingeneral.h | 15 +- gdb/tui/tui-winsource.c | 609 +- gdb/tui/tui-winsource.h | 247 +- gdb/tui/tui.c | 25 +- gdb/tui/tui.h | 13 +- gdb/type-stack.h | 1 + gdb/typeprint.c | 5 +- gdb/ui-file.c | 2 +- gdb/ui-out.c | 24 +- gdb/ui-out.h | 20 +- gdb/ui-style.c | 1 + gdb/unittests/array-view-selftests.c | 4 +- gdb/unittests/child-path-selftests.c | 4 +- gdb/unittests/cli-utils-selftests.c | 2 +- gdb/unittests/common-utils-selftests.c | 4 +- gdb/unittests/copy_bitwise-selftests.c | 2 +- gdb/unittests/environ-selftests.c | 4 +- gdb/unittests/format_pieces-selftests.c | 4 +- gdb/unittests/function-view-selftests.c | 4 +- gdb/unittests/help-doc-selftests.c | 107 + gdb/unittests/lookup_name_info-selftests.c | 2 +- gdb/unittests/memory-map-selftests.c | 2 +- gdb/unittests/memrange-selftests.c | 2 +- gdb/unittests/mkdir-recursive-selftests.c | 8 +- gdb/unittests/observable-selftests.c | 4 +- gdb/unittests/offset-type-selftests.c | 8 +- gdb/unittests/optional-selftests.c | 4 +- gdb/unittests/parse-connection-spec-selftests.c | 4 +- gdb/unittests/ptid-selftests.c | 2 +- gdb/unittests/rsp-low-selftests.c | 4 +- gdb/unittests/scoped_fd-selftests.c | 6 +- gdb/unittests/scoped_mmap-selftests.c | 8 +- gdb/unittests/scoped_restore-selftests.c | 4 +- gdb/unittests/string_view-selftests.c | 4 +- gdb/unittests/style-selftests.c | 2 +- gdb/unittests/tracepoint-selftests.c | 2 +- gdb/unittests/unpack-selftests.c | 2 +- gdb/unittests/utils-selftests.c | 2 +- gdb/unittests/xml-utils-selftests.c | 4 +- gdb/utils.c | 27 +- gdb/utils.h | 5 +- gdb/valarith.c | 5 +- gdb/valops.c | 16 +- gdb/valprint.c | 5 +- gdb/valprint.h | 13 +- gdb/value.c | 4 +- gdb/value.h | 10 +- gdb/varobj.c | 3 +- gdb/varobj.h | 2 +- gdb/windows-nat.c | 4 +- gdb/x86-linux-nat.c | 2 +- gdb/x86-tdep.c | 1 + gdb/xcoffread.c | 7 +- gdb/xml-support.c | 2 +- gdb/xml-support.h | 7 +- gdb/xml-tdesc.h | 2 +- gdb/xstormy16-tdep.c | 2 +- gdb/xtensa-linux-nat.c | 2 +- gdb/xtensa-linux-tdep.c | 1 + gnulib/ChangeLog | 4 + gnulib/update-gnulib.sh | 8 +- gold/ChangeLog | 148 + gold/ehframe.cc | 47 +- gold/ehframe.h | 25 +- gold/layout.cc | 9 +- gold/layout.h | 16 +- gold/object.cc | 31 +- gold/powerpc.cc | 2321 +- include/ChangeLog | 73 + include/coff/i386.h | 19 + include/coff/x86_64.h | 22 +- include/ctf-api.h | 5 +- include/ctf.h | 10 +- include/elf/internal.h | 4 +- include/elf/mips.h | 6 + include/elf/ppc64.h | 10 +- include/opcode/aarch64.h | 2 +- include/opcode/arc.h | 2 + include/opcode/h8300.h | 94 +- include/opcode/i386.h | 1 + ld/ChangeLog | 495 + ld/emulparams/armelf.sh | 14 +- ld/emulparams/elf32bmip.sh | 1 + ld/emulparams/elf32bmipn32-defs.sh | 1 + ld/emulparams/elf64bmip-defs.sh | 1 + ld/emulparams/elf64bpf.sh | 3 +- ld/emultempl/aarch64elf.em | 2 +- ld/emultempl/aix.em | 5 +- ld/emultempl/alphaelf.em | 2 +- ld/emultempl/elf32.em | 17 +- ld/emultempl/mipself.em | 16 - ld/emultempl/mmo.em | 2 +- ld/emultempl/pe.em | 3 +- ld/emultempl/pep.em | 3 +- ld/emultempl/ppc32elf.em | 9 +- ld/emultempl/spuelf.em | 8 +- ld/ldexp.c | 24 +- ld/ldlang.c | 301 +- ld/ldlang.h | 66 +- ld/ldlex.l | 4 +- ld/ldmain.c | 2 +- ld/lexsup.c | 3 +- ld/plugin.c | 30 +- ld/scripttempl/elf64bpf.sc | 702 + ld/testsuite/ld-aarch64/bti-plt-2.d | 2 +- ld/testsuite/ld-aarch64/bti-plt-4.d | 2 +- ld/testsuite/ld-aarch64/bti-plt-6.d | 2 +- ld/testsuite/ld-aarch64/bti-plt-7.d | 2 +- ld/testsuite/ld-aarch64/bti-warn.d | 2 +- ld/testsuite/ld-aarch64/property-bti-pac1.d | 2 +- ld/testsuite/ld-aarch64/property-bti-pac2.d | 2 +- ld/testsuite/ld-aarch64/property-bti-pac3.d | 2 +- ld/testsuite/ld-arc/relax-local-pic.d | 14 + ld/testsuite/ld-arc/relax-local-pic.s | 16 + ld/testsuite/ld-arm/arm-elf.exp | 6 + ld/testsuite/ld-arm/cmse_main.s | 21 + ld/testsuite/ld-arm/cmse_main_sec_debug.d | 29 + ld/testsuite/ld-arm/cmse_sec_debug.s | 142 + ld/testsuite/ld-arm/cortex-a8-fix-b-plt.d | 2 +- ld/testsuite/ld-arm/cortex-a8-fix-b-rel-arm.d | 2 +- ld/testsuite/ld-arm/cortex-a8-fix-bcc-plt.d | 2 +- ld/testsuite/ld-arm/farcall-cond-thumb-arm.d | 2 +- ld/testsuite/ld-arm/farcall-mixed-app.d | 4 +- ld/testsuite/ld-arm/farcall-mixed-app2.d | 4 +- ld/testsuite/ld-arm/farcall-mixed-lib-v4t.d | 20 +- ld/testsuite/ld-arm/farcall-thumb-arm-pic-veneer.d | 2 +- ld/testsuite/ld-arm/farcall-thumb-arm-short.d | 2 +- ld/testsuite/ld-arm/farcall-thumb-arm.d | 4 +- .../ld-arm/farcall-thumb-thumb-pic-veneer.d | 2 +- ld/testsuite/ld-arm/farcall-thumb-thumb.d | 2 +- ld/testsuite/ld-arm/fix-arm1176-on.d | 2 +- ld/testsuite/ld-arm/ifunc-10.dd | 32 +- ld/testsuite/ld-arm/ifunc-2.dd | 8 +- ld/testsuite/ld-arm/ifunc-4.dd | 32 +- ld/testsuite/ld-arm/ifunc-6.dd | 4 +- ld/testsuite/ld-arm/ifunc-8.dd | 16 +- ld/testsuite/ld-arm/jump-reloc-veneers-long.d | 2 +- ld/testsuite/ld-arm/mixed-app.d | 2 +- ld/testsuite/ld-arm/thumb2-b-interwork.d | 2 +- ld/testsuite/ld-arm/tls-longplt.d | 2 +- ld/testsuite/ld-arm/tls-thumb1.d | 4 +- ld/testsuite/ld-arm/unwind-4.d | 2 + ld/testsuite/ld-bpf/call-1.d | 1 - ld/testsuite/ld-bpf/jump-1.d | 1 - ld/testsuite/ld-cris/tls-dso-dtpoffd2.d | 8 +- ld/testsuite/ld-cris/tls-dso-dtpoffd4.d | 8 +- ld/testsuite/ld-cris/tls-dso-tpoffgotcomm1.d | 18 +- ld/testsuite/ld-cris/tls-gd-1.d | 22 +- ld/testsuite/ld-cris/tls-gd-1h.d | 22 +- ld/testsuite/ld-cris/tls-gd-2.d | 22 +- ld/testsuite/ld-cris/tls-gd-2h.d | 22 +- ld/testsuite/ld-cris/tls-ie-10.d | 20 +- ld/testsuite/ld-cris/tls-ie-11.d | 24 +- ld/testsuite/ld-cris/tls-ie-8.d | 20 +- ld/testsuite/ld-cris/tls-ie-9.d | 24 +- ld/testsuite/ld-cris/tls-js1.d | 14 +- ld/testsuite/ld-cris/tls-ld-4.d | 22 +- ld/testsuite/ld-cris/tls-ld-5.d | 22 +- ld/testsuite/ld-cris/tls-ld-6.d | 22 +- ld/testsuite/ld-cris/tls-ld-7.d | 22 +- ld/testsuite/ld-cris/tls-ldgd-14.d | 28 +- ld/testsuite/ld-cris/tls-ldgd-15.d | 30 +- ld/testsuite/ld-cris/tls-ldgdx-14.d | 14 +- ld/testsuite/ld-cris/tls-ldgdx-15.d | 16 +- ld/testsuite/ld-cris/tls-local-54.d | 8 +- ld/testsuite/ld-cris/tls-local-60.d | 12 +- ld/testsuite/ld-cris/tls-local-61.d | 12 +- ld/testsuite/ld-cris/tls-local-63.d | 10 +- ld/testsuite/ld-cris/tls-local-64.d | 16 +- ld/testsuite/ld-cris/tls-ok-30.d | 18 +- ld/testsuite/ld-cris/tls-ok-32.d | 12 +- ld/testsuite/ld-cris/tls-ok-34.d | 16 +- ld/testsuite/ld-elf/group9.s | 2 +- ld/testsuite/ld-elf/hash.d | 2 +- ld/testsuite/ld-elf/pr24819.d | 9 + ld/testsuite/ld-elf/pr24819.s | 4 + ld/testsuite/ld-elf/size-1.d | 26 + ld/testsuite/ld-elf/size-1.s | 15 + ld/testsuite/ld-elf/size-1.t | 16 + ld/testsuite/ld-elf/size-2.d | 21 + ld/testsuite/ld-elf/size-2.s | 9 + ld/testsuite/ld-elf/size-2.t | 20 + ld/testsuite/ld-elf/x86-feature-1a.rd | 2 +- ld/testsuite/ld-elf/x86-feature-1b.rd | 2 +- ld/testsuite/ld-elf/x86-feature-1c.rd | 2 +- ld/testsuite/ld-elf/x86-feature-1d.rd | 2 +- ld/testsuite/ld-elf/x86-feature-1e.rd | 2 +- ld/testsuite/ld-i386/ibt-plt-2d.d | 2 +- ld/testsuite/ld-i386/ibt-plt-3d.d | 2 +- ld/testsuite/ld-i386/pr23372a.d | 2 +- ld/testsuite/ld-i386/pr23372c.d | 2 +- ld/testsuite/ld-i386/pr23486a.d | 2 +- ld/testsuite/ld-i386/pr23486b.d | 2 +- ld/testsuite/ld-i386/pr23486c.d | 2 +- ld/testsuite/ld-i386/pr23486d.d | 2 +- ld/testsuite/ld-i386/pr24322a.d | 2 +- ld/testsuite/ld-i386/pr24322b.d | 2 +- ld/testsuite/ld-i386/property-x86-3.d | 2 +- ld/testsuite/ld-i386/property-x86-4a.d | 2 +- ld/testsuite/ld-i386/property-x86-5.d | 2 +- ld/testsuite/ld-i386/property-x86-cet1.d | 2 +- ld/testsuite/ld-i386/property-x86-cet2a.d | 2 +- ld/testsuite/ld-i386/property-x86-cet5a.d | 2 +- ld/testsuite/ld-i386/property-x86-cet5b.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt1a.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt1b.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt2.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt3a.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt3b.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt4.d | 2 +- ld/testsuite/ld-i386/property-x86-ibt5.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk1a.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk1b.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk2.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk3a.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk3b.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk4.d | 2 +- ld/testsuite/ld-i386/property-x86-shstk5.d | 2 +- ld/testsuite/ld-mips-elf/hash1.d | 11 + ld/testsuite/ld-mips-elf/hash1.s | 8 +- ld/testsuite/ld-mips-elf/hash1a.d | 5 - ld/testsuite/ld-mips-elf/hash1b.d | 4 - ld/testsuite/ld-mips-elf/hash1c.d | 4 - ld/testsuite/ld-mips-elf/hash2.d | 17 + ld/testsuite/ld-mips-elf/mips-elf.exp | 5 +- ld/testsuite/ld-mips-elf/start.s | 12 + ld/testsuite/ld-mips-elf/tls-multi-got-1.got | 34 +- ld/testsuite/ld-mips-elf/tls-multi-got-1.r | 16 +- ld/testsuite/ld-mips-elf/tlsdyn-pie-o32.d | 2 +- ld/testsuite/ld-mips-elf/tlsdyn-pie-o32.got | 2 +- ld/testsuite/ld-mips-elf/tlslib-o32-hidden.got | 10 +- ld/testsuite/ld-mips-elf/tlslib-o32-ver.got | 12 +- ld/testsuite/ld-mips-elf/tlslib-o32.got | 12 +- ld/testsuite/ld-plugin/lto-3r.d | 2 +- ld/testsuite/ld-plugin/lto-5r.d | 2 +- ld/testsuite/ld-powerpc/callstub-1.d | 29 + ld/testsuite/ld-powerpc/callstub-1.s | 9 + ld/testsuite/ld-powerpc/callstub-2.d | 35 + ld/testsuite/ld-powerpc/callstub-2.s | 8 + ld/testsuite/ld-powerpc/elfv2exe.d | 2 +- ld/testsuite/ld-powerpc/elfv2so.d | 12 +- ld/testsuite/ld-powerpc/powerpc.exp | 9 +- ld/testsuite/ld-powerpc/tlsgd.d | 31 + ld/testsuite/ld-powerpc/tlsgd.s | 52 + ld/testsuite/ld-powerpc/tlsie.d | 54 + ld/testsuite/ld-powerpc/tlsie.s | 77 + ld/testsuite/ld-powerpc/tlsld.d | 63 +- ld/testsuite/ld-powerpc/tlsld.s | 86 +- ld/testsuite/ld-powerpc/tlsld32.d | 44 - ld/testsuite/ld-powerpc/tlsldopt.d | 43 + ld/testsuite/ld-powerpc/{tlsld.s => tlsldopt.s} | 0 ld/testsuite/ld-powerpc/tlsldopt32.d | 44 + .../ld-powerpc/{tlsld32.s => tlsldopt32.s} | 0 ld/testsuite/ld-powerpc/tlsso.r | 8 +- ld/testsuite/ld-powerpc/tlsso32.g | 2 +- ld/testsuite/ld-powerpc/tlsso32.r | 7 +- ld/testsuite/ld-powerpc/tlstocso.r | 2 +- ld/testsuite/ld-riscv-elf/c-lui-2.d | 19 + ld/testsuite/ld-riscv-elf/c-lui-2.ld | 6 + ld/testsuite/ld-riscv-elf/c-lui-2.s | 12 + ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp | 1 + ld/testsuite/ld-s390/tlspic.rd | 1 - ld/testsuite/ld-s390/tlspic_64.rd | 1 - ld/testsuite/ld-scripts/size-1.d | 14 - ld/testsuite/ld-scripts/size-1.s | 7 - ld/testsuite/ld-scripts/size-1.t | 10 - ld/testsuite/ld-scripts/size-2.d | 18 - ld/testsuite/ld-scripts/size-2.s | 8 - ld/testsuite/ld-scripts/size-2.t | 22 - ld/testsuite/ld-scripts/size.exp | 41 - ld/testsuite/ld-sparc/tlssunnopic32.rd | 1 - ld/testsuite/ld-sparc/tlssunnopic64.rd | 1 - ld/testsuite/ld-sparc/tlssunpic32.rd | 1 - ld/testsuite/ld-sparc/tlssunpic64.rd | 1 - ld/testsuite/ld-srec/srec.exp | 4 + ld/testsuite/ld-undefined/undefined.exp | 14 +- ld/testsuite/ld-x86-64/ibt-plt-2d-x32.d | 2 +- ld/testsuite/ld-x86-64/ibt-plt-2d.d | 2 +- ld/testsuite/ld-x86-64/ibt-plt-3d-x32.d | 2 +- ld/testsuite/ld-x86-64/ibt-plt-3d.d | 2 +- ld/testsuite/ld-x86-64/pr23372a-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23372a.d | 2 +- ld/testsuite/ld-x86-64/pr23372c-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23372c.d | 2 +- ld/testsuite/ld-x86-64/pr23486a-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23486a.d | 2 +- ld/testsuite/ld-x86-64/pr23486b-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23486b.d | 2 +- ld/testsuite/ld-x86-64/pr23486c-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23486c.d | 2 +- ld/testsuite/ld-x86-64/pr23486d-x32.d | 2 +- ld/testsuite/ld-x86-64/pr23486d.d | 2 +- ld/testsuite/ld-x86-64/pr24322a-x32.d | 2 +- ld/testsuite/ld-x86-64/pr24322a.d | 2 +- ld/testsuite/ld-x86-64/pr24322b-x32.d | 2 +- ld/testsuite/ld-x86-64/pr24322b.d | 2 +- ld/testsuite/ld-x86-64/pr24458a-x32.d | 2 +- ld/testsuite/ld-x86-64/pr24458a.d | 2 +- ld/testsuite/ld-x86-64/pr24458b-x32.d | 2 +- ld/testsuite/ld-x86-64/pr24458b.d | 2 +- ld/testsuite/ld-x86-64/pr24458c-x32.d | 2 +- ld/testsuite/ld-x86-64/pr24458c.d | 2 +- ld/testsuite/ld-x86-64/pr24721-x32.d | 6 + ld/testsuite/ld-x86-64/pr24721.d | 6 + ld/testsuite/ld-x86-64/pr24721.map | 3 + ld/testsuite/ld-x86-64/pr24721a.s | 34 + ld/testsuite/ld-x86-64/pr24721b.s | 6 + ld/testsuite/ld-x86-64/pr24905-x32.d | 8 + ld/testsuite/ld-x86-64/pr24905.d | 7 + ld/testsuite/ld-x86-64/pr24905.s | 6 + ld/testsuite/ld-x86-64/pr24905.t | 1 + ld/testsuite/ld-x86-64/property-1.r | 2 +- ld/testsuite/ld-x86-64/property-1a.r | 2 +- ld/testsuite/ld-x86-64/property-2.r | 2 +- ld/testsuite/ld-x86-64/property-2a.r | 2 +- ld/testsuite/ld-x86-64/property-3.r | 2 +- ld/testsuite/ld-x86-64/property-3a.r | 2 +- ld/testsuite/ld-x86-64/property-4.r | 2 +- ld/testsuite/ld-x86-64/property-4a.r | 2 +- ld/testsuite/ld-x86-64/property-5.r | 2 +- ld/testsuite/ld-x86-64/property-5a.r | 2 +- ld/testsuite/ld-x86-64/property-6.r | 2 +- ld/testsuite/ld-x86-64/property-7.r | 2 +- ld/testsuite/ld-x86-64/property-7a.r | 2 +- ld/testsuite/ld-x86-64/property-x86-3-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-3.d | 2 +- ld/testsuite/ld-x86-64/property-x86-4a-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-4a.d | 2 +- ld/testsuite/ld-x86-64/property-x86-5-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-5.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet1-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet1.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet2a-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet2a.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet5a-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet5a.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet5b-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-cet5b.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt1a-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt1a.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt1b-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt1b.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt2-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt2.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt3a.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt3b.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt4-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt4.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt5-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-ibt5.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk1a-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk1a.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk1b-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk1b.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk2-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk2.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk3a.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk3b.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk4-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk4.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk5-x32.d | 2 +- ld/testsuite/ld-x86-64/property-x86-shstk5.d | 2 +- ld/testsuite/ld-x86-64/x86-64.exp | 4 + libctf/ChangeLog | 134 + libctf/Makefile.am | 2 +- libctf/Makefile.in | 12 +- libctf/ctf-create.c | 234 +- libctf/ctf-dump.c | 6 +- libctf/ctf-error.c | 2 +- libctf/ctf-hash.c | 52 +- libctf/ctf-impl.h | 58 +- libctf/ctf-lookup.c | 2 +- libctf/ctf-open-bfd.c | 23 +- libctf/ctf-open.c | 61 +- libctf/ctf-string.c | 330 + libctf/ctf-subr.c | 51 - libctf/ctf-types.c | 85 + libctf/ctf-util.c | 35 +- libiberty/ChangeLog | 75 + libiberty/cp-demangle.c | 29 +- libiberty/cplus-dem.c | 1 + libiberty/d-demangle.c | 20 +- libiberty/lrealpath.c | 16 + libiberty/rust-demangle.c | 1 + libiberty/rust-demangle.h | 45 + libiberty/simple-object-elf.c | 33 +- libiberty/testsuite/d-demangle-expected | 20 + libiberty/testsuite/demangle-expected | 13 + opcodes/ChangeLog | 387 + opcodes/aarch64-asm.c | 4 +- opcodes/aarch64-dis-2.c | 594 +- opcodes/aarch64-dis.c | 13 +- opcodes/aarch64-opc.c | 9 +- opcodes/aarch64-tbl.h | 73 +- opcodes/arc-dis.c | 41 +- opcodes/arc-ext-tbl.h | 7 - opcodes/arc-opc.c | 4 +- opcodes/arc-tbl.h | 3698 +- opcodes/arm-dis.c | 36 +- opcodes/bpf-desc.c | 68 +- opcodes/bpf-opc.c | 104 +- opcodes/bpf-opc.h | 7 +- opcodes/i386-dis-evex-len.h | 315 + opcodes/i386-dis-evex-mod.h | 42 + opcodes/i386-dis-evex-prefix.h | 1969 + opcodes/i386-dis-evex-reg.h | 51 + opcodes/i386-dis-evex-w.h | 1110 + opcodes/i386-dis-evex.h | 3397 -- opcodes/i386-dis.c | 232 +- opcodes/i386-gen.c | 42 +- opcodes/i386-init.h | 213 +- opcodes/i386-opc.h | 30 +- opcodes/i386-opc.tbl | 556 +- opcodes/i386-reg.tbl | 14 +- opcodes/i386-tbl.h |54709 +++++++++----------- opcodes/riscv-dis.c | 6 +- opcodes/riscv-opc.c | 62 +- readline/.gitignore | 37 + readline/CHANGELOG | 258 + readline/CHANGES | 466 + readline/ChangeLog.gdb | 34 + readline/INSTALL | 2 +- readline/MANIFEST | 12 +- readline/Makefile.in | 91 +- readline/NEWS | 375 +- readline/README | 11 +- readline/aclocal.m4 | 145 +- readline/bind.c | 1069 +- readline/callback.c | 129 +- readline/chardefs.h | 20 +- readline/colors.c | 294 + readline/colors.h | 126 + readline/compat.c | 29 +- readline/complete.c | 685 +- readline/config.h.in | 53 +- readline/configure | 627 +- readline/configure.ac | 320 + readline/configure.in | 307 - readline/display.c | 1259 +- readline/doc/Makefile.in | 21 +- readline/doc/history.3 | 46 +- readline/doc/history.texi | 26 +- readline/doc/hstech.texi | 49 +- readline/doc/hsuser.texi | 77 +- readline/doc/readline.3 | 244 +- readline/doc/rlman.texi | 27 +- readline/doc/rltech.texi | 363 +- readline/doc/rluser.texi | 468 +- readline/doc/rluserman.texi | 27 +- readline/doc/texi2dvi | 2316 +- readline/doc/texi2html | 6 +- readline/doc/version.texi | 12 +- readline/emacs_keymap.c | 8 +- readline/examples/Makefile.in | 75 +- readline/examples/excallback.c | 7 +- readline/examples/fileman.c | 18 + readline/examples/hist_erasedups.c | 121 + readline/examples/hist_purgecmd.c | 151 + readline/examples/histexamp.c | 3 + readline/examples/readlinebuf.h | 6 +- readline/examples/rl-callbacktest.c | 115 + readline/examples/rl.c | 1 + readline/examples/rlbasic.c | 29 + readline/examples/rlcat.c | 2 +- readline/examples/rlevent.c | 7 + readline/examples/rlfe/config.h.in | 6 +- readline/examples/rlfe/configure | 15 +- readline/examples/rlfe/configure.in | 4 +- readline/examples/rlfe/extern.h | 2 +- readline/examples/rlfe/os.h | 8 +- readline/examples/rlfe/rlfe.c | 9 +- readline/examples/rlkeymaps.c | 61 + readline/examples/rlptytest.c | 14 +- readline/examples/rltest.c | 1 + readline/examples/rlversion.c | 1 + readline/funmap.c | 24 +- readline/histexpand.c | 271 +- readline/histfile.c | 346 +- readline/histlib.h | 15 +- readline/history.c | 196 +- readline/history.h | 30 +- readline/histsearch.c | 125 +- readline/input.c | 181 +- readline/isearch.c | 240 +- readline/keymaps.c | 30 +- readline/keymaps.h | 3 + readline/kill.c | 210 +- readline/macro.c | 103 +- readline/mbutil.c | 167 +- readline/misc.c | 122 +- readline/nls.c | 82 +- readline/parens.c | 41 +- readline/parse-colors.c | 440 + readline/parse-colors.h | 46 + readline/patchlevel | 2 +- readline/posixdir.h | 14 +- readline/posixjmp.h | 20 +- readline/readline.c | 381 +- readline/readline.h | 88 +- readline/readline.pc.in | 12 + readline/rlconf.h | 24 +- readline/rldefs.h | 10 +- readline/rlmbutil.h | 61 +- readline/rlprivate.h | 77 +- readline/rlstdc.h | 12 + readline/rltty.c | 184 +- readline/rltypedefs.h | 11 +- readline/savestring.c | 5 +- readline/search.c | 230 +- readline/shell.c | 64 +- readline/shlib/Makefile.in | 85 +- readline/signals.c | 229 +- readline/support/config.guess | 56 +- readline/support/config.rpath | 373 +- readline/support/config.sub | 5 +- readline/support/mkdist | 15 +- readline/support/shlib-install | 11 +- readline/support/shobj-conf | 71 +- readline/tcap.h | 2 +- readline/terminal.c | 136 +- readline/text.c | 407 +- readline/tilde.c | 53 +- readline/undo.c | 108 +- readline/util.c | 127 +- readline/vi_keymap.c | 7 +- readline/vi_mode.c | 805 +- readline/xfree.c | 12 +- readline/xmalloc.c | 12 +- readline/xmalloc.h | 3 - src-release.sh | 6 +- 1846 files changed, 105036 insertions(+), 70466 deletions(-) create mode 100644 binutils/testsuite/gentestdlls.c create mode 100644 gas/testsuite/gas/aarch64/cpu-cortex-a34.d create mode 100644 gas/testsuite/gas/aarch64/cpu-cortex-a65.d create mode 100644 gas/testsuite/gas/aarch64/cpu-cortex-a65ae.d create mode 100644 gas/testsuite/gas/aarch64/cpu-cortex-a76ae.d create mode 100644 gas/testsuite/gas/aarch64/cpu-cortex-a77.d create mode 100644 gas/testsuite/gas/aarch64/nop-asm.s create mode 100644 gas/testsuite/gas/aarch64/sve-movprfx_27.d create mode 100644 gas/testsuite/gas/aarch64/sve-movprfx_27.s create mode 100644 gas/testsuite/gas/arm/float16-bad.d create mode 100644 gas/testsuite/gas/arm/float16-bad.l create mode 100644 gas/testsuite/gas/arm/float16-bad.s create mode 100644 gas/testsuite/gas/arm/float16-be.d create mode 100644 gas/testsuite/gas/arm/float16-eabi-alternative-format.d create mode 100644 gas/testsuite/gas/arm/float16-eabi-ieee-format.d create mode 100644 gas/testsuite/gas/arm/float16-eabi-no-format.d create mode 100644 gas/testsuite/gas/arm/float16-eabi.s create mode 100644 gas/testsuite/gas/arm/float16-format-bad.d create mode 100644 gas/testsuite/gas/arm/float16-format-bad.l create mode 100644 gas/testsuite/gas/arm/float16-format-bad.s create mode 100644 gas/testsuite/gas/arm/float16-format-opt-bad.d create mode 100644 gas/testsuite/gas/arm/float16-format-opt-bad.l create mode 100644 gas/testsuite/gas/arm/float16-le.d create mode 100644 gas/testsuite/gas/arm/float16.s create mode 100644 gas/testsuite/gas/arm/mve-vqdmlah-bad.d create mode 100644 gas/testsuite/gas/arm/mve-vqdmlah-bad.l create mode 100644 gas/testsuite/gas/arm/mve-vqdmlah-bad.s create mode 100644 gas/testsuite/gas/arm/mve-vqdmlash-bad.d create mode 100644 gas/testsuite/gas/arm/mve-vqdmlash-bad.l create mode 100644 gas/testsuite/gas/arm/mve-vqdmlash-bad.s create mode 100644 gas/testsuite/gas/arm/pr24907.d create mode 100644 gas/testsuite/gas/arm/pr24907.s create mode 100644 gas/testsuite/gas/arm/smc-bad.d create mode 100644 gas/testsuite/gas/arm/smc-bad.l create mode 100644 gas/testsuite/gas/arm/smc-bad.s create mode 100644 gas/testsuite/gas/bpf/data-be.d create mode 100644 gas/testsuite/gas/bpf/data.d create mode 100644 gas/testsuite/gas/bpf/data.s create mode 100644 gas/testsuite/gas/elf/type-2.e create mode 100644 gas/testsuite/gas/elf/type-2.l create mode 100644 gas/testsuite/gas/elf/type-2.s create mode 100644 gas/testsuite/gas/i386/avx-16bit.d create mode 100644 gas/testsuite/gas/i386/avx-16bit.s create mode 100644 gas/testsuite/gas/i386/avx512f-16bit.d create mode 100644 gas/testsuite/gas/i386/avx512f-16bit.s create mode 100644 gas/testsuite/gas/i386/bmi-16bit.d create mode 100644 gas/testsuite/gas/i386/bmi-16bit.s create mode 100644 gas/testsuite/gas/i386/bmi2-16bit.d create mode 100644 gas/testsuite/gas/i386/bmi2-16bit.s create mode 100644 gas/testsuite/gas/i386/lwp-16bit.d create mode 100644 gas/testsuite/gas/i386/lwp-16bit.s create mode 100644 gas/testsuite/gas/i386/optimize-2b.d create mode 100644 gas/testsuite/gas/i386/oversized16.l create mode 100644 gas/testsuite/gas/i386/oversized16.s create mode 100644 gas/testsuite/gas/i386/oversized64.l create mode 100644 gas/testsuite/gas/i386/oversized64.s create mode 100644 gas/testsuite/gas/i386/sse2-16bit.d create mode 100644 gas/testsuite/gas/i386/sse2-16bit.s create mode 100644 gas/testsuite/gas/i386/tbm-16bit.d create mode 100644 gas/testsuite/gas/i386/tbm-16bit.s create mode 100644 gas/testsuite/gas/i386/x86-64-avx-swap-2.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx-swap-2.s create mode 100644 gas/testsuite/gas/i386/x86-64-optimize-3b.d create mode 100644 gas/testsuite/gas/mips/insn-isa-mode.d create mode 100644 gas/testsuite/gas/mips/insn-isa-mode.s create mode 100644 gas/testsuite/gas/ppc/groupnop.d create mode 100644 gas/testsuite/gas/ppc/groupnop.s create mode 100644 gas/testsuite/gas/riscv/alias-csr.d create mode 100644 gas/testsuite/gas/riscv/alias-csr.s create mode 100644 gas/testsuite/gas/riscv/no-aliases-csr.d mode change 100644 => 100755 gas/testsuite/gas/xstormy16/allinsn.sh mode change 100644 => 100755 gas/testsuite/gas/xstormy16/gcc.sh create mode 100644 gdb/aarch32-tdep.c create mode 100644 gdb/aarch32-tdep.h create mode 100644 gdb/arch/aarch32.c create mode 100644 gdb/arch/aarch32.h delete mode 100644 gdb/common/agent.c delete mode 100644 gdb/common/agent.h delete mode 100644 gdb/common/byte-vector.h delete mode 100644 gdb/common/common-debug.c delete mode 100644 gdb/common/common-defs.h delete mode 100644 gdb/common/common-utils.c delete mode 100644 gdb/common/common-utils.h delete mode 100644 gdb/common/common.host delete mode 100755 gdb/common/create-version.sh delete mode 100644 gdb/common/def-vector.h delete mode 100644 gdb/common/environ.c delete mode 100644 gdb/common/errors.c delete mode 100644 gdb/common/filestuff.c delete mode 100644 gdb/common/format.h delete mode 100644 gdb/common/forward-scope-exit.h delete mode 100644 gdb/common/gdb_optional.h delete mode 100644 gdb/common/gdb_tilde_expand.c delete mode 100644 gdb/common/job-control.c delete mode 100644 gdb/common/job-control.h delete mode 100644 gdb/common/netstuff.c delete mode 100644 gdb/common/pathstuff.c delete mode 100644 gdb/common/pathstuff.h delete mode 100644 gdb/common/rsp-low.h delete mode 100644 gdb/common/scope-exit.h delete mode 100644 gdb/common/scoped_mmap.c delete mode 100644 gdb/common/tdesc.c delete mode 100644 gdb/common/valid-expr.h delete mode 100644 gdb/features/aarch64.xml create mode 100644 gdb/features/arm/arm-core.c create mode 100644 gdb/features/arm/arm-fpa.c create mode 100644 gdb/features/arm/arm-m-profile-with-fpa.c create mode 100644 gdb/features/arm/arm-m-profile-with-fpa.xml create mode 100644 gdb/features/arm/arm-m-profile.c create mode 100644 gdb/features/arm/arm-vfpv2.c create mode 100644 gdb/features/arm/arm-vfpv3.c delete mode 100644 gdb/features/arm/arm-with-iwmmxt.c delete mode 100644 gdb/features/arm/arm-with-iwmmxt.xml delete mode 100644 gdb/features/arm/arm-with-m-fpa-layout.c delete mode 100644 gdb/features/arm/arm-with-m-fpa-layout.xml delete mode 100644 gdb/features/arm/arm-with-m-vfp-d16.c delete mode 100644 gdb/features/arm/arm-with-m-vfp-d16.xml delete mode 100644 gdb/features/arm/arm-with-m.c delete mode 100644 gdb/features/arm/arm-with-m.xml delete mode 100644 gdb/features/arm/arm-with-neon.c delete mode 100644 gdb/features/arm/arm-with-neon.xml delete mode 100644 gdb/features/arm/arm-with-vfpv2.c delete mode 100644 gdb/features/arm/arm-with-vfpv2.xml delete mode 100644 gdb/features/arm/arm-with-vfpv3.c delete mode 100644 gdb/features/arm/arm-with-vfpv3.xml create mode 100644 gdb/features/arm/xscale-iwmmxt.c delete mode 100644 gdb/features/i386/amd64-avx-avx512-linux.xml delete mode 100644 gdb/features/i386/amd64-avx-avx512.xml delete mode 100644 gdb/features/i386/amd64-avx-linux.xml delete mode 100644 gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.xml delete mode 100644 gdb/features/i386/amd64-avx-mpx-avx512-pku.xml delete mode 100644 gdb/features/i386/amd64-avx-mpx-linux.xml delete mode 100644 gdb/features/i386/amd64-avx-mpx.xml delete mode 100644 gdb/features/i386/amd64-avx.xml delete mode 100644 gdb/features/i386/amd64-linux.xml delete mode 100644 gdb/features/i386/amd64-mpx-linux.xml delete mode 100644 gdb/features/i386/amd64-mpx.xml delete mode 100644 gdb/features/i386/amd64.xml delete mode 100644 gdb/features/i386/i386-avx-avx512-linux.xml delete mode 100644 gdb/features/i386/i386-avx-avx512.xml delete mode 100644 gdb/features/i386/i386-avx-linux.xml delete mode 100644 gdb/features/i386/i386-avx-mpx-avx512-pku-linux.xml delete mode 100644 gdb/features/i386/i386-avx-mpx-avx512-pku.xml delete mode 100644 gdb/features/i386/i386-avx-mpx-linux.xml delete mode 100644 gdb/features/i386/i386-avx-mpx.xml delete mode 100644 gdb/features/i386/i386-avx.xml delete mode 100644 gdb/features/i386/i386-linux.xml delete mode 100644 gdb/features/i386/i386-mmx-linux.xml delete mode 100644 gdb/features/i386/i386-mmx.xml delete mode 100644 gdb/features/i386/i386-mpx-linux.xml delete mode 100644 gdb/features/i386/i386-mpx.xml delete mode 100644 gdb/features/i386/i386.xml delete mode 100644 gdb/features/i386/x32-avx-avx512-linux.xml delete mode 100644 gdb/features/i386/x32-avx-linux.xml delete mode 100644 gdb/features/i386/x32-linux.xml create mode 100644 gdb/gdbserver/linux-aarch32-tdesc.c create mode 100644 gdb/gdbserver/linux-aarch32-tdesc.h delete mode 100644 gdb/gdbserver/linux-aarch64-tdesc-selftest.c create mode 100644 gdb/gdbserver/linux-arm-tdesc.c create mode 100644 gdb/gdbserver/linux-arm-tdesc.h delete mode 100644 gdb/gdbserver/linux-x86-tdesc-selftest.c create mode 100644 gdb/gdbsupport/agent.c create mode 100644 gdb/gdbsupport/agent.h rename gdb/{common => gdbsupport}/array-view.h (100%) rename gdb/{common => gdbsupport}/ax.def (100%) rename gdb/{common => gdbsupport}/break-common.h (100%) rename gdb/{common => gdbsupport}/btrace-common.c (100%) rename gdb/{common => gdbsupport}/btrace-common.h (100%) rename gdb/{common => gdbsupport}/buffer.c (100%) rename gdb/{common => gdbsupport}/buffer.h (100%) create mode 100644 gdb/gdbsupport/byte-vector.h rename gdb/{common => gdbsupport}/cleanups.c (100%) rename gdb/{common => gdbsupport}/cleanups.h (100%) create mode 100644 gdb/gdbsupport/common-debug.c rename gdb/{common => gdbsupport}/common-debug.h (100%) create mode 100644 gdb/gdbsupport/common-defs.h rename gdb/{common => gdbsupport}/common-exceptions.c (100%) rename gdb/{common => gdbsupport}/common-exceptions.h (100%) rename gdb/{common => gdbsupport}/common-gdbthread.h (100%) rename gdb/{common => gdbsupport}/common-inferior.h (100%) rename gdb/{common => gdbsupport}/common-regcache.c (100%) rename gdb/{common => gdbsupport}/common-regcache.h (100%) rename gdb/{common => gdbsupport}/common-types.h (100%) create mode 100644 gdb/gdbsupport/common-utils.c create mode 100644 gdb/gdbsupport/common-utils.h create mode 100644 gdb/gdbsupport/common.host rename gdb/{common => gdbsupport}/common.m4 (100%) create mode 100755 gdb/gdbsupport/create-version.sh create mode 100644 gdb/gdbsupport/def-vector.h rename gdb/{common => gdbsupport}/default-init-alloc.h (100%) rename gdb/{common => gdbsupport}/enum-flags.h (100%) create mode 100644 gdb/gdbsupport/environ.c rename gdb/{common => gdbsupport}/environ.h (100%) create mode 100644 gdb/gdbsupport/errors.c rename gdb/{common => gdbsupport}/errors.h (100%) rename gdb/{common => gdbsupport}/fileio.c (100%) rename gdb/{common => gdbsupport}/fileio.h (100%) create mode 100644 gdb/gdbsupport/filestuff.c rename gdb/{common => gdbsupport}/filestuff.h (100%) rename gdb/{common => gdbsupport}/filtered-iterator.h (100%) rename gdb/{common => gdbsupport}/format.c (100%) create mode 100644 gdb/gdbsupport/format.h create mode 100644 gdb/gdbsupport/forward-scope-exit.h rename gdb/{common => gdbsupport}/function-view.h (100%) rename gdb/{common => gdbsupport}/gdb_assert.h (100%) rename gdb/{common => gdbsupport}/gdb_locale.h (100%) create mode 100644 gdb/gdbsupport/gdb_optional.h rename gdb/{common => gdbsupport}/gdb_proc_service.h (100%) rename gdb/{common => gdbsupport}/gdb_ref_ptr.h (100%) rename gdb/{common => gdbsupport}/gdb_setjmp.h (100%) rename gdb/{common => gdbsupport}/gdb_signals.h (100%) rename gdb/{common => gdbsupport}/gdb_splay_tree.h (100%) rename gdb/{common => gdbsupport}/gdb_string_view.h (100%) rename gdb/{common => gdbsupport}/gdb_string_view.tcc (100%) rename gdb/{common => gdbsupport}/gdb_sys_time.h (100%) create mode 100644 gdb/gdbsupport/gdb_tilde_expand.c rename gdb/{common => gdbsupport}/gdb_tilde_expand.h (100%) rename gdb/{common => gdbsupport}/gdb_unique_ptr.h (100%) rename gdb/{common => gdbsupport}/gdb_unlinker.h (100%) rename gdb/{common => gdbsupport}/gdb_vecs.c (100%) rename gdb/{common => gdbsupport}/gdb_vecs.h (100%) rename gdb/{common => gdbsupport}/gdb_wait.h (100%) rename gdb/{common => gdbsupport}/hash_enum.h (100%) rename gdb/{common => gdbsupport}/host-defs.h (100%) create mode 100644 gdb/gdbsupport/job-control.c create mode 100644 gdb/gdbsupport/job-control.h rename gdb/{common => gdbsupport}/mingw-strerror.c (100%) create mode 100644 gdb/gdbsupport/netstuff.c rename gdb/{common => gdbsupport}/netstuff.h (100%) rename gdb/{common => gdbsupport}/new-op.c (100%) rename gdb/{common => gdbsupport}/next-iterator.h (100%) rename gdb/{common => gdbsupport}/observable.h (100%) rename gdb/{common => gdbsupport}/offset-type.h (100%) create mode 100644 gdb/gdbsupport/pathstuff.c create mode 100644 gdb/gdbsupport/pathstuff.h rename gdb/{common => gdbsupport}/poison.h (100%) rename gdb/{common => gdbsupport}/posix-strerror.c (100%) rename gdb/{common => gdbsupport}/preprocessor.h (100%) rename gdb/{common => gdbsupport}/print-utils.c (100%) rename gdb/{common => gdbsupport}/print-utils.h (100%) rename gdb/{common => gdbsupport}/ptid.c (100%) rename gdb/{common => gdbsupport}/ptid.h (100%) rename gdb/{common => gdbsupport}/refcounted-object.h (100%) rename gdb/{common => gdbsupport}/rsp-low.c (100%) create mode 100644 gdb/gdbsupport/rsp-low.h rename gdb/{common => gdbsupport}/run-time-clock.c (100%) rename gdb/{common => gdbsupport}/run-time-clock.h (100%) rename gdb/{common => gdbsupport}/safe-iterator.h (100%) create mode 100644 gdb/gdbsupport/scope-exit.h rename gdb/{common => gdbsupport}/scoped_fd.h (100%) create mode 100644 gdb/gdbsupport/scoped_mmap.c rename gdb/{common => gdbsupport}/scoped_mmap.h (100%) rename gdb/{common => gdbsupport}/scoped_restore.h (100%) rename gdb/{common => gdbsupport}/selftest.c (100%) rename gdb/{common => gdbsupport}/selftest.h (100%) rename gdb/{common => gdbsupport}/signals-state-save-restore.c (100%) rename gdb/{common => gdbsupport}/signals-state-save-restore.h (100%) rename gdb/{common => gdbsupport}/signals.c (100%) rename gdb/{common => gdbsupport}/symbol.h (100%) create mode 100644 gdb/gdbsupport/tdesc.c rename gdb/{common => gdbsupport}/tdesc.h (100%) rename gdb/{common => gdbsupport}/traits.h (100%) rename gdb/{common => gdbsupport}/underlying.h (100%) create mode 100644 gdb/gdbsupport/valid-expr.h rename gdb/{common => gdbsupport}/vec.c (100%) rename gdb/{common => gdbsupport}/vec.h (100%) rename gdb/{common => gdbsupport}/version.h (100%) rename gdb/{common => gdbsupport}/x86-xstate.h (100%) rename gdb/{common => gdbsupport}/xml-utils.c (100%) rename gdb/{common => gdbsupport}/xml-utils.h (100%) delete mode 100644 gdb/libmcheck.m4 delete mode 100644 gdb/regformats/aarch64.dat delete mode 100644 gdb/regformats/i386/amd64-avx-avx512-linux.dat delete mode 100644 gdb/regformats/i386/amd64-avx-linux.dat delete mode 100644 gdb/regformats/i386/amd64-avx-mpx-avx512-pku-linux.dat delete mode 100644 gdb/regformats/i386/amd64-avx-mpx-linux.dat delete mode 100644 gdb/regformats/i386/amd64-linux.dat delete mode 100644 gdb/regformats/i386/amd64-mpx-linux.dat delete mode 100644 gdb/regformats/i386/amd64.dat delete mode 100644 gdb/regformats/i386/i386-avx-avx512-linux.dat delete mode 100644 gdb/regformats/i386/i386-avx-linux.dat delete mode 100644 gdb/regformats/i386/i386-avx-mpx-avx512-pku-linux.dat delete mode 100644 gdb/regformats/i386/i386-avx-mpx-linux.dat delete mode 100644 gdb/regformats/i386/i386-linux.dat delete mode 100644 gdb/regformats/i386/i386-mmx-linux.dat delete mode 100644 gdb/regformats/i386/i386-mpx-linux.dat delete mode 100644 gdb/regformats/i386/i386.dat delete mode 100644 gdb/regformats/i386/x32-avx-avx512-linux.dat delete mode 100644 gdb/regformats/i386/x32-avx-linux.dat delete mode 100644 gdb/regformats/i386/x32-linux.dat create mode 100644 gdb/testsuite/gdb.ada/display_nested.exp create mode 100644 gdb/testsuite/gdb.ada/display_nested/foo.adb create mode 100644 gdb/testsuite/gdb.ada/display_nested/pack.adb create mode 100644 gdb/testsuite/gdb.ada/display_nested/pack.ads create mode 100644 gdb/testsuite/gdb.arch/aarch64-prologue.c create mode 100644 gdb/testsuite/gdb.arch/aarch64-prologue.exp create mode 100644 gdb/testsuite/gdb.arch/amd64-break-on-asm-line.S create mode 100644 gdb/testsuite/gdb.arch/amd64-break-on-asm-line.exp create mode 100644 gdb/testsuite/gdb.arch/arm-cmse-sgstubs.c create mode 100644 gdb/testsuite/gdb.arch/arm-cmse-sgstubs.exp create mode 100644 gdb/testsuite/gdb.arch/riscv-bp-infcall.c create mode 100644 gdb/testsuite/gdb.arch/riscv-bp-infcall.exp create mode 100644 gdb/testsuite/gdb.base/info-types.c create mode 100644 gdb/testsuite/gdb.base/info-types.exp create mode 100644 gdb/testsuite/gdb.base/info_sources.c create mode 100644 gdb/testsuite/gdb.base/info_sources.exp create mode 100644 gdb/testsuite/gdb.base/info_sources_base.c create mode 100644 gdb/testsuite/gdb.base/with.c create mode 100644 gdb/testsuite/gdb.base/with.exp create mode 100644 gdb/testsuite/gdb.cp/except-multi-location-lib.cc create mode 100644 gdb/testsuite/gdb.cp/except-multi-location-main.cc create mode 100644 gdb/testsuite/gdb.cp/except-multi-location.exp create mode 100644 gdb/testsuite/gdb.dwarf2/ada-linkage-name.c create mode 100644 gdb/testsuite/gdb.dwarf2/ada-linkage-name.exp create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-ranges-func-hi-cold.c create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-ranges-func-lo-cold.c delete mode 100644 gdb/testsuite/gdb.dwarf2/dw2-ranges-func.c create mode 100644 gdb/testsuite/gdb.testsuite/foreach_with_prefix.exp create mode 100644 gdb/testsuite/gdb.tui/basic.exp create mode 100644 gdb/testsuite/gdb.tui/empty.exp create mode 100644 gdb/testsuite/gdb.tui/list.exp create mode 100644 gdb/testsuite/gdb.tui/main.exp create mode 100644 gdb/testsuite/gdb.tui/regs.exp create mode 100644 gdb/testsuite/gdb.tui/resize.exp create mode 100644 gdb/testsuite/lib/tuiterm.exp delete mode 100644 gdb/tui/tui-windata.c delete mode 100644 gdb/tui/tui-windata.h create mode 100644 gdb/unittests/help-doc-selftests.c create mode 100644 ld/scripttempl/elf64bpf.sc create mode 100644 ld/testsuite/ld-arc/relax-local-pic.d create mode 100644 ld/testsuite/ld-arc/relax-local-pic.s create mode 100644 ld/testsuite/ld-arm/cmse_main.s create mode 100644 ld/testsuite/ld-arm/cmse_main_sec_debug.d create mode 100644 ld/testsuite/ld-arm/cmse_sec_debug.s create mode 100644 ld/testsuite/ld-elf/pr24819.d create mode 100644 ld/testsuite/ld-elf/pr24819.s create mode 100644 ld/testsuite/ld-elf/size-1.d create mode 100644 ld/testsuite/ld-elf/size-1.s create mode 100644 ld/testsuite/ld-elf/size-1.t create mode 100644 ld/testsuite/ld-elf/size-2.d create mode 100644 ld/testsuite/ld-elf/size-2.s create mode 100644 ld/testsuite/ld-elf/size-2.t create mode 100644 ld/testsuite/ld-mips-elf/hash1.d delete mode 100644 ld/testsuite/ld-mips-elf/hash1a.d delete mode 100644 ld/testsuite/ld-mips-elf/hash1b.d delete mode 100644 ld/testsuite/ld-mips-elf/hash1c.d create mode 100644 ld/testsuite/ld-mips-elf/hash2.d create mode 100644 ld/testsuite/ld-mips-elf/start.s create mode 100644 ld/testsuite/ld-powerpc/callstub-1.d create mode 100644 ld/testsuite/ld-powerpc/callstub-1.s create mode 100644 ld/testsuite/ld-powerpc/callstub-2.d create mode 100644 ld/testsuite/ld-powerpc/callstub-2.s create mode 100644 ld/testsuite/ld-powerpc/tlsgd.d create mode 100644 ld/testsuite/ld-powerpc/tlsgd.s create mode 100644 ld/testsuite/ld-powerpc/tlsie.d create mode 100644 ld/testsuite/ld-powerpc/tlsie.s delete mode 100644 ld/testsuite/ld-powerpc/tlsld32.d create mode 100644 ld/testsuite/ld-powerpc/tlsldopt.d copy ld/testsuite/ld-powerpc/{tlsld.s => tlsldopt.s} (100%) create mode 100644 ld/testsuite/ld-powerpc/tlsldopt32.d rename ld/testsuite/ld-powerpc/{tlsld32.s => tlsldopt32.s} (100%) create mode 100644 ld/testsuite/ld-riscv-elf/c-lui-2.d create mode 100644 ld/testsuite/ld-riscv-elf/c-lui-2.ld create mode 100644 ld/testsuite/ld-riscv-elf/c-lui-2.s delete mode 100644 ld/testsuite/ld-scripts/size-1.d delete mode 100644 ld/testsuite/ld-scripts/size-1.s delete mode 100644 ld/testsuite/ld-scripts/size-1.t delete mode 100644 ld/testsuite/ld-scripts/size-2.d delete mode 100644 ld/testsuite/ld-scripts/size-2.s delete mode 100644 ld/testsuite/ld-scripts/size-2.t delete mode 100644 ld/testsuite/ld-scripts/size.exp create mode 100644 ld/testsuite/ld-x86-64/pr24721-x32.d create mode 100644 ld/testsuite/ld-x86-64/pr24721.d create mode 100644 ld/testsuite/ld-x86-64/pr24721.map create mode 100644 ld/testsuite/ld-x86-64/pr24721a.s create mode 100644 ld/testsuite/ld-x86-64/pr24721b.s create mode 100644 ld/testsuite/ld-x86-64/pr24905-x32.d create mode 100644 ld/testsuite/ld-x86-64/pr24905.d create mode 100644 ld/testsuite/ld-x86-64/pr24905.s create mode 100644 ld/testsuite/ld-x86-64/pr24905.t create mode 100644 libctf/ctf-string.c create mode 100644 libiberty/rust-demangle.h create mode 100644 opcodes/i386-dis-evex-len.h create mode 100644 opcodes/i386-dis-evex-mod.h create mode 100644 opcodes/i386-dis-evex-prefix.h create mode 100644 opcodes/i386-dis-evex-reg.h create mode 100644 opcodes/i386-dis-evex-w.h create mode 100644 readline/.gitignore create mode 100644 readline/colors.c create mode 100644 readline/colors.h create mode 100644 readline/configure.ac delete mode 100644 readline/configure.in create mode 100644 readline/examples/hist_erasedups.c create mode 100644 readline/examples/hist_purgecmd.c create mode 100644 readline/examples/rl-callbacktest.c create mode 100644 readline/examples/rlbasic.c create mode 100644 readline/examples/rlkeymaps.c create mode 100644 readline/parse-colors.c create mode 100644 readline/parse-colors.h create mode 100644 readline/readline.pc.in First 500 lines of diff: diff --git a/ChangeLog b/ChangeLog index c2d0274..76c121f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,95 @@ +2019-08-19 Tom Tromey + + * configure: Rebuild. + * configure.ac: Add --with-static-standard-libraries. + +2019-08-09 Nick Clifton + + * libiberty: Sync with gcc. Bring in: + 2019-08-08 Martin Liska + + PR bootstrap/91352 + * lrealpath.c (is_valid_fd): New function. + + 2019-07-24 Martin Liska + + PR lto/91228 + * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): + Find first '\0' starting from gnu_lto + 1. + + 2019-07-12 Ren Kimura + + * simple-object-elf.c (simple_object_elf_match): Check zero value shstrndx. + This fixes a Bug 90924. + + 2019-07-22 Martin Liska + + * simple-object-elf.c (simple_object_elf_copy_lto_debug_sections): + Do not search for gnu_lto_v1, but search for first '\0'. + + 2019-07-18 Eduard-Mihai Burtescu + + * cplus-dem.c: Include rust-demangle.h. + * rust-demangle.c: Include rust-demangle.h. + * rust-demangle.h: New file. + + 2019-05-31 Michael Forney + + * cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__ + is non-zero. + + 2019-04-30 Ben L + + * d-demangle.c (dlang_parse_assocarray): Correctly handle error result. + * testsuite/d-demangle-expected: Add testcase. + + * d-demangle.c (dlang_parse_tuple): Correctly handle error result. + * testsuite/d-demangle-expected: Add testcase. + + * d-demangle.c (dlang_parse_structlit): Correctly handle error result. + * testsuite/d-demangle-expected: Add testcase. + + * d-demangle.c (dlang_parse_arrayliteral): Correctly handle error result. + * testsuite/d-demangle-expected: Add testcase. + + * d-demangle.c (dlang_parse_integer): Fix stack underflow. + * testsuite/d-demangle-expected: Add testcase. + + * cp-demangle (d_print_comp_inner): Guard against a NULL 'typed_name'. + * testsuite/demangle-expected: Add testcase. + + * cp-demangle.c (d_encoding): Guard against NULL return values from + d_right (dc). + * testsuite/demangle-expected: Add testcase. + + 2019-04-29 Ben L + + * cp-demangle.c (d_expression_1): Don't peek ahead unless the current + char is valid. + * testsuite/demangle-expected: Add testcase. + + 2019-04-10 Nick Clifton + + PR 89394 + * cp-demangle.c (cplus_demangle_fill_name): Reject negative + lengths. + (d_count_templates_scopes): Replace num_templates and num_scopes + parameters with a struct d_print_info pointer parameter. Adjust + body of the function accordingly. Add recursion counter and check + that the recursion limit is not reached. + (d_print_init): Pass dpi parameter to d_count_templates_scopes. + Reset recursion counter afterwards, unless the recursion limit was + reached. + +2019-07-13 Joel Brobecker + + * src-release (getver): If $tool/gdbsupport/create-version.sh + exists, use that to determine the version number. + +2019-06-21 Andreas Schwab + + * src-release.sh (GDB_SUPPORT_DIRS): Add gnulib. + 2019-06-14 Tom Tromey * MAINTAINERS: Add gnulib. diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f40f6ed..97d3726 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,523 @@ +2019-08-20 Dennis Zhang + + * cpu-aarch64.c: New entries for Cortex-A34, Cortex-A65, + Cortex-A77, cortex-A65AE, and Cortex-A76AE. + +2019-08-20 Tamar Christina + + * elf32-arm.c (elf32_thumb2_plt_entry, elf32_arm_plt_thumb_stub, + elf32_arm_stub_long_branch_v4t_thumb_thumb, + elf32_arm_stub_long_branch_v4t_thumb_arm, + elf32_arm_stub_short_branch_v4t_thumb_arm, + elf32_arm_stub_long_branch_v4t_thumb_arm_pic, + elf32_arm_stub_long_branch_v4t_thumb_thumb_pic, + elf32_arm_stub_long_branch_v4t_thumb_tls_pic): Change nop to branch to + previous instruction. + +2019-08-19 Tom Tromey + + * dwarf2.c (_bfd_dwarf2_find_symbol_bias): Create hash table + holding symbols. + +2019-08-19 Alan Modra + + * elf64-ppc.c (struct ppc64_elf_obj_tdata): Rename has_gotrel + to has_optrel. + (struct _ppc64_elf_section_data): Likewise. + (ppc64_elf_check_relocs): Set has_optrel for more relocs. + (ppc64_elf_edit_toc): Do ha/lo insn checks in GOT loop rather + than TOC loop. Check PLT16 insns too. + +2019-08-16 H.J. Lu + + PR ld/24905 + * elf64-x86-64.c (elf_x86_64_check_relocs): Move PIC check for + PC-relative relocations back to ... + (elf_x86_64_relocate_section): Here. + +2019-08-16 Martin Liska + + PR ld/24912 + * elflink.c: Report error only for not relocatable. + * linker.c (_bfd_generic_link_add_one_symbol): Do not handle + here lto_slim_object as it's handled in caller. + +2019-08-16 Alan Modra + + * elf32-ppc.c (ppc_elf_relocate_section): Optimize unaligned relocs. + +2019-08-15 Jim Wilson + + * elfnn-riscv.c (perform_relocation) : If + RISCV_CONST_HIGH_PART (value) is zero, then convert c.lui instruction + to c.li instruction, and use ENCODE_RVC_IMM to set value. + +2019-08-15 Tom Tromey + + * dwarf2.c (scan_unit_for_symbols): Check for end of CU, not end + of section. + +2019-08-14 Alan Modra + + PR 24623 + * dwarf2.c (stash_comp_unit): New function, extracted from.. + (_bfd_dwarf2_find_nearest_line): ..here. + (find_abstract_instance): Parse comp units and decode line info + as needed. + +2019-08-14 Alan Modra + + * dwarf2.c (comp_unit_maybe_decode_line_info): Declare. + (comp_unit_find_nearest_line): Use it here.. + (_bfd_dwarf2_find_symbol_bias): ..and here. + +2019-08-14 Alan Modra + + * dwarf2.c (_bfd_dwarf2_find_nearest_line): Remove addr_size parameter. + * libbfd-in.h (_bfd_dwarf2_find_nearest_line): Update prototype. + * coffgen.c (coff_find_nearest_line_with_names): Adjust + _bfd_dwarf2_find_nearest_line calls. + * elf.c (_bfd_elf_find_nearest_line, _bfd_elf_find_line): Likewise. + * elf32-arm.c (elf32_arm_find_nearest_line): Likewise. + * elf64-alpha.c (elf64_alpha_find_nearest_line): Likewise. + * elfnn-aarch64.c (elfNN_aarch64_find_nearest_line): Likewise. + * elfxx-mips.c (_bfd_mips_elf_find_nearest_line): Likewise. + * mach-o.c (bfd_mach_o_find_nearest_line): Likewise. + * libbfd.h: Regenerate. + +2019-08-09 Mihailo Stojanovic + + * elf-bfd.h (struct elf_backend_data): New members. + * elflink.c (_bfd_elf_link_create_dynamic_sections): Create + .gnu.hash section if necessary. + (struct collect_gnu_hash_codes): New member. + (elf_gnu_hash_process_symidx): New function name. + (elf_renumber_gnu_hash_syms): Ignore local and undefined + symbols. Record xlat location for every symbol which should have + a .MIPS.xhash entry. + (bfd_elf_size_dynamic_sections): Add DT_GNU_HASH dynamic tag to + dynamic section if necessary. + (GNU_HASH_SECTION_NAME): New define. + (bfd_elf_size_dynsym_hash_dynstr): Get .MIPS.xhash section. + Update the section size info. + * elfxx-mips.c (struct mips_elf_hash_sort_data): New members. + (struct mips_elf_link_hash_entry): New member. + (mips_elf_link_hash_newfunc): Initialize .MIPS.xhash translation + table location. + (mips_elf_sort_hash_table): Initialize the pointer to the + .MIPS.xhash section. + (mips_elf_sort_hash_table_f): Populate the .MIPS.xhash + translation table entry with the symbol dynindx. + (_bfd_mips_elf_section_from_shdr): Add SHT_MIPS_XHASH. + (_bfd_mips_elf_fake_sections): Initialize .MIPS.xhash section + info. + (_bfd_mips_elf_create_dynamic_sections): Create .MIPS.xhash + section. + (_bfd_mips_elf_size_dynamic_sections): Add DT_MIPS_XHASH tag to + dynamic section. + (_bfd_mips_elf_finish_synamic_sections): Add DT_MIPS_XHASH. + (_bfd_mips_elf_final_write_processing): Set .MIPS.xhash section + sh_link info. + (_bfd_mips_elf_get_target_dtag): Get DT_MIPS_XHASH tag. + (MIPS_LIBC_ABI_XHASH): New ABI version enum value. + (_bfd_mips_post_process_headers): Mark the ABI version as + MIPS_LIBC_ABI_XHASH if there exists a .MIPS.xhash section, + but not a .hash section. + (_bfd_mips_elf_record_xhash_symbol): New function. Record a + position in the translation table, associated with the hash + entry. + * elfxx-mips.h (literal_reloc_p): Define + elf_backend_record_xhash_symbol backend hook. + * elfxx-target.h: Initialize elf_backend_record_xhash_symbol + backend hook. + +2019-08-07 Jose E. Marchesi + + * elf64-bpf.c (bpf_elf_relocate_section): New function. + (bpf_elf_insn_disp_reloc): Delete function. + (elf_backend_relocate_section): Define. + +2019-08-07 Alan Modra + + PR 24644 + * archive64.c (_bfd_archive_64_bit_slurp_armap): Properly check + for overflow in expressions involving nsymz. + +2019-08-01 Ilia Diachkov + + * elfnn-riscv.c (_bfd_riscv_relax_lui): Set lui relax safety area to + two pages in relro presence. + +2019-08-01 Max Filippov + + * elf32-xtensa.c (insn_num_slots, get_rsr_lend_opcode) + (get_wsr_lbeg_opcode): New functions. + (check_loop_aligned): Detect relaxed loops and adjust loop_len + and insn_len for the first actual instruction of the loop. + +2019-07-30 Alan Modra + + PR 24768 + * bfd.c (struct bfd): Add lto_slim_object flag. + * bfd-in2.h: Regenerate. + +2019-07-29 Martin Liska + + PR 24768 + * archive.c (_bfd_compute_and_write_armap): Come up with + report_plugin_err variable. + * bfd-in2.h (struct bfd): Add lto_slim_object flag. + * elf.c (struct lto_section): New. + (_bfd_elf_make_section_from_shdr): Parse content of + .gnu_lto_.lto section. + * elflink.c: Report error for a missing LTO plugin. + * linker.c (_bfd_generic_link_add_one_symbol): Likewise. + +2019-07-28 Alan Modra + + PR 24857 + PR 24339 + * elflink.c (elf_link_add_object_symbols): Report an informative + error on finding local symbols with index equal or greater than + symbol table sh_info. Correct comment. Allow such symbols in + dynamic objects. Abort on NULL section for symbol. + +2019-07-26 Alan Modra + + * elf-bfd.h (struct output_elf_obj_tdata): Delete "linker" field. + (elf_linker): Don't define. + * elflink.c (bfd_elf_final_link): Don't set elf_linker. + +2019-07-25 YunQiang Su + + PR 24832 + * elfxx-mips.c (mips_set_isa_flags): Default to MIPS 3 for 64-bit + mips inputs. + +2019-07-24 Claudiu Zissulescu + + * elf32-arc.c (bfd_get_32_me): Add a small description, fix + formating. + (reloc_type_to_name): Fix formating. + (arc_elf_object_p): Likewise. + (debug_arc_reloc): Likewise. + (arc_do_relocation): Likewise. + +2019-07-24 Claudiu Zissulescu + + * elf32-arc.c (bfd_get_32_me): New function. + (bfd_put_32_me): Likewise. + (arc_elf_relax_section): Likewise. + (bfd_elf32_bfd_relax_section): Define. + +2019-07-24 Alan Modra + + * elf-bfd.h (struct elf_backend_data): Return bfd_boolean from + elf_backend_final_write_processing, don't pass linker arg. + (_bfd_elf_final_write_processing): Update prototype. + * elf.c (_bfd_elf_write_object_contents): Adjust call. + (_bfd_elf_final_write_processing): Return error on incompatible + OSABI and has_gnu_osabi. Remove linker arg. + * elf-nacl.h (nacl_final_write_processing): Update prototype. + * elf-vxworks.h (elf_vxworks_final_write_processing): Likewise. + * elfxx-mips.h (_bfd_mips_final_write_processing): Likewise. + (_bfd_mips_elf_final_write_processing): Likewise. + * elf-hppa.h (elf_hppa_final_write_processing): Return status + and remove linker arg. + * elf-m10300.c (_bfd_mn10300_elf_final_write_processing): Likewise. + * elf-nacl.c (nacl_final_write_processing): Likewise. + * elf-vxworks.c (elf_vxworks_final_write_processing): Likewise. + * elf32-arc.c (arc_elf_final_write_processing): Likewise. + * elf32-arm.c (arm_final_write_processing): Likewise. + (elf32_arm_final_write_processing): Likewise. + (elf32_arm_nacl_final_write_processing): Likewise. + (elf32_arm_vxworks_final_write_processing): Likewise. + * elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise. + * elf32-bfin.c (elf32_bfin_final_write_processing): Likewise. + * elf32-cr16.c (_bfd_cr16_elf_final_write_processing): Likewise. + * elf32-cris.c (cris_elf_final_write_processing): Likewise. + * elf32-h8300.c (elf32_h8_final_write_processing): Likewise. + * elf32-lm32.c (lm32_elf_final_write_processing): Likewise. + * elf32-m32r.c (m32r_elf_final_write_processing): Likewise. + * elf32-m68k.c (elf_m68k_final_write_processing): Likewise. + * elf32-mips.c (mips_vxworks_final_write_processing): Likewise. + * elf32-msp430.c (bfd_elf_msp430_final_write_processing): Likewise. + * elf32-nds32.c (nds32_elf_final_write_processing): Likewise. + * elf32-or1k.c (or1k_elf_final_write_processing): Likewise. + * elf32-pj.c (pj_elf_final_write_processing): Likewise. + * elf32-ppc.c (ppc_final_write_processing): Likewise. + (ppc_elf_final_write_processing): Likewise. + (ppc_elf_vxworks_final_write_processing): Likewise. + * elf32-sparc.c (sparc_final_write_processing): Likewise. + (elf32_sparc_final_write_processing): Likewise. + (elf32_sparc_vxworks_final_write_processing): Likewise. + * elf32-v850.c (v850_elf_final_write_processing): Likewise. + * elf32-xc16x.c (elf32_xc16x_final_write_processing): Likewise. + * elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise. + * elf64-ia64-vms.c (elf64_vms_final_write_processing): Likewise. + * elfnn-ia64.c (elfNN_ia64_final_write_processing): Likewise. + * elfxx-mips.c (_bfd_mips_final_write_processing): Likewise. + (_bfd_mips_elf_final_write_processing): Likewise. + +2019-07-24 Alan Modra + + * elf-vxworks.c (elf_vxworks_final_write_processing): Don't return + early. + * elf32-arc.c (arc_elf_final_write_processing): Likewise. + * elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise. + +2019-07-24 Alan Modra + + * elf32-visium.c (visium_elf_post_process_headers): Don't set + EI_OSABI header byte here. + (ELF_OSABI): Define. + +2019-07-23 Alan Modra + + * elf-bfd.h (enum elf_gnu_osabi): Add elf_gnu_osabi_mbind. + * elf.c (_bfd_elf_make_section_from_shdr): Set elf_gnu_osabi_mbind. + (get_program_header_size): Formatting. Only test SH_GNU_MBIND + when elf_gnu_osabi_mbind is set. + (_bfd_elf_map_sections_to_segments): Likewise. + (_bfd_elf_init_private_section_data): Likewise. + (_bfd_elf_final_write_processing): Update comment. + * elf64-hppa.c (elf64_hppa_special_sections): Move .tbss entry. + (elf_backend_special_sections): Define without .tbss for linux. + +2019-07-23 Alan Modra + + * elf-bfd.h (enum elf_gnu_osabi): Rename from elf_gnu_symbols. + Remove none, any, all enums. + (struct elf_obj_tdata): Rename has_gnu_symbols field to has_gnu_osabi. + (_bfd_elf_final_write_processing): Declare. + * elf.c (_bfd_elf_write_object_contents): Unconditionally call + elf_backend_final_write_processing. + (_bfd_elf_post_process_headers): Move body of function to.. + (_bfd_elf_final_write_processing): ..here, but set EI_OSABI byte + only when not already set. Adjust for rename. + * elfxx-target.h (elf_backend_final_write_processing): Default to + _bfd_elf_final_write_processing. + * elf-hppa.h (elf_hppa_final_write_processing): Call + _bfd_elf_final_write_processing. + * elf-m10300.c (_bfd_mn10300_elf_final_write_processing): Likewise. + * elf-nacl.c (nacl_final_write_processing): Likewise. + * elf-vxworks.c (elf_vxworks_final_write_processing): Likewise. + * elf32-arc.c (arc_elf_final_write_processing): Likewise. + * elf32-avr.c (bfd_elf_avr_final_write_processing): Likewise. + * elf32-bfin.c (elf32_bfin_final_write_processing): Likewise. + * elf32-cr16.c (_bfd_cr16_elf_final_write_processing): Likewise. + * elf32-cris.c (cris_elf_final_write_processing): Likewise. + * elf32-h8300.c (elf32_h8_final_write_processing): Likewise. + * elf32-lm32.c (lm32_elf_final_write_processing): Likewise. + * elf32-m32r.c (m32r_elf_final_write_processing): Likewise. + * elf32-m68k.c (elf_m68k_final_write_processing): Likewise. + * elf32-msp430.c (bfd_elf_msp430_final_write_processing): Likewise. + * elf32-nds32.c (nds32_elf_final_write_processing): Likewise. + * elf32-or1k.c (or1k_elf_final_write_processing): Likewise. + * elf32-pj.c (pj_elf_final_write_processing): Likewise. + * elf32-v850.c (v850_elf_final_write_processing): Likewise. + * elf32-xc16x.c (elf32_xc16x_final_write_processing): Likewise. + * elf32-xtensa.c (elf_xtensa_final_write_processing): Likewise. + * elf64-ia64-vms.c (elf64_vms_final_write_processing): Likewise. + * elfnn-ia64.c (elfNN_ia64_final_write_processing): Likewise. + * elf32-arm.c (arm_final_write_processing): Split out from.. + (elf32_arm_final_write_processing): ..here. Call + _bfd_elf_final_write_processing. + (elf32_arm_nacl_final_write_processing): Adjust. + * elfxx-mips.c (_bfd_mips_final_write_processing): Split out from.. + (_bfd_mips_elf_final_write_processing): ..here. Call + _bfd_elf_final_write_processing. + * elfxx-mips.h (_bfd_mips_final_write_processing): Declare. + * elf32-mips.c (mips_vxworks_final_write_processing): Adjust. + * elf32-ppc.c (ppc_final_write_processing): Split out from.. + (ppc_elf_final_write_processing): ..here. Call + _bfd_elf_final_write_processing. + (ppc_elf_vxworks_final_write_processing): Adjust. + * elf32-sparc.c (sparc_final_write_processing): Split out from.. + (elf32_sparc_final_write_processing): ..here. Call + _bfd_elf_final_write_processing. + (elf32_sparc_vxworks_final_write_processing): Adjust. + * elf32-d10v.c (elf_backend_final_write_processing): Don't define. + * elf32-d30v.c (elf_backend_final_write_processing): Don't define. + * elf32-m68hc11.c (elf_backend_final_write_processing): Don't define. + * elf32-m68hc12.c (elf_backend_final_write_processing): Don't define. + * elf32-s12z.c (elf_backend_final_write_processing): Don't define. + * elf32-i386.c (elf_i386_check_relocs): Don't set has_gnu_symbols. + * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise. + * elflink.c (elf_link_add_object_symbols): Likewise. + (elf_link_output_symstrtab): Set has_gnu_osabi for symbols here + instead. + +2019-07-23 Omar Majid + + * coffcode.h (coff_set_arch_mach_hook): Handle I386_APPLE_MAGIC, + I386_FREEBSD_MAGIC, I386_LINUX_MAGIC, I386_NETBSD_MAGIC, + AMD64_APPLE_MAGIC, AMD64_FREEBSD_MAGIC, AMD64_LINUX_MAGIC, + AMD64_NETBSD_MAGIC. + * peXXigen.c: Add comment about source of .NET magic numbers. + +2019-07-19 Alan Modra + + * reloc.c (BFD_RELOC_PPC64_TPREL34, BFD_RELOC_PPC64_DTPREL34), + (BFD_RELOC_PPC64_GOT_TLSGD34, BFD_RELOC_PPC64_GOT_TLSLD34), + (BFD_RELOC_PPC64_GOT_TPREL34, BFD_RELOC_PPC64_GOT_DTPREL34), + (BFD_RELOC_PPC64_TLS_PCREL): New pcrel tls relocs. + * elf64-ppc.c (ppc64_elf_howto_raw): Add howtos for pcrel tls relocs. + (ppc64_elf_reloc_type_lookup): Translate pcrel tls relocs. + (must_be_dyn_reloc, dec_dynrel_count): Add R_PPC64_TPREL64. + (ppc64_elf_check_relocs): Support pcrel tls relocs. + (ppc64_elf_tls_optimize, ppc64_elf_relocate_section): Likewise. + * bfd-in2.h: Regenerate. + * libbfd.h: Regenerate. + +2019-07-18 Alan Modra + + * elf64-ppc.c (ppc64_elf_relocate_section): Don't bother selecting + a TLS section symbol for edited relocs. Tighten TLS symbol/reloc + match test. + +2019-07-18 Alan Modra + + * elf64-ppc.c (TLS_EXPLICIT): Define as 256. + (ppc64_elf_check_relocs): Don't store TLS_EXPLICIT even if char + is more than 8 bits. + (ppc64_elf_tls_optimize): Likewise. Make tls_set, tls_clear, and + tls_type vars unsigned int. + (ppc64_elf_relocate_section): Use r_type rather than TLS_EXPLICIT + to select r_type edit. + +2019-07-18 Alan Modra + + * elf32-ppc.c (TLS_GDIE): Rename from TLS_TPRELGD throughout file. + Correct comment. + * elf64-ppc.c (TLS_GDIE): Likewise. + +2019-07-18 Alan Modra hooks/post-receive -- Repository for Project Archer.