From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 118044 invoked by alias); 9 Nov 2017 23:18:44 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 117973 invoked by uid 89); 9 Nov 2017 23:18:44 -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=PUBLIC 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, 09 Nov 2017 23:18:42 +0000 Received: from ESESSHC015.ericsson.se (Unknown_Domain [153.88.183.63]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id D0.B2.15369.D42E40A5; Fri, 10 Nov 2017 00:18:37 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.63) with Microsoft SMTP Server (TLS) id 14.3.352.0; Fri, 10 Nov 2017 00:18:36 +0100 Received: from elxacz23q12.ca.am.ericsson.se (192.75.88.130) by DB4PR07MB313.eurprd07.prod.outlook.com (2a01:111:e400:982f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.218.6; Thu, 9 Nov 2017 23:18:34 +0000 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 2/2] Fix mem region parsing regression and add test Date: Thu, 09 Nov 2017 23:18:00 -0000 Message-ID: <1510269503-12483-2-git-send-email-simon.marchi@ericsson.com> In-Reply-To: <1510269503-12483-1-git-send-email-simon.marchi@ericsson.com> References: <1510269503-12483-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: BN6PR08CA0090.namprd08.prod.outlook.com (2603:10b6:404:b6::28) To DB4PR07MB313.eurprd07.prod.outlook.com (2a01:111:e400:982f::13) X-MS-Office365-Filtering-Correlation-Id: e5fff096-292c-4d2e-6b26-08d527c83357 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603253);SRVR:DB4PR07MB313; X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB313;3:fFhqGII7MMGdMuzKftZnnX/u41GgPK1PYN6o3jN1XBuM3jJ24N5EzIXfwQrKLt/FGhz2Leue3PFRiUTEejbqHAP51f6Qwx9mw9/3FfowiNBbOuol+50yHndRF0jvX4qb6tfKhYfSogToF4Z58jnqm2pZZlGMLlZon1AM/Jl9d5o8HiPYORISBzqCgRqZzhvAb/1pQeoxCTIdjAGTncZmBwdNZjWz6pdKkcUklqhWD4lsl1U6nmPqlBZvy0iTLhrS;25:IYCisnJCtQ15nPCgjNXpFxyT1IEl4cyhwoox/Fv9iXalFmkcnIu7cHZe25BhHhe/jfsmMH/bfs430LGQOPP3mwbRko4S6eUB4xX4AroO5ErIQ3raYvpR3qeFPThApm5gdAZS3yCGdYoPHaUsaa1A6TwysJ7e2nAIKEfjfWqEicCWf7Hy2l837FAdHHZ71qk3bGzDXT+NqsVe5AtdAXQBwBfeTUmmcwvXuxf2Seyr4Xsd14y+eXZUp1lmqj97oYfbKKMmKHSgAMF/WRPwqr017B6ovsLqEN6KvjwYJudeVqbwzDZzYEpsCFFL9kSYM99TfEauqp/yHglY7RwH87crJhbp0mzNdxYfv9yvgVZZWTk=;31:8MT16NiPKIJitkYxPCLXNi/5BB5YSXSrEDwFuG+G0MN1iu+5NmuI4gM0ZXahTZ3tbrS9RD5k+aDdCyqlejLcZgdlE30U7Qa0O20hEclmSxwApOcShJvSY7BOpVBqeWU69I99KE8OR1qw2xmzn7OHJIFU6EhdUpP2n82eBffNHIybjYrWUcExLh8MCclwUltcB5IFyNbBOSkBPUPbLZyN2ZQm+ghbwBSSUxo/Ug8bCTc= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB4PR07MB313: X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB313;20:xKf4MzledWFFpkrHdU3NmG2Sr+++LSapFqn3lSWm1WqkXRjSjYKcPLJhah4Log2kOddA3NZob0VBzAkmxNJ5bP5lxMeBNfdQ4QqAnAUJ1WL5ODWqanmGq9NZt3wg69JuUUVpfdygMNIazuLfXccrW7YT9WLxDEVApGFgEA8mF+XBo1MuvOLR4tG8HRg27q6DhE53JOaRcMRF/KUecqxeJiHhIDOxtd32D8l7HxTyuo9fn7dPtIXKQ6qNzGPh7NLg5r6U9+/eROpczuKj2DeDWhdqUbnHbk8oBroJM+4QFIuQ2MDnycMoe8Xiq7lI0DGv8P/HTdIS45BPjmYVdHBvi4jAnVKEp0W9dYdJd82uYwl536dGCgrNijtsezpvqODEtO/HLt6WGDnumsx32pd2iA2Zq3RVqCZZO821TQpg4EQ0jCzGxE7dC2owMfyYaJjlT8JAjcRbh5GotD3D3PEngYf3147eAHnD+m9bJOYWgRpohQFNMBZDedgzcXNUsnDn;4:umqtgJ+pCiAJhHiTeNHeW0UdGV8nWRcD69VIOo8XNZ3YDUEokeNSuy7uiTXigFeI4fOBK0z2vXxGT5td1en0JxgdWkL66NmDqlimP/kSvEk1QVOf9Y4BnQ8iY1xWkcsAgDvSHf4ESVV5AlUKd1TM78bnjv7aUrLLcmyUASd5A0XkO3eJzEOs4r6YRSuTfAAed9B0Dh7aG800ctZ1x4A0N5AtbXO7pcR5K6evT7sa+ggGa/ZiygDVapi8TUPsoSNsx02Mp4IOHREc2BQvmL75tRi9Rq/50SUutDRlapvG6bYiBpFumMKYDlRn0vS10XGGkGyeYLgbZMtkDFLu1pGn7zld+TaHdCOXMWy/plRfMnY= X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); 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)(3231021)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123564025)(20161123560025)(20161123562025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB4PR07MB313;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB4PR07MB313; X-Forefront-PRVS: 0486A0CB86 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(346002)(39860400002)(189002)(54534003)(199003)(316002)(6666003)(53936002)(5660300001)(101416001)(25786009)(50986999)(107886003)(53376002)(2351001)(76176999)(2950100002)(36756003)(2906002)(6512007)(106356001)(6916009)(4326008)(6306002)(48376002)(478600001)(66066001)(16586007)(47776003)(6486002)(305945005)(97736004)(105586002)(3846002)(50466002)(7736002)(5003940100001)(6506006)(68736007)(16526018)(6116002)(50226002)(86362001)(8676002)(81166006)(33646002)(8936002)(2361001)(189998001)(81156014)(575784001)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB4PR07MB313;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) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB4PR07MB313;23:qsACkXBRSGJzad4QtxPBHDpxpDgmV/x//e0L6Ojigh?= =?us-ascii?Q?P5d7CJYk4M5rKHyLeH474NwfqEowy6NPUbS42ROh5o/Ffl4JC7i/ObRJ3MLu?= =?us-ascii?Q?SmQRWF+7jx/rXR8/dRRzLobyXP6sDIG8u2dEqNRrl8GVR8cyHwbE26lx7/tM?= =?us-ascii?Q?tk33L0l47isCv4N1QatyW54xO6a4hHog9pwDTaqHJMtsh/F44WeT8aUkLNLM?= =?us-ascii?Q?ToYTDSnw97NvT/wkRYqiZi20LE7PMBaWiCsKtvnHCOCAj4wzQd4V7uVUxn+/?= =?us-ascii?Q?3oaQVeJza93M2DUR7rCnaR5xBQZ5/W+Lzdt07hGT0OrVk70KSHfrA5gDvC+R?= =?us-ascii?Q?4RC7R5ukvF2Z6pfBXO68uT0nMBXAEFL2yD0TQQQOJjji0Th9JdiFsGBkyqOY?= =?us-ascii?Q?i8DggM9+EdR3FTaYRl3Nb4E0u9gJMN9aANDK07wAJBoaPvBnuCdzH2sA5DeO?= =?us-ascii?Q?ndc3T26QvYsG9+AYXI4pm5xyG+zfAhOk+vSCi3omvznXq9YgSL/IRiJDdhda?= =?us-ascii?Q?sVPKRi+NJpnt9w7+zjvwqkHWdmSe0L0mlb9n3caYtx9L4BMjvo4uGOIzYyW8?= =?us-ascii?Q?1f9IRzm/Mykgr2QHADD4VvSMbo8a6CZBeVOS9qShunobMUHx5MIDllb8SXy4?= =?us-ascii?Q?nOdwAiKLfcMy0d9mNsKQrpaMm8mzLazmuTdyql96qKMqSddoS3FKljyl8D2Q?= =?us-ascii?Q?aU54ExqmS+KU3IqnM1UFatTtzDZ0CLNYeMKlgpxM3OnNFi3gnrIHEsplm1Qn?= =?us-ascii?Q?ntMHH2NmCW2IYQiFfAJd1L110faRyZemqId0DdRAkW7CrQ9SO9SNw00bpfHv?= =?us-ascii?Q?xgOEGPzwkumQ/EI6rfil5t7yjIVnhm0aNcBvZCCB5Mrio4b5VW7Dz0lXO0rv?= =?us-ascii?Q?Vjtt39FONxsuzCbQjlOxp+DyL8hWW1XtzBus53xEWIhRiWWqVAvASwGFQhEl?= =?us-ascii?Q?yQcCHi6Dr5Qqn9YpTV4AdY5tLn4zXQKwVNhsdzxRApjCtgKMoQ7pAldyUOkq?= =?us-ascii?Q?41IpqHm6hXWTsEUnUhPb73oLV6AgIQvWKvijD/lQ32t9EYw6NNbArlKiox5h?= =?us-ascii?Q?lmKbeuRNojZSjhZN7NbRykUxiYPM8mFAvvQt4MBovy5PVZZfDEkK5MRfuuq8?= =?us-ascii?Q?YGsWAr5rWCj9Q0FPqVyp6q9xaA5/EeQUvK46G880TK/EeBU1RbZVJdc+Kkg4?= =?us-ascii?Q?3IMB993QJWhv2ZjPTWE4JtSlraceGkigpjX4AlhEmR33TgAsv4Vn0JsYBLBs?= =?us-ascii?Q?hJCpyQ6TCBUq2BhQc=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB4PR07MB313;6:RXifGomRjxQx+CUCEQjl7ko5OL9yqHCTbTqkUCTvsmtlDPO2qy6H09fTJRCBnCh1gahsqmQ8GfUzeZx5DwHWogkA9Ja85vrl9oS+uB+3kArcblrBabI2wOhm9SCA6tfZGPTr6XMuDYVKjx/wjRIB2gDbQ5r5it/99+M5eXVhN082VUVVYS+x7jlXlQ6i1VpDp1r2qHCLohupMbUH7HCcNo0UG9bR5rEqAjq8BUPZElJWMg4ME/x4wuzFudlqZZsCnLoiTFDKcLxfKCU3kB/f/lPF8zVRV1yIorRq3s0JbMb1+ETHQ6YtMJUo8V9+SnaMZ3qXHJSBKF/7ZuDPlCwae0z17V2HSttrje7JQvIQyAs=;5:4yYCsFNM3KYP+2ZQ3xGvtWuR8c+2pHoajcfnYhyvOQFA46L7gr/PzpVqQL9vFs/TIbNEBVpxm+uNwxrKSjr8d2dNAgGqpFGfwKAf0ATvVvd/6i0zDfw9jNzuzGvGwizzEbYiFU5DWeDTjG5H6IdmwcouAHnk6HukIt/KHoBShac=;24:3mj35EToL2W2LZZvHaV9J7E92UEp1syNW6MnA14I6n+0UlqhTiLY7oSThsGLTqdL4jSAShh/7btGLGdTL987+os9hytc+s36Yol86Y6WLR8=;7:poFiFxcibBAqsgGmVsmS+AC2CqwabmA+CNnw+kfTONflDJx3czsJW0W3WzFBAjlNhcVs6057g2x0Ku5JedZrbfp3M/MhoZLWVvVJEyiyP73sL1R95tTIU4EbNyKa5t6I92jtNm1RWQ670ipkd/QizsyS5/LO/Y4YkgGLAhDz6nVyJ5TakR+pChR2YExVhG/A6Q2kHnENJ7xOyColo/yikFGwBo28OCf/vLIpqUlVSGadygn8Hpqe7Ua9HHFuAWcw SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2017 23:18:34.6571 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e5fff096-292c-4d2e-6b26-08d527c83357 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR07MB313 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2017-11/txt/msg00218.txt.bz2 In my patch Get rid of VEC (mem_region) a664f67e50eff30198097d51cec0ec4690abb2a1 I introduced a regression, where the length of the memory region is assigned to the "hi" field. It should obviously be computed as "start + length". To my defense, no test had caught this :). As a penance, I wrote one. gdb/ChangeLog: * Makefile.in (SUBDIR_UNITTESTS_SRCS): Add memory-map-selftests.c. (SUBDIR_UNITTESTS_OBS): Add memory-map-selftests.o. * memory-map.c (memory_map_start_memory): Fix computation of hi address. * unittests/memory-map-selftests.c: New file. --- gdb/Makefile.in | 2 + gdb/memory-map.c | 2 +- gdb/unittests/memory-map-selftests.c | 81 ++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 gdb/unittests/memory-map-selftests.c diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 5e01816..a3bfbf9 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -531,6 +531,7 @@ SUBDIR_UNITTESTS_SRCS = \ unittests/environ-selftests.c \ unittests/function-view-selftests.c \ unittests/lookup_name_info-selftests.c \ + unittests/memory-map-selftests.c \ unittests/memrange-selftests.c \ unittests/offset-type-selftests.c \ unittests/optional-selftests.c \ @@ -544,6 +545,7 @@ SUBDIR_UNITTESTS_OBS = \ environ-selftests.o \ function-view-selftests.o \ lookup_name_info-selftests.o \ + memory-map-selftests.o \ memrange-selftests.o \ offset-type-selftests.o \ optional-selftests.o \ diff --git a/gdb/memory-map.c b/gdb/memory-map.c index 9582ceb..e098209 100644 --- a/gdb/memory-map.c +++ b/gdb/memory-map.c @@ -71,7 +71,7 @@ memory_map_start_memory (struct gdb_xml_parser *parser, type_p = (ULONGEST *) xml_find_attribute (attributes, "type")->value; - data->memory_map->emplace_back (*start_p, *length_p, + data->memory_map->emplace_back (*start_p, *start_p + *length_p, (enum mem_access_mode) *type_p); } diff --git a/gdb/unittests/memory-map-selftests.c b/gdb/unittests/memory-map-selftests.c new file mode 100644 index 0000000..3b282b5 --- /dev/null +++ b/gdb/unittests/memory-map-selftests.c @@ -0,0 +1,81 @@ +/* Self tests for memory-map for GDB, the GNU debugger. + + Copyright (C) 2017 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include "defs.h" +#include "selftest.h" +#include "memory-map.h" + +namespace selftests { +namespace memory_map_tests { + +/* A simple valid test input for parse_memory_map. */ + +static const char *valid_mem_map = R"( + + + + + + 1024 + + +)"; + +/* Validate memory region R against some expected values (the other + parameters). */ + +static void +check_mem_region (const mem_region &r, CORE_ADDR lo, CORE_ADDR hi, + mem_access_mode mode, int blocksize) +{ + SELF_CHECK (r.lo == lo); + SELF_CHECK (r.hi == hi); + SELF_CHECK (r.enabled_p); + + SELF_CHECK (r.attrib.mode == mode); + SELF_CHECK (r.attrib.blocksize == blocksize); + +} + +/* Test the parse_memory_map function. */ + +static void +parse_memory_map_tests () +{ + std::vector regions = parse_memory_map (valid_mem_map); + + SELF_CHECK (regions.size () == 3); + + check_mem_region (regions[0], 0, 0 + 4096, MEM_RW, -1); + check_mem_region (regions[1], 65536, 65536 + 256, MEM_RO, -1); + check_mem_region (regions[2], 131072, 131072 + 65536, MEM_FLASH, 1024); +} + +} /* namespace memory_map_tests */ +} /* namespace selftests */ + +void +_initialize_memory_map_selftests () +{ + selftests::register_test + ("parse_memory_map", + selftests::memory_map_tests::parse_memory_map_tests); +} -- 2.7.4