From patchwork Thu Oct 26 17:31:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 23860 Received: (qmail 103697 invoked by alias); 26 Oct 2017 17:31:22 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 103680 invoked by uid 89); 26 Oct 2017 17:31:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=presenting, H*r:sk:EUR01-V X-HELO: sessmg22.ericsson.net Received: from sessmg22.ericsson.net (HELO sessmg22.ericsson.net) (193.180.251.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 26 Oct 2017 17:31:18 +0000 Received: from ESESSHC003.ericsson.se (Unknown_Domain [153.88.183.27]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id 59.3C.26775.4EB12F95; Thu, 26 Oct 2017 19:31:16 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.27) with Microsoft SMTP Server (TLS) id 14.3.352.0; Thu, 26 Oct 2017 19:31:15 +0200 Received: from elxacz23q12.ca.am.ericsson.se (192.75.88.130) by DB4PR07MB314.eurprd07.prod.outlook.com (2a01:111:e400:982f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.178.3; Thu, 26 Oct 2017 17:31:13 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH] Validate that the languages array matches the language enum Date: Thu, 26 Oct 2017 13:31:01 -0400 Message-ID: <1509039061-5248-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-ClientProxiedBy: BN6PR1101CA0011.namprd11.prod.outlook.com (2603:10b6:405:4a::21) To DB4PR07MB314.eurprd07.prod.outlook.com (2a01:111:e400:982f::15) X-MS-Office365-Filtering-Correlation-Id: 2cab9579-388e-4867-ecc1-08d51c975b6f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603238); SRVR:DB4PR07MB314; X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB314; 3:M0VYV6xGU+2kV674B0Zxsvg1vCfOHJKyYbBoormyqvLNACIIpOSCgwyUlX3ytQMXbf0aNrCxadTgBsI77v+LnqmQ3uRPIdNezzNMAjkvWgCX/FRdwYEaSrBeSeMsa4zyJoKIs2/t68pZAbN1FUHHBSN7Z2ZvUP6fmXcZe1BuvtEbhzSxhY0jyJTwBMRT9N4o14kSicVz4lJWthK/6rOdFFOAz0SWrMUy/rdUTNOCXOpsNWHKHH1AJcxXZ5lhjbBz; 25:yVJJEcHx8PcjfUrgMvKsW6GdDF6LdR7tSTXMc3wTVeCwIMtD4zDZSnSQqvxxMMRHXtoR/wGPiAnL1bE60g+xVM3HurcbTr2AMRpv6nCUygOVfbA3xzGHsyLJCM9tYaBe7nv3B4v7nkKyEjWx4Imd4LDzMFh55lsCKXOhLxkRXv+DLpcQ1adldYcZ7IDrp8FJknpoUeNiHUVyRWG8wl9jVQOArWW9JKG4mX9rKBlCXivTQw3NZxg+O5SEFIZCw//Llom4nend4TjLgc62BunNkfsYlsX7oUYbvhcCEalCY2MxcQRuBLsxAl7Yj4m4/0o6vY0SjtMcMkNLJ0vSc8KXA3IOo8l+z//L/BafrN0rgFs=; 31:T5JoKtG5w8e5hmnQ90P2kP4DNw31QvxJUU5Q7yW424XN7JylXnSdKo6Muc4YdUnL1iqZBD9gCkGczUyrstpxj5dG92vsPTbUf7qDpGHCYdnHIVIMvhDgBtatBlFGovwmD82kn+1+/zTcbwYrkq4LO7F4tmnNVtcGlAf4W77ixA33mFV6nvEj6UVQuSzNogSdh6x+gUeWa/Fsn9uLpNKASRgtcS/oZ5xmlZQ150UXUOM= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB4PR07MB314: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB314; 20:MlZEwq6j6J05JmV+yh2tEhe+6fk9/0JS2JlwNGaLBXXSCcAExaazbBZNGKpX7FUSSqIItTrV7NTyWl8ROCWPsuaCzRFqTHVR6aRWeuKsZ+fJYOV8z/1G3PKAiWHchhnCod2jYgn6iLR/V73pTRpYqLntl+TTfjlBJkY/NNRPiPBZJuuSKuwiQezzEPi5gGBG1WNbapYSKdqHAanIdYQb+yIfsHHdRvee955x2FPhqDtLgyNC7RPON/evw8froTp6NH/IS9UapDrcH5z96jPp8fQ+5n5ErvHf82CaS+ZhD9SiG/Jnqbufi/9V87qyBE6Wy3KQi6ZNCOsWG2A22dZyqeja+2kVkfpxbQaKBfB5OrBIWPF6a66fKo18TM7LIWheSnlZFdyQsoHXizbyHJCtYyzYJ40x7YJuBF+QwIooALNC6KVeb4lndJf9Rg19iP/YpgUgtMG+mVgu8w+jOKjBaSAQvT0x61+6rA5vOiVWTwBhYUqnuo4fwRPMsVdeEYtS; 4:pVXcoOl7lbSdOB1BY5eZGzfhfAUAp90YDoxOEKh0pM3FeL0f74aIVtFGCD1QVpdaLvpL+WEQ/VujkZ9GoWVLdqx34AO59ImUlpXvwbl3WYnhop+3RtF0f3tLIRuziIve+Se3Prx4f52aXxi8H2Rc/9MrkAWQguK4ZWTKsWRViI+lbeZ7mew9ciHvQA0/8sjzGeaeY71iLSOMEoYUa9uSxBL5kTkU7cPac+Ifj/zoiIuCzy9eyP9n+x459qaYhBkNIELd06J8bruxVy7QC6EUpZ5170xAmHN4W37On/TL38NL0hL3Ox6ncjrAjvSD2dKQ6tSt3kjix175wIC9iIUz0LebjhEeao+qflVjIGwxlmY= X-Exchange-Antispam-Report-Test: UriScan:(37575265505322)(131327999870524); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3002001)(3231020)(6041248)(20161123562025)(20161123560025)(20161123558100)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB4PR07MB314; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB4PR07MB314; X-Forefront-PRVS: 04724A515E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(6009001)(39860400002)(376002)(346002)(54534003)(189002)(199003)(377424004)(305945005)(50986999)(2906002)(7736002)(50226002)(478600001)(16586007)(316002)(6666003)(6916009)(8936002)(5660300001)(36756003)(8676002)(81156014)(97736004)(81166006)(68736007)(66066001)(86362001)(15650500001)(4001150100001)(101416001)(47776003)(4326008)(6116002)(106356001)(50466002)(6512007)(107886003)(53936002)(16526018)(105586002)(33646002)(3846002)(5003940100001)(2351001)(25786009)(6506006)(6486002)(2361001)(189998001)(48376002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB4PR07MB314; H:elxacz23q12.ca.am.ericsson.se; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB4PR07MB314; 23:PsB8YZFqNttod6yGbrlLxW8cqcbnKbqzi+75tQIq5Y?= =?us-ascii?Q?iHdlzb4PKBcoKUaCjKbDBqGkuiAPOG9xY/kbDoupq6GuItv7jIdliVpopW52?= =?us-ascii?Q?vDZ5WcVsLAyYFi7EESEoLJww1v8qEOYeEQ3Xx7YWg6f2+41lWc2oJ2qiofRr?= =?us-ascii?Q?9ZgWEHaqtIASXpMRUuJuxjJMCxGad605cILEpx8OT0HYzllpRb/KISSpe5cA?= =?us-ascii?Q?we0ZUXnfraNlCb2wtA9S4R1iEMDatLgk5gEdpA/696a46gq2NLAQleLzWKjB?= =?us-ascii?Q?a/5CvEP5k7MMMoaT/Qs1i65VMUjcxcyCIRJPs2D7q4Sx5IOIJzutoexKTivN?= =?us-ascii?Q?rvpGR7IemOtVGr9OptIiI+QVKrJfTiIhOeR2QBk+Pglgv0Df+v3k8oUczp4R?= =?us-ascii?Q?W5NNMl97PFyHHJ1OJyq5sqfmEj3moeQCjs+UEsQqN4lBPSc1Cq5Z9Yo98xNj?= =?us-ascii?Q?dQRkWDuvRIv7EhJWydExFr9hSuPRue9lq9L9YhsKgsMFJHmbKKFxxtqcSPvA?= =?us-ascii?Q?XlsA2Mfw/DHXsKz3Iuut/tsJRHG+M7MqikXlBAoWUs3njAVNnlqiHlzTBbPw?= =?us-ascii?Q?kUGd07CRJX7Tem0al2Ac0lzkB3iQQZAuSEXxWysAetE5JXim2gmLwaDgAfNx?= =?us-ascii?Q?XT8eN0W5ndaEZy4u7jvN5qFCSPYbt8Sqx1meJnGgifKYLA1gOlLoo+1D0Y4X?= =?us-ascii?Q?yKfy7UAHu7tAveSejkdV4HbSDVyV2XNOTG9ZL96o+IYQ1m7l0UOetMs/1woD?= =?us-ascii?Q?jTFWt/76qM/LovgmfKPCfZBg8LyLbeC335cAoznjiuLvWGOa8ENQgbMYzuTD?= =?us-ascii?Q?MWhnbh0gWJRWvd2iGm5EpedhWjlRCmeQ1a5kFM6VxHNLUTY7Ii3gJ81Om3U7?= =?us-ascii?Q?DeP51SwQHporsHWSFcJXDtLIW/o5CgoJ9f02jVU9lw+ndpaLXm7aWZygRkWA?= =?us-ascii?Q?dTib+iyr5bDwnGjIGdd156MGMoUCvaiXw/34lJgzx9PVMgWdGZQ948UVe2wF?= =?us-ascii?Q?Sp50wkGoDWP3slgnkt2N68db5ilHRTE9q6eC8dwBQEKlVXA7GHqpc4qzUUFh?= =?us-ascii?Q?Ty6R1rSAG//MXuPzH5f2+OKw/wtBJkxQsRqfH2E+Vw2on/W+23dNkfDUSiRF?= =?us-ascii?Q?ipdiJzBQqtjnrBzoncgTREvmj/c4TS0GpTh3v7I3fZGhnIIG+KeIScbkIa/L?= =?us-ascii?Q?oYZsPsH1TuleVwGuK+5N7gt/JubrlUi+ujiNPb+tpiKFRKD3PkRj99oSoFZq?= =?us-ascii?Q?5th56osOKWXhWcJ6jvMUgRL3pkwHnw7jphBh1fdYGvZO5GhdctOruDXbNnB6?= =?us-ascii?Q?fROJIxPvMfED6TrOMArsc=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB314; 6:qDGFrLtmjERbX1ozeGuEJJAeuOnY8qXo4nDDoziZjHGuuaobKtOZu/dkDdsYRCZOfCLm1rZ2wnVf6Xcv1+ZYrEB7I7Fpa9l64wn+gSg1lAU91OjlEn07CBrwLWOUSck2WSyuRQgixQ9RP8Z2roHGtyMsEhJbNNdNBwdBrNVzQOATZVHluBaYfxrNSDxteKX2j0Nfr0nUdPv9HEw2EUpmU/dGTHydmsBW0+1VaMxP6Y0tngN5Y1yKEorf2lF12OYXxeNrV8F2PmbAIu3QFsW0AqezwMlwM74GptccqNuGmT7XLuFcnnrBdQQKotGh5OYSu8CkjmcA7SbXncxMaYaWHH08ZwtxMS09771Xqxrf3Nk=; 5:O+LcImcqRbJCYJfZfJy8j1aQr25rYxNxwwVwHeBueDxDTZVztLvXI+NS8ZqgyRqlM25mJTfVwXhbsUdPcXKy4oVBfGTWBSTRD2bQi+1aIZdXEDSZJi0NNATs0Ktcx7OLR7FFxm/44i19xF8kJ8VF1A/ntGMhpCsUI85cXLaRKKs=; 24:bEG/0nr29JCFQ7OfS7p3thD9LTNyC9LyUYM9dLIL4lYUfv6fnUqZ/nAd2tW9S4G9QMWABc714LXrbv7m/0ood3lXfrWavD8wrUY/eCHIBWc=; 7:pf2UBloGC8xqzIsMQN5CTwpo/+QCWA6NimxTsP9W3XddWj4W9R1EQ7vT1qt0CwoEmZyWU2LI2cMuAZ1gfB8rE/VuM6n4zWWdvIYNsBuZ3lgBKyYHS3NW/AwD3Vd0p9MtcSwCPzbBJiEpud2MjwaqECnKGj3hn/Q+/sCi7M77O3/s3TuB5b05M1nE1WQsURm90tetw2kDgtbI+0facR9ARevei/m8sgz6AxMXUl3FQVDhkCxYJ0avi65+9+2i3RuF SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2017 17:31:13.7806 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2cab9579-388e-4867-ecc1-08d51c975b6f X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR07MB314 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes There is the requirement for the languages array elements to be in the same order as the language enum. This patch adds a check so that GDB will abort if it is not the case. The added gdb_assert runs before the ui and/or readline are properly set up. This means that if the assert fails, GDB will segfault instead of presenting the usual message: /home/emaisin/src/binutils-gdb/gdb/language.c:1147: internal-error: void _initialize_language(): Assertion `languages[i]->la_language == i' failed. A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) [1] 4553 segmentation fault ./gdb I don't think this is a big problem, as it should never trigger normally. If it does, it means the patch you are working on is breaking that assumption, and the segfault will give a big clue about it. gdb/ChangeLog: * language.c (_initialize_language): Check that the elements of the languages array match the language enum. --- gdb/ChangeLog | 5 +++++ gdb/language.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f180b1d..9d7f935 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-10-26 Simon Marchi + + * language.c (_initialize_language): Check that the elements of + the languages array match the language enum. + 2017-10-26 Yao Qi * breakpoint.h (regular_breakpoint_inserted_here_p): Remove. diff --git a/gdb/language.c b/gdb/language.c index ecdf431..3a3f287 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -1140,4 +1140,10 @@ For Fortran the default is off; for other languages the default is on."), /* Have the above take effect. */ set_language (language_auto); + + /* Verify the assumption that the order of the languages array matches the + language enum. */ + for (int i = 0; i < ARRAY_SIZE (languages); i++) + gdb_assert (languages[i]->la_language == i); + }