From patchwork Mon Jun 22 14:00:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Szabolcs Nagy X-Patchwork-Id: 39723 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5A4AE388A823; Mon, 22 Jun 2020 14:00:44 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2061.outbound.protection.outlook.com [40.107.21.61]) by sourceware.org (Postfix) with ESMTPS id 39C1A388A81C for ; Mon, 22 Jun 2020 14:00:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 39C1A388A81C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=Szabolcs.Nagy@arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=r/I6C49AfETRRf+5JGl46eKQFLFBRSDXGmXOjjTmzyU=; b=lpXOB4GofNQC7+V0/8dfjzZ7f3FFPi5rMb0e3PB3Dccz65VSZbKqOYE6W0k/CKF5i4/nBSuh77bDdRuJCQMpkxMWlP2EgbTk3SrddIZ8igKaS6QK6UdEzN+gfFKivBJkibjjmFjXVR6QxvtXXoawWAH1vxk3Sur1iEbMsFdjEAg= Received: from DB6PR0501CA0043.eurprd05.prod.outlook.com (2603:10a6:4:67::29) by DB8PR08MB5098.eurprd08.prod.outlook.com (2603:10a6:10:ec::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.21; Mon, 22 Jun 2020 14:00:39 +0000 Received: from DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:67:cafe::6d) by DB6PR0501CA0043.outlook.office365.com (2603:10a6:4:67::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22 via Frontend Transport; Mon, 22 Jun 2020 14:00:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; sourceware.org; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT056.mail.protection.outlook.com (10.152.21.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22 via Frontend Transport; Mon, 22 Jun 2020 14:00:39 +0000 Received: ("Tessian outbound da41658aa5d4:v59"); Mon, 22 Jun 2020 14:00:38 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 707b5b0829d97c05 X-CR-MTA-TID: 64aa7808 Received: from a6db87968be2.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id ED836238-1B68-42F2-9225-95357352F969.1; Mon, 22 Jun 2020 14:00:32 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a6db87968be2.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 22 Jun 2020 14:00:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KgeySxEKZw2/WZpgItDcXivRztD/G2AUO4wYwtPO3VqjGSLkDRaTUq8QHWkoZIuuAGOmHAfxLt8UOO5rHJOMfa+nr4lzQntWLX4zmkAIo6Qj3D8uqPRRCvodoZ9wngiqKkZs5bU43qaCMlbal2H2uQDo/HhtpSRvzNnPn36E25t30G/iwsFQEoH/WO60Z8yjYs+HLNe/1C2X4mf7C1PdtHKbQLRaALsgtyc0pisMaDj2yUu4B71TkIjkJSpGXhxTTmfZ9PylvYC7KCUDgwLuiNvqinDCEBI3rvwsYtN1j8vP6F8imlY/ejtKt7CP9iDsPSWU5tt5PzaLVTWuA3Jexg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=r/I6C49AfETRRf+5JGl46eKQFLFBRSDXGmXOjjTmzyU=; b=S1L8g72LCIgPziC6eSPq8NZ1aG0Wz2QnxJEWPG5u+dKgdFduuRQQqwYdbaP5Oh53mKon0BxO/25eMqcz+Wv0GyvUr5otEBfFKaAVdhCz5iTC4SrUv+IXvA66ionXWStf31EosEWFjqS3i391X43QOd4EDq+iuJCIVgqj1ORH3XQSsIoLta3B+0NekUk3FXhvKSFzl1IKs1FzsVSqgIGWo0X6mmcVHf/BjSH8he8eya3w57cqo8jdGYYJQ94KTtsA2dJ3fYOLa4r4CKaMAY6ObQBYvv1xXXPOPJhyPyomFdKwziDDobvn+2f0BN6UPkqTAz/IndGRzCiekgjRjWXQvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=r/I6C49AfETRRf+5JGl46eKQFLFBRSDXGmXOjjTmzyU=; b=lpXOB4GofNQC7+V0/8dfjzZ7f3FFPi5rMb0e3PB3Dccz65VSZbKqOYE6W0k/CKF5i4/nBSuh77bDdRuJCQMpkxMWlP2EgbTk3SrddIZ8igKaS6QK6UdEzN+gfFKivBJkibjjmFjXVR6QxvtXXoawWAH1vxk3Sur1iEbMsFdjEAg= Authentication-Results-Original: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=arm.com; Received: from AM6PR08MB3047.eurprd08.prod.outlook.com (2603:10a6:209:4c::23) by AM6PR08MB4344.eurprd08.prod.outlook.com (2603:10a6:20b:74::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3109.22; Mon, 22 Jun 2020 14:00:31 +0000 Received: from AM6PR08MB3047.eurprd08.prod.outlook.com ([fe80::2404:de9f:78c0:313c]) by AM6PR08MB3047.eurprd08.prod.outlook.com ([fe80::2404:de9f:78c0:313c%6]) with mapi id 15.20.3109.027; Mon, 22 Jun 2020 14:00:31 +0000 From: Szabolcs Nagy To: libc-alpha@sourceware.org Subject: [PATCH v5 07/14] rtld: Handle PT_GNU_PROPERTY Date: Mon, 22 Jun 2020 15:00:20 +0100 Message-Id: <2fd3fdf54dcc9cf2c40808bf6b9b95a69038f929.1592834304.git.szabolcs.nagy@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: X-ClientProxiedBy: SN4PR0501CA0086.namprd05.prod.outlook.com (2603:10b6:803:22::24) To AM6PR08MB3047.eurprd08.prod.outlook.com (2603:10a6:209:4c::23) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from localhost.localdomain (217.140.106.53) by SN4PR0501CA0086.namprd05.prod.outlook.com (2603:10b6:803:22::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3131.12 via Frontend Transport; Mon, 22 Jun 2020 14:00:30 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [217.140.106.53] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 866c1f7b-dcb8-4549-104d-08d816b4a4fe X-MS-TrafficTypeDiagnostic: AM6PR08MB4344:|DB8PR08MB5098: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:8273;OLM:8273; X-Forefront-PRVS: 0442E569BC X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 5+q79baFlI0vFq1YQR+p8/30P2p4p9g/+gpD1x1s/bcm9P/0ULk391OPD629vikQ/Rovtxs8EP0zn+ypMYC7cYatWiJlKyCxdjaO5vdLDI+Uj1hgoPF0Yc8M9ETXvPtbdfMLgrunfM1gFvojwAK8K+VKzIxMwjs095rGxkODjys50kL7wAiFcd+JqC5Zr9N3SDA3laESRhrIB4FlKISJcCptBZLSTYkQt437HTuxShtGAOo44ZiurwqRyDXwE2DTDq85DgE1vaNDyS5AlQ5KFiKwkEQECez1seXS/s/Ms56NmYqb2FLPnJ0s9PNIYgRm+7Ib5bIc8JnWYQrx5EDWghDJciwjh707HHHKKzYq5T0Rr3DHOzolw07Lqx6hZ+9xlgbqHUohmL0b/2o4cqiCLqvqArJ9l7X0BhWY+bl60AY= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR08MB3047.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(39860400002)(136003)(396003)(346002)(366004)(376002)(52116002)(2616005)(69590400007)(66946007)(66556008)(26005)(66476007)(6916009)(956004)(6666004)(6506007)(2906002)(186003)(16526019)(86362001)(6486002)(44832011)(478600001)(8936002)(36756003)(316002)(5660300002)(83380400001)(6512007)(8676002)(136400200001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: RJkDWBbaXd64bLoI+647OYl3SDyheV9aqQp01GxQH1g38Y47UArReqONrplQIhLBl3949DLUeq9qR/RCvVbMcb99odaj8EreYiRaa0cQYi5HTOSXOqaS1lhvfbZYBaa7lWiO6sxw8XhV9cAWoSJyfvRZ3C+uGybxmvUaZRDxqCDYIhKidpmrkdskjfLvrHrP4txSoOLPU0GaoDkkZtBzt/OaT/pEL5HzbS9NEYofP31pNP5wkRdC7XNHs7z2KfWbqp1McRM7pCKcNGZ2LfMPdicZcQ9AVW+aYLqSwRYQvwm3PEF+23mUM18rR0N818f+/u9LnQwaftVxcgZ2o83FoMREXnzw1FvAw82WKvdxdLV7utftz/6pX5/OpQqQDTNP54PayTDRoHo8SXNmeeC2KxKPSAsify3q+E0MbVj3Xh6w9XXQu6foIh4f5Bn0ZS8GWZFT4KtrW9OOaJakRaHk1WhTwJAzC6CPfIcv45wXM5/5Y75D31nBg5FXlBwGWwrz X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR08MB4344 Original-Authentication-Results: sourceware.org; dkim=none (message not signed) header.d=none; sourceware.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT056.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:; SFS:(4636009)(39860400002)(346002)(136003)(376002)(396003)(46966005)(186003)(69590400007)(6506007)(26005)(6666004)(16526019)(47076004)(81166007)(8936002)(6916009)(36756003)(356005)(8676002)(82740400003)(83380400001)(316002)(2906002)(336012)(86362001)(6512007)(82310400002)(44832011)(70206006)(70586007)(6486002)(2616005)(5660300002)(956004)(478600001)(136400200001); DIR:OUT; SFP:1101; X-MS-Office365-Filtering-Correlation-Id-Prvs: 1ce17fe1-7eb0-4e26-7b5e-08d816b4a03b X-Forefront-PRVS: 0442E569BC X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uXICW8TDED48jpK51O/i0jmKbmLwxNudlMM8MFB+Pq3/rFJPWKgX7CjA7+/PTPuK/m+jL0PKOKg6dJeSKCxpIEcrUIIiwSm5eLeM8+rBgkmTmaXU4xwNsEtN+59Ne27ecORevT0H55ju2BKYjAqBAyRb0YuM328OfEHSQinVpAqVj7XwVW4itS26W0X0HVd74BTL+ukNO1Ywlw1zIsSQsD28Q0AKfWFhiDA4iD1AJ63UHIIoMNNhA6IHol9NwFIIfFhCXMp16wzekw0T6ThYIAIAyGTk6KX8rTHFRwV4u5+QV4mORyomMu7Fhp16CZi8Qzml45CqVV7j9gLgRD9NF+HY9bFnTrCA36xTQhUKYFnDy1s92CS1tNEQ124GzL53rIU+d5OnONPJTkOT9rDGSPUgTau3zVY4lSoA3/lHwYlFkdzkNJd2e/W403IkR47tsizgLTN4C1GW7biGrTpdRQ== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2020 14:00:39.0733 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 866c1f7b-dcb8-4549-104d-08d816b4a4fe X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5098 X-Spam-Status: No, score=-16.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Add generic code to handle PT_GNU_PROPERTY notes. Unlike _dl_process_pt_note, _dl_process_pt_gnu_property is generic, has no failure mode (invalid content is ignored) and always called after PT_LOAD segments are mapped. Currently only one NT_GNU_PROPERTY_TYPE_0 note is handled, which contains target specific properties: the _dl_process_gnu_property target hook is called for each property. Otherwise it follows the existing x86 note processing logic. --- elf/dl-load.c | 81 ++++++++++++++++++++++++++++++++++++++ elf/rtld.c | 4 ++ sysdeps/generic/dl-prop.h | 19 ++++++--- sysdeps/generic/ldsodefs.h | 4 ++ sysdeps/x86/dl-prop.h | 7 ++++ 5 files changed, 110 insertions(+), 5 deletions(-) diff --git a/elf/dl-load.c b/elf/dl-load.c index 06f2ba7264..66bd0ca0a3 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -853,6 +853,77 @@ lose (int code, int fd, const char *name, char *realname, struct link_map *l, } +/* Process PT_GNU_PROPERTY program header PH in module L after + PT_LOAD segments are mapped. Only one NT_GNU_PROPERTY_TYPE_0 + note is handled which contains processor specific properties. */ + +void +_dl_process_pt_gnu_property (struct link_map *l, const ElfW(Phdr) *ph) +{ + const ElfW(Nhdr) *note = (const void *) (ph->p_vaddr + l->l_addr); + const ElfW(Addr) size = ph->p_memsz; + const ElfW(Addr) align = ph->p_align; + + /* The NT_GNU_PROPERTY_TYPE_0 note must be aligned to 4 bytes in + 32-bit objects and to 8 bytes in 64-bit objects. Skip notes + with incorrect alignment. */ + if (align != (__ELF_NATIVE_CLASS / 8)) + return; + + const ElfW(Addr) start = (ElfW(Addr)) note; + unsigned int last_type = 0; + + while ((ElfW(Addr)) (note + 1) - start < size) + { + /* Find the NT_GNU_PROPERTY_TYPE_0 note. */ + if (note->n_namesz == 4 + && note->n_type == NT_GNU_PROPERTY_TYPE_0 + && memcmp (note + 1, "GNU", 4) == 0) + { + /* Check for invalid property. */ + if (note->n_descsz < 8 + || (note->n_descsz % sizeof (ElfW(Addr))) != 0) + return; + + /* Start and end of property array. */ + unsigned char *ptr = (unsigned char *) (note + 1) + 4; + unsigned char *ptr_end = ptr + note->n_descsz; + + do + { + unsigned int type = *(unsigned int *) ptr; + unsigned int datasz = *(unsigned int *) (ptr + 4); + + /* Property type must be in ascending order. */ + if (type < last_type) + return; + + ptr += 8; + if ((ptr + datasz) > ptr_end) + return; + + last_type = type; + + /* Target specific property processing. */ + if (_dl_process_gnu_property(l, type, datasz, ptr) == 0) + return; + + /* Check the next property item. */ + ptr += ALIGN_UP (datasz, sizeof (ElfW(Addr))); + } + while ((ptr_end - ptr) >= 8); + + /* Only handle one NT_GNU_PROPERTY_TYPE_0. */ + return; + } + + note = ((const void *) note + + ELF_NOTE_NEXT_OFFSET (note->n_namesz, note->n_descsz, + align)); + } +} + + /* Map in the shared object NAME, actually located in REALNAME, and already opened on FD. */ @@ -1188,6 +1259,16 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd, maplength, has_holes, loader); if (__glibc_unlikely (errstring != NULL)) goto call_lose; + + /* Process program headers again after load segments are mapped in + case processing requires accessing those segments. */ + for (ph = phdr; ph < &phdr[l->l_phnum]; ++ph) + switch (ph->p_type) + { + case PT_GNU_PROPERTY: + _dl_process_pt_gnu_property (l, ph); + break; + } } if (l->l_ld == 0) diff --git a/elf/rtld.c b/elf/rtld.c index 882b070cc0..3ad2bf5079 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1508,6 +1508,10 @@ of this helper program; chances are you did not intend to run this program.\n\ main_map->l_relro_size = ph->p_memsz; break; + case PT_GNU_PROPERTY: + _dl_process_pt_gnu_property (main_map, ph); + break; + case PT_NOTE: if (_rtld_process_pt_note (main_map, ph)) _dl_error_printf ("\ diff --git a/sysdeps/generic/dl-prop.h b/sysdeps/generic/dl-prop.h index 6b0f2aa95a..ceb6f623ee 100644 --- a/sysdeps/generic/dl-prop.h +++ b/sysdeps/generic/dl-prop.h @@ -20,11 +20,11 @@ #define _DL_PROP_H /* The following functions are used by the dynamic loader and the - dlopen machinery to process PT_NOTE entries in the binary or - shared object. The notes can be used to change the behaviour of - the loader, and as such offer a flexible mechanism for hooking in - various checks related to ABI tags or implementing "flag day" ABI - transitions. */ + dlopen machinery to process PT_NOTE and PT_GNU_PROPERTY entries in + the binary or shared object. The notes can be used to change the + behaviour of the loader, and as such offer a flexible mechanism + for hooking in various checks related to ABI tags or implementing + "flag day" ABI transitions. */ static inline void __attribute__ ((always_inline)) _rtld_main_check (struct link_map *m, const char *program) @@ -51,4 +51,13 @@ _rtld_process_pt_note (struct link_map *l, const ElfW(Phdr) *ph) return 0; } +/* Called for each property in the NT_GNU_PROPERTY_TYPE_0 note of L, + processing of the properties continues until this returns 0. */ +static inline int __attribute__ ((always_inline)) +_dl_process_gnu_property (struct link_map *l, uint32_t type, uint32_t datasz, + void *data) +{ + return 0; +} + #endif /* _DL_PROP_H */ diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index d08b97a5ef..c525ffa12c 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -910,6 +910,10 @@ extern void _dl_setup_hash (struct link_map *map) attribute_hidden; extern void _dl_rtld_di_serinfo (struct link_map *loader, Dl_serinfo *si, bool counting); +/* Process PT_GNU_PROPERTY program header PH in module L after + PT_LOAD segments are mapped. */ +void _dl_process_pt_gnu_property (struct link_map *l, const ElfW(Phdr) *ph); + /* Search loaded objects' symbol tables for a definition of the symbol referred to by UNDEF. *SYM is the symbol table entry containing the diff --git a/sysdeps/x86/dl-prop.h b/sysdeps/x86/dl-prop.h index 516f88ea80..4a8ebc573e 100644 --- a/sysdeps/x86/dl-prop.h +++ b/sysdeps/x86/dl-prop.h @@ -191,4 +191,11 @@ _rtld_process_pt_note (struct link_map *l, const ElfW(Phdr) *ph) return 0; } +static inline int __attribute__ ((always_inline)) +_dl_process_gnu_property (struct link_map *l, uint32_t type, uint32_t datasz, + void *data) +{ + return 0; +} + #endif /* _DL_PROP_H */