From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 73787 invoked by alias); 20 Apr 2017 14:54:34 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 73752 invoked by uid 89); 20 Apr 2017 14:54:33 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-Spam-Status: No, score=-25.3 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtcompany.onmicrosoft.com; s=selector1-qt-io; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=lFous9d61fykUXMGOfMeTFNQwbcMgnzsELE9cpZkbIw=; b=sAfYswqNC7ndrWWrH0/NhsmShXvObq4D1WqLsHUHnCB4Q8Hgik/0gXNi3Q6vYPrLcKx2C1DlQH8ZYKUQMh8o5CXMcaprjG2LJMGYtzicwZkLPmQUc7fDU73voJjcVRQCkTczDTBTo4trZWu/y2fEtKCYVFR2NTmVeDQUuzaiB0w= Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=qt.io; From: Ulf Hermann Subject: [PATCH] Make elf section sorting more deterministic To: Message-ID: Date: Thu, 20 Apr 2017 14:54:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [62.220.2.194] X-ClientProxiedBy: HE1P18901CA0012.EURP189.PROD.OUTLOOK.COM (10.168.181.150) To HE1PR0201MB1865.eurprd02.prod.outlook.com (10.167.186.147) X-MS-Office365-Filtering-Correlation-Id: 74503e97-059d-4c11-2b66-08d487fd25cf X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(201703131423075)(201703031133081);SRVR:HE1PR0201MB1865; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB1865;3:O1ZbuM3kqgysVzeldQk8T6VzP2gsQjo53fb22LCqNNw0W5xD+rXxqg1KRMi2CneWtijkuxJ99yTRIXJWSNhFWbkaokcH0Q11rRld4HiapqJUPtk2adMC68jGaqlG5CRG2UZFHeMAw7OMnbS7Xa4THnvL1YTi/e4yshe5nmM/So5R4+qWv8/kCGAC9lyWOj0okVSo3JZH9Qluht5RRDvPXuRErTVVvnE9NQJk7PHuDhSNXkarrCl2fQJpoMxzsjZeWuBp5PVIKmgPj6fjgylc7K3WyKt4B7gGKyzD0H9NxYQkOSUfqv2n/jhLtk2OT8AdXT9xLrJY+fr5wclKxk1+Og==;25:D7ik1A3crR26TWMeinDHzQXZqcgWRz6iEPVjezlyB8SA3Hee80WM9KafSJ4g+sxHaZudgYE6J1zxA16dhDWfd+xru5eVRpvINUT4Hux4d9vpy5VKouD4T6XCnJ4bY1Uf3soMDwISOnSnextY72fAG7O2+tVV6mwZonU1Ckyz4e+3bjhuSMN3B+Bgf4A25STaSTvb6OznrFJt4NN9MEZk9zER5mU9unv4Hk+4+vQ0YNNWYg22Jg2R67Ivul9nGJvkglhj1YXCRxiV8raPfnBfSw5rRia2On0uKpUzHMyFl4FIKbl74Tgq+R+LbCE3Jhi6zAF61pG2FVqRe2kJHJA8QHFN0QYuWgymIo8Ht2cnkpiPbcNNV3rdlz3gGJm3JXO0zlEYJmDgLJsfrxme44OGN15Nvp7jy+4vCSzBKNPgge2r2hPQVOvi0NglMA3iv3Q3sip4aHF+ENghnLQ10MpwRQ== X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB1865;31:T+To1FTx4xfbNEO4maIsQNL6pyRe436D/REfS30CAHABFrUw6QdvaUi9xdfpVlsm0FAw7CcuHBkjAWRkryoRSx3fUCAC4iW5BefBayTKhnxp9RCZJu3h97gWoShTnGIjTKjKvVM1OGfj+wIxDFydTrKrcxzgWyECbnD+1DbF/2zMBpK0aoCmTtpmsQk7bpjglEe0HHyzPbFzX0JTT8InV/RY1F4rE0r+zwoKGq6HJoeSAtNtX4tqvCupbR4EvvzXbFsP5lv5avVAylH2rsdynwuaxbgy+Nqg1RuUydNiHHE=;20:aAj21IX/rqGo5qhCDLE4cLk04vyi9yXB9M5j/n9/wlImWeKTlO5lekWoBOF/W03NBFASilArVsFIFKV3a76+BgxG5H0KANc18H9+tRt3Q7rqO/msU8bUWawj3l5yDsHPjSbInA3vWfOxrcWDrGAQWr1TK/UwpZL0CEnpFCC5ow7XuRdSCuFu8DGjh8qKRrIbeRDd2aPyCKkesVOB7l7UZpUzq83afXiz2M8qfbDQAdIakWj2QH2TjVxlYCzgwY8D X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123564025)(20161123560025)(20161123555025)(20161123562025)(6072148);SRVR:HE1PR0201MB1865;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0201MB1865; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB1865;4:y2mwURWVn55X4Xoquj9565fdY//iiU/ulqZUQWH+FMQTznHuMlW8vwaPyYN2Xq4Sqm5K117cOOJhFmH2hou+Wobw+tPoVDC9bv08ysRS8DCdCMrUxcCwe9bq0MU6OIFGEZpPCIV8VuYrWlU5woU9pKVAxWwwAMzjqAYUOzXWyGDcjZYO+4OudxJNUPIzs/jANEuXh5f2puzHdDCBAHMwrI7vNVEgMnbrNmn4vHWynp2nqTkw8x6rQhiblGytX3vurB5T9dJjBqsAIDvSzTk3FIcZxnC6zvXrPXvmEU9j+omTlNdml/Ey5uT4ICl1dpii17hX+2oRL2hklU5vE15g1GdC6GYjVDtdR6+xXLJuxA1FJiGH6O/cAZ0R3V2NtoZYgqVXpKOQq1Gh7v9akhviwoL7tgIvRL14MQdOEe1yjAES3eFIYvAgDhsvwtZuDjlGBXNjZf8Aka6UN2FgS3oub3sUROkjFsM40nEGbBOj4fwqb9H09uaQnokyeSzXb484JW9yVi8t5ByBMabbIvxSK4VWj4c2cDSSeGFsvxT9autXcjlKjFtblEmycNQBRgdce5UijVJDj7cdR6MnEPqkvyf3PbfkD1ufIbdoMljotMfe266Bk1dRYvmxZd3drpm7iZY1dqCUCsW/6c1k7jkiJ1N9k3zDfr4RdQ2re/DOfJvn3PbzTjLNewprhUOKM5j1dYJk5s6ih9/3eYh2jMHthQ== X-Forefront-PRVS: 02830F0362 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6049001)(39450400003)(39400400002)(39410400002)(39830400002)(377424004)(66066001)(81166006)(8676002)(86362001)(74482002)(110136004)(38730400002)(230700001)(31696002)(305945005)(50986999)(54356999)(47776003)(6666003)(25786009)(6916009)(2906002)(42186005)(31686004)(23676002)(77096006)(50466002)(53936002)(6486002)(2351001)(7736002)(33646002)(6116002)(5660300001)(3846002)(36756003)(189998001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0201MB1865;H:[10.9.78.56];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtIRTFQUjAyMDFNQjE4NjU7MjM6NVl2VHFEQTc1ZGE2RU9tM2FXRHF5d0g1?= =?utf-8?B?TmViakJVcldwU1A1V05RZDRiTFJ1ZXlIU3ltemVlSUNKU0w2R3FlU3BQN1dF?= =?utf-8?B?YzBTRjhvdElhbHgvbk1Ya3lxd1BOeGxNZ2J4UDRqVVFjNExlTEZqL0Q5RWdy?= =?utf-8?B?TzFnMDNMV0dWTUE2NEFLc1A2eGxwQkdPbFBkSEladGVYOFBhVG9BMTkvYjI1?= =?utf-8?B?T0xmWEk3N21OTjhmcWdkaDZaWHVIT3RZOWsxWmdMUnJHS3lMekJRTWZJeG9E?= =?utf-8?B?L2ZsYkFxUTZPdWh2eXdqdUk1QjRsUVlCaXlSVkhtVUdtb1RyVWF3VXBrcW5J?= =?utf-8?B?MUgySE5yMWdBNWtDSjJCQis5c1QxeWthYnNkR3ZCT1VEbzh6MUQ1Yzl4bGZ4?= =?utf-8?B?T2ZId1ZMNTNZWGlaZUtYVzdzcnk4aEw3VDQ3R24vQVJBVkFpQ1l3bnR0eVZ2?= =?utf-8?B?T3JRWHArQ0FWeGVZV3A3MjNZZFgzMXRxV1pSOW8wUnNOV3djemVTRlhzQWJ0?= =?utf-8?B?N2c3c1gwRjI4ZHlJa2tqdFZvU3RZRzBPWHM3ZGtoUUY5U0xYRElLY2h5TkFl?= =?utf-8?B?dWpnSGxSazN2d0VrMDBWb0p3RkE3UkQ3ZHN3MG1UWWFwQmVNTUFpUDN1ekNO?= =?utf-8?B?Vm1KZDZNWUVjS0xEZllSdUgydUF1dGtoZ1hGbzV6b3VxYkwxNk5Nd1NvRk5Q?= =?utf-8?B?MGtlQXpLUi90LzlzRURjVVFTNm9mUG1ucnRvUGM2ZVBBK2R3MXdtVzZmczQ1?= =?utf-8?B?cVQ1SVpsNFByT2c1bG00OUw2MUdqTGZDcWlIREIyVHZZWm82N3h3QzhxeW9w?= =?utf-8?B?MkFGcG4wa1lGMWkxUEFqR1RiaDhVTDFBNHMrbFFWM2tjajB4Y3A2OVJpb1R5?= =?utf-8?B?OG9DTlV6WWQrWGlIc2Z1eXZUZTZwcmNIRTAwbnJaSFhhRFNMK3hFdDBmc1k3?= =?utf-8?B?eU1UN3BLY3pDb1YzVCs5Qm1MSmJNeXV3V29ONjBjQVBBWCs5T2pQbGpnQkYr?= =?utf-8?B?L2p6K2RrVEp2L1BFT0NkbzRFelBFTXU1TGZVSmpkSWFvUjhCUXRPZmFpTzBp?= =?utf-8?B?R2wrMmtUNloyR2ZjUVdXcWxGeFllY3lUSjBhclhLM0dPekdYN25ka1FHcHJD?= =?utf-8?B?RDVwYVBBSExjVURBWVNOcG9LVHY1eHNwd0QxSUJacGFleXZBa3pjUTg4YzZ6?= =?utf-8?B?UTdCYldJblFyNFR1YkFJVk1xQUNoM2oraGk2aHJPTlVxeWVnbmpuNHRiMUJI?= =?utf-8?B?bTkxQ1FENlZQSDR2K2hVMFN0NjZkUkJvemI3cDF1aUYxeVR3bTFqM0VtMmZ1?= =?utf-8?B?bm5XcmNPYmpRekxlR21HejUydzR2amtUYzIxVjRqaHFLcnRyRUNFUFFkN0k0?= =?utf-8?Q?qinRWbiIqG?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB1865;6:48rsX+K5RcQsio6dljfWcZxnd0R7fJQQFmspdVIHrOkflrLZO30VgzDAwFYqtc5IoyZi9U4OrfzPPtzMbWgYXCO2cGW1ZduLZnOD3uomjOy1FeikjkqNvMIK1EJXMyxGVGy6taesCN8RtDts+xghphLszp7vtwPzmVGRg+UDM4zo2M8PEYJpAlOj8LBH9Oxwd5qkCN07Yj4v0qhoZAuciVW6H8+G8gyRsRkCfj9fBDdWe5XnAhW8wkJPWYlnYSsX1DhSBC+Op295Y1CSMYMkGXLMHU0tUB+QNdHaV8q/T70gJRAoNKLJMH0UFIEY3fwgZnPWgSGb57FTE2CfX2Pr5UHUUfGQakPY2d1fcOhoILLFoGjkfRpazOFTaMhqZUMSYSIXFtLP/cudRMawlxLETR+QoRlvdSEKFs9KEP527WRo4iXhMy5J2+SCP58hYCDx5x2/FaaaDNJod9B4BJ02Ia3riomyn+sdv/RD76JIRjLJ4Ag/UzFzmSBCgxdiGlDsLhj4MXbZf1xcZTDs+DAP1A==;5:WHEvHVs8VaEVDVVvzijeUGiTvmin8TwBfOQGNIUb9GG21nLzBwZOD5NVriesW28uqs3rCG4OByHxLY/DGq4IC3izj3u4aYK6xFwNJZPJNegMF1reEezZyGxmnHVU8+yekkup+FW8B8nTfG6EUNnjLQ==;24:KpBziQqVUqGoF+qQm22eekrF9Q1ZhG/YhWR4SGYyC4PkC2wl4zwEaIHKFcLz+M1tAvu4R31DGpS7e7P55TI2nHyCTmJLa0gMf/toPb5nGQg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0201MB1865;7:uB2z4w5E4/J5OUaI78R9vhKXznQmcQyUp0rHrJpv8ejisuepD5yqZg0SBS7FRTLXacPzwCaWzoGrVM/blGV2dDjnmF/fKkkpKQhyxdcUlouVGv/Aeh3ZWhI41tZ5AWThsqB7Bbrh2Yv4MhRuDtbuKE/rRwwNcqkCQ46hA5Q43yeELgOhVAJ7VUa3ip5ANMylr3KytNj65OunlpaxXVcNOy7SgxthrAm0zI7oOk8SAASCqoc8sdldNDvqIDQX70rEshgDoBsmzp89yb8CDifC0Gx1RyoZhLF/OH/J+QvVbsn7Kboia24qEUcWhk2hDy+YFuN6JsqHbEg9wLRwOJlvYw== X-OriginatorOrg: qt.io X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Apr 2017 14:54:29.5173 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0201MB1865 X-SW-Source: 2017-q2/txt/msg00064.txt.bz2 At least one test (dwfl-addr-sect) depends on the order of elf sections with equal addresses. This is not guaranteed by the code. Compare also by end address and name to tell entries apart. Signed-off-by: Ulf Hermann --- libdwfl/ChangeLog | 5 +++++ libdwfl/derelocate.c | 17 +++++++++++------ tests/ChangeLog | 6 ++++++ tests/run-dwfl-addr-sect.sh | 2 +- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index f605f46..a1ed675 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,5 +1,10 @@ 2017-04-20 Ulf Hermann + * derelocate.c (compare_secrefs): Compare by end address and then by + name if start addresses are equal. + +2017-04-20 Ulf Hermann + * elf-from-memory.c: Explicitly cast phnum to size_t. 2017-04-20 Ulf Hermann diff --git a/libdwfl/derelocate.c b/libdwfl/derelocate.c index e5c3e12..8d965af 100644 --- a/libdwfl/derelocate.c +++ b/libdwfl/derelocate.c @@ -57,17 +57,22 @@ struct secref static int compare_secrefs (const void *a, const void *b) { - struct secref *const *p1 = a; - struct secref *const *p2 = b; + struct secref const *p1 = *(struct secref *const *)a; + struct secref const *p2 = *(struct secref *const *)b; /* No signed difference calculation is correct here, since the terms are unsigned and could be more than INT64_MAX apart. */ - if ((*p1)->start < (*p2)->start) + if (p1->start < p2->start) return -1; - if ((*p1)->start > (*p2)->start) + if (p1->start > p2->start) return 1; - - return 0; + if (p1->end < p2->end) + return -1; + if (p1->end > p2->end) + return 1; + if (p1->name == NULL) + return p2->name == NULL ? 0 : -1; + return p2->name == NULL ? 1 : strcmp(p1->name, p2->name); } static int diff --git a/tests/ChangeLog b/tests/ChangeLog index c4e76d1..4da049b 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,5 +1,11 @@ 2017-04-20 Ulf Hermann + * run-dwfl-addr-sect.sh: Expect section with alphabetically smaller + name when requesting the start address of two otherwise equal + zero-sized sections. + +2017-04-20 Ulf Hermann + * run-readelf-dwz-multi.sh: Expect readelf to output "yes" for flags that are set. * run-readelf-zdebug-rel.sh: Likewise. diff --git a/tests/run-dwfl-addr-sect.sh b/tests/run-dwfl-addr-sect.sh index 80da008..e257bfc 100755 --- a/tests/run-dwfl-addr-sect.sh +++ b/tests/run-dwfl-addr-sect.sh @@ -20,7 +20,7 @@ testfiles testfile43 testfile50 testrun_compare ${abs_builddir}/dwfl-addr-sect -e testfile43 0x64 0x8 0x98 <<\EOF -address 0x64 => module "" section 4 + 0 +address 0x64 => module "" section 3 + 0 address 0x8 => module "" section 1 + 0x8 address 0x98 => module "" section 7 + 0 EOF -- 2.1.4