From patchwork Tue Jun 28 16:39:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 71125 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp1692792qgy; Tue, 28 Jun 2016 09:41:06 -0700 (PDT) X-Received: by 10.98.78.18 with SMTP id c18mr3411135pfb.129.1467132066769; Tue, 28 Jun 2016 09:41:06 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id su5si34399497pab.230.2016.06.28.09.41.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jun 2016 09:41:06 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-71212-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-71212-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-71212-patch=linaro.org@sourceware.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type; q=dns; s=default; b=oeC26 EouUZtV7E5JIMYj/Fz9inhfcg7/3wQ5qDfedps5O+TRGjedvT+9TUxoy3TnPHSxp g+kyCQxGJwW1zj55LTaHGecKfGc65YMkR1K7bzEU5pO0BhnzSU+BUqQ06g1Ndu80 HXXQLPmYJF8jOGsADfy5HozFX0aOVPrC4pL/HQ= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-type; s=default; bh=30aylJC1Wrf M2hHJ4GJwZpMo2o4=; b=yPPhoy0xEAxdZpWqgPp7GJtxwRrkwrSrgSwMOVFwTp7 S33a2+QVlw9KmK8CAqwQUZzo1Pt3PeuTypVxbw7q81ovj/uK8NgyOkirh8WtUc4c rh+foYsDuCHZXdq0RrHha/TwzhxAWCCviquNmeAGZ9R+a6kK9HrpQXgTw4tHPnlM = Received: (qmail 12211 invoked by alias); 28 Jun 2016 16:40:44 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 12182 invoked by uid 89); 28 Jun 2016 16:40:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: na01-bn1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: , CC: , , , , , , , , , , , , , , , , Andrew Pinski , Yury Norov Subject: [PATCH 03/23] Add dynamic ILP32 AARCH64 relocations to elf.h Date: Tue, 28 Jun 2016 19:39:18 +0300 Message-ID: <1467131978-669-4-git-send-email-ynorov@caviumnetworks.com> In-Reply-To: <1467131978-669-1-git-send-email-ynorov@caviumnetworks.com> References: <1467131978-669-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: AM5PR0901CA0018.eurprd09.prod.outlook.com (10.164.186.156) To SN1PR07MB2253.namprd07.prod.outlook.com (10.164.47.147) X-MS-Office365-Filtering-Correlation-Id: 60e48d93-0f81-414f-1e9d-08d39f72e842 X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2253; 2:mzi9aoe6Hv605Ce1IYRD3xbo9vZKGwPw/qxswWFKGg67evHouhS01arI0DLuHwVZja0WvyZq7S4A64RIOzNvP8AQl+oVkA5JUHRcim7bsOV6jri6P5vf/Tde9nE4WR1HRQHyAIzIfyQ7WjJEEqrAZ7oZ/xtIlb6es4RZfY0mWROemu8pJpCCYva64QdfYbAd; 3:PIK6kd/g+zTO78xqjYEIzmAc3gpdno+65yuop5aMg7S/Rfpihkk1tGtUWUeb18dUODeyW+6C8NnUl/89HAz4JBMF88473K04XlaAsEVt/oramXAHh3T8/IbV6rLbGlZx X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2253; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2253; 25:serQ0aRFQCYpWX5m4evFui8paRCag8r3y9a7Sl6EGYDpU4LJpbDoTf0cc2gx9mSo3ul2rqwD6Fl3/1e1XCuyoYJlB8cm3IL3az+vPCNoyxLzrjdDWsb73JOxe7QlH0K3GzM7F9Kv2kwzKm0qfULvHJKFw9OEcZMZk+4jhvcSYKzkAAjlr9Stcgea1azhDMjO84Kh+BRK2qqKRzAk+BH60McD63JLZNDeCXmHeKKbR3kNe6kyPsHlh2Dv/1dbSVBG0eien+4k0nCGfQTOzYGHkKzECtmxR0kL+Z12z5J0P1575Om54xOjePS1Iw0MOky1har/fP+YW3uuJ0Ng9Cq6MSuDMlBFdMZiXp/JPoIuHB0lk72PVAdPpLD/RN76zaVLj5n63oqmBP1tUeGtoG4sp9AnOyT7kmeA0JFmeSAcj89aE64Ai3cnDG/gfliZ6wIfYVh3MKKEVESmghixo7hmhWWAanbS/v2nANWTxbZlWMBwrZvy3ACHWWyiFGH/9YVpjcEmtI2C8xLouWZiDD1m3dXC6XhGkkPoqTMd/rUr9jS3BjusoQmWSmf10OeAgvOCoYAAYQq/UpwHJHoaBg4zHRhwwIM9iT3TlUxK/8btfrniombwVY7Mo9qdo+ipJiGACP8LFS+ckn2YNkNIxxavMNdqWjrvP/LeaNreMok3lESImLHszD7pIG28N01Y7APhOXa7WVU1HzoZroQ15Q52Qk6Y105Leb6fG6EIL+gjR7ozPmiAutMrLfHUt1IUKLBq0qLjCimf8D/3O8V89M3uDA== X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2253; 31:faPQETpKdQHrJMGLfTrcTviTa9XP9n1cCaCdA4fV/5atSvtnCZCABB+KQDfV28ZfqvI4TBM5rdYnb1jE7xsQG8m29+9xshcoXX1XKiMNIPTWStH0oRsIrRzY5Rm2J4Nk5ZoytJNWbxyyeuSoIYRsIwfe8jvg61UcIeVP2qv+W3TR29b8njoD2bVAJnZdEP29UcpOyII1WljCFwrtG8oTlw==; 20:AO6Bw8lbyYChlNXfjy0aV9v1IUltyIgWfBMSBN9uqFL4w28lO0tltwwezoM9oiVcI4+gl2RFvrHbmU8ercGmKa+YY1L846WQeXprkwMwoLwQoKB/Why4xfkCo/ygSQ9P60Fo7rnaWm9KMkp4NKz1bAWFwpXSn70DlSYc2UZQzhdXjIP3H0QWx27vVxaABMgGPvvbhPeDJ5gwRHNMmT09k3OjSQsr9YO2a3vAI+tarkz3ctYyk/krbfFCz2nvZofIwIOLcSQWO4rTZLHCG13wCL48V5y3U+izuZQ7ZZwpWpaJmSM+2zMmVpJWxPEjSxkCVlQo6dWthdZBdeP33DEs2JpzckFz0U/4AOkOlmOaiq2JFq/ZcmpAtfQ0J8+jgSjjhEPLQsSNLiG9rMUa4NPZ9G0ZcUM/FXpf0oviitIbJ3a9bEZVHQS/sLTaN6U0ulgsY0O1Oy87utkAsz1Vxy39YzzPZbNeQy2BSs8IkA5w2ResNyZXiVHcrBbablKt9bH96BFcUPQ/lSn0jtOpS4VgxRbRLDdg3jpHqpkPHCmjflIcv0JzUCnAXq58nNpyIix+q7GUlgV5yvgiRxJK9/6lqrkhlyEk692/bxa9zXK21gc= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001); SRVR:SN1PR07MB2253; BCL:0; PCL:0; RULEID:; SRVR:SN1PR07MB2253; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2253; 4:mgLhWQk/4KXM3SUVx+ECtCXj8YskLGns0K8ysMYXCY6r7hgZOl1AriYDJoxPspahrER4zHZjvu+kK14IHTDg3STNyuO33Nc6H1x32MqSs+eF/chfI9fELx3pH3MEpqfaDegzyNAAA2gru04HjaaBk5f3zgub7JRgM2f7mcIyNBx1/TfkSFRWXwvcB6mpi/tizhwT8cLyWDCDbHTPsu3W2/qXS48FMkIDsp4hFaCKAAzck2ZutDlBCW4AG6HQiFxItpl/T6N0UiON34XCjscKUZpVNwKunRf4rF27cufDIE/SlLNf3k7nWy+sKCiRm2Ng6/8n8oOsmwuAJnaUWYj5vR4GXbnXbV1+Jm83ONycJ/yPI3GRYojELeOxEpUmxUKZ X-Forefront-PRVS: 0987ACA2E2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(189002)(199003)(92566002)(229853001)(3846002)(76506005)(6116002)(4326007)(50226002)(106356001)(4001430100002)(575784001)(105586002)(77096005)(19580405001)(47776003)(2906002)(189998001)(7846002)(33646002)(50466002)(48376002)(66066001)(81156014)(8676002)(101416001)(305945005)(586003)(5003940100001)(107886002)(19580395003)(76176999)(68736007)(2950100001)(97736004)(81166006)(50986999)(7736002)(5001770100001)(42186005)(36756003)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR07MB2253; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR07MB2253; 23:rE3b38axGdsgpfIdcTXWHBrbU/tpuIFqTRn4Jp/AC?= =?us-ascii?Q?L70+42VYIegVnXV0a35KuOrDjPgbD/B9ACQLWbZc/pK+iKKEvB/Dc2FTTpuR?= =?us-ascii?Q?5Kbgb0wpb+u2nN1DmkAARxiPs8SZkgpPK+1TwBm3jKvvow6jmxxP7r73HU/k?= =?us-ascii?Q?xlCiEzjifyua2VDob2HkvhxIkfDpfmzhejeguvYX+4XPvq8K/UlbW4YSf8VQ?= =?us-ascii?Q?VQN4qbzaxvyYuZqz5mkCIZVeQD2JxTN3KbLXY+lWuvnBpFsqtXARvecul0eL?= =?us-ascii?Q?3lziH06REVUufKEAnV/X5+XHoOGrpaJnY/Ie4zqv4YXnNcV2I62rhNFfNHgb?= =?us-ascii?Q?bq1WE2zHrUEiAjX09UIdl6RenuO4KxdoMLZMKJ8o2drkoaXssOUXpy6vKb1H?= =?us-ascii?Q?58vF8fylwmTK9bCgBs8aoqDq2AkjDmxsNwRX0ifo132iyUxWxrgPaFnRCagg?= =?us-ascii?Q?YXVmxKr+6E/G+oLEQlEeFprmqouPxh/7APacfHiO0dtuI6DXrG3BJLFjFnqK?= =?us-ascii?Q?/OY45oeUDF/gzXsQU2ysOrZSlozdWj0uLaRxzldbnfGpjvseoTFdtVa6IIBk?= =?us-ascii?Q?iV8IcIZtKrQJqz3NJo5UnScuF3Wzi4TToWu6QkW1UwtidTV5FWNrvAwsDNKD?= =?us-ascii?Q?5tDI8RmcG3kwV/RqsrkCey9ABgG4Jz2DvldNopbpDqldEpHJApz1YNooFjlr?= =?us-ascii?Q?DT7ezDjCgyZ+R499sq2FUTkAqZxXbe/rRVRIq8wSQUIdyvRoF6ZZTSWNnVdN?= =?us-ascii?Q?93FTgIerXK5kDYMaJn/GnrQBg11SiHyms5kYIHaVrCV2Dkg3HKuVbIvx+901?= =?us-ascii?Q?Beil6Zesyoc8bnrQYigt0zGCoqG9ilqhBBfXgR28KcViHMm5wEmRtiN2KNnY?= =?us-ascii?Q?9yez56Z61hjkrPUpiZX2LV6tp8WHDQIq/ODEuepdRQvYdInS55V2MiOvXYOx?= =?us-ascii?Q?mgwyRv7tQJ1WrWbJSZG8WaDiImLMoTybj0m7BIg0h/tvniSwGRqzb2GD+sC0?= =?us-ascii?Q?UHfi/nba+5WM2UN4R5MaFUVABqCE98yiOEReA5FRstGVKdwnMhhID6Uxg1rk?= =?us-ascii?Q?c8YSlNveklV0bBARguQoLt0gdmR89c97jjk4Am/6l7W1qaC5d1AK8k8I9IPp?= =?us-ascii?Q?d6eo3lih1vs6noTSL7j4A6m2M/8Ja5CpiRsVYAAvoeww4xMQLN64Qk3Fv36w?= =?us-ascii?Q?601qczLj5VhEYs=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2253; 6:+7+UFCnRxIS7gsIDfRwJezE6qIXWYgY/L+lWCPdfkL71/p3W5dJ6Sfb67f/c3bRYUEnmpelqilfbCI4iFbq8OGQwqi7nENIUPog8+am6fT7kD5uh+UNRdMPvaGgxPG6DWDXImzs0zGgjCqD4SYshhoASiMvpAG2+thbIS8mk5xkVDNRZKtsHE9bn5l1F7cYCAFpWu/p0tWJwkIJWnPhXzINX3CI/RW96d/mChIixD6XYIPTpRdKngWMMdP41HUcNp9gZOvxLvBgE3+5HDkObWVRqesWxoFA3fTDrlC1uAz8=; 5:MgJFH226IT0U8UkFXb8yVO76VbqvTlgf3i3tnKPeHcWyTC7ESIkBdWfJ50xvK+NmykbGG3qxe7mfTMWvtBcIqCdhg7ZeUgIeeS04xobe3JGEcwruX7efTB18hgCGTcsYYpznS7cqe8nY9xZHEsl65g==; 24:BUg7FPiHimO5Sd5d0s16xzss/e9ys45J4GcMlPFUWt9I8iofAuj7oadf13RnpywGWgmKJAZElzEh1SbUrltM5yp4W6F2cWDrgXWZjzLck0k=; 7:KeEp5oViBfbQuupAF5XLzPFryRb8dHb43LAo4ZyJryqnmjkur1IjA4dj+8bozX2gjaOlvIXSYunxSjqhlNzW/y2kgxYsYrDwBIRPMM+CwVJBUqoMMOctpK7jc0YJKum/AjpVU7nsnhAKjkiFlfRdDwm07s1KcE5BCDsP4c1ThGNo383lFTF3Eo6pmAh5qWv1m1l6rMN051KgoVdhUvdI6pzog0MHbWArE7WwVwPhiy3AzDm4ISG+hJVb1y/uPTTb SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2016 16:40:25.7194 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2253 From: Andrew Pinski elf/elf.h (R_AARCH64_P32_ABS32, R_AARCH64_P32_COPY, R_AARCH64_P32_GLOB_DAT, R_AARCH64_P32_JUMP_SLOT, R_AARCH64_P32_RELATIVE, R_AARCH64_P32_TLS_DTPMOD, R_AARCH64_P32_TLS_DTPREL, R_AARCH64_P32_TLS_TPREL, R_AARCH64_P32_TLSDESC, R_AARCH64_P32_IRELATIVE): Define. Signed-off-by: Yury Norov --- sysdeps/aarch64/dl-irel.h | 3 ++- sysdeps/aarch64/dl-machine.h | 53 +++++++++++++++++++++++--------------------- sysdeps/aarch64/sysdep.h | 6 +++++ 3 files changed, 36 insertions(+), 26 deletions(-) -- 2.7.4 diff --git a/sysdeps/aarch64/dl-irel.h b/sysdeps/aarch64/dl-irel.h index 63a8e50..460454f 100644 --- a/sysdeps/aarch64/dl-irel.h +++ b/sysdeps/aarch64/dl-irel.h @@ -23,6 +23,7 @@ #include #include #include +#include #define ELF_MACHINE_IRELA 1 @@ -40,7 +41,7 @@ elf_irela (const ElfW(Rela) *reloc) ElfW(Addr) *const reloc_addr = (void *) reloc->r_offset; const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info); - if (__glibc_likely (r_type == R_AARCH64_IRELATIVE)) + if (__glibc_likely (r_type == AARCH64_R(IRELATIVE))) { ElfW(Addr) value = elf_ifunc_invoke (reloc->r_addend); *reloc_addr = value; diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h index 282805e..a16cb11 100644 --- a/sysdeps/aarch64/dl-machine.h +++ b/sysdeps/aarch64/dl-machine.h @@ -21,6 +21,7 @@ #define ELF_MACHINE_NAME "aarch64" +#include #include #include #include @@ -190,15 +191,15 @@ _dl_start_user: \n\ "); #define elf_machine_type_class(type) \ - ((((type) == R_AARCH64_JUMP_SLOT || \ - (type) == R_AARCH64_TLS_DTPMOD || \ - (type) == R_AARCH64_TLS_DTPREL || \ - (type) == R_AARCH64_TLS_TPREL || \ - (type) == R_AARCH64_TLSDESC) * ELF_RTYPE_CLASS_PLT) \ - | (((type) == R_AARCH64_COPY) * ELF_RTYPE_CLASS_COPY) \ - | (((type) == R_AARCH64_GLOB_DAT) * ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA)) + ((((type) == AARCH64_R(JUMP_SLOT) || \ + (type) == AARCH64_R(TLS_DTPMOD) || \ + (type) == AARCH64_R(TLS_DTPREL) || \ + (type) == AARCH64_R(TLS_TPREL) || \ + (type) == AARCH64_R(TLSDESC)) * ELF_RTYPE_CLASS_PLT) \ + | (((type) == AARCH64_R(COPY)) * ELF_RTYPE_CLASS_COPY) \ + | (((type) == AARCH64_R(GLOB_DAT)) * ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA)) -#define ELF_MACHINE_JMP_SLOT R_AARCH64_JUMP_SLOT +#define ELF_MACHINE_JMP_SLOT AARCH64_R(JUMP_SLOT) /* AArch64 uses RELA not REL */ #define ELF_MACHINE_NO_REL 1 @@ -237,9 +238,9 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, void *const reloc_addr_arg, int skip_ifunc) { ElfW(Addr) *const reloc_addr = reloc_addr_arg; - const unsigned int r_type = ELF64_R_TYPE (reloc->r_info); + const unsigned int r_type = ELFW(R_TYPE) (reloc->r_info); - if (__builtin_expect (r_type == R_AARCH64_RELATIVE, 0)) + if (__builtin_expect (r_type == AARCH64_R(RELATIVE), 0)) *reloc_addr = map->l_addr + reloc->r_addend; else if (__builtin_expect (r_type == R_AARCH64_NONE, 0)) return; @@ -257,7 +258,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, switch (r_type) { - case R_AARCH64_COPY: + case AARCH64_R(COPY): if (sym == NULL) break; @@ -275,15 +276,17 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, MIN (sym->st_size, refsym->st_size)); break; - case R_AARCH64_RELATIVE: - case R_AARCH64_GLOB_DAT: - case R_AARCH64_JUMP_SLOT: - case R_AARCH64_ABS32: - case R_AARCH64_ABS64: + case AARCH64_R(RELATIVE): + case AARCH64_R(GLOB_DAT): + case AARCH64_R(JUMP_SLOT): + case AARCH64_R(ABS32): +#ifdef __LP64__ + case AARCH64_R(ABS64): +#endif *reloc_addr = value + reloc->r_addend; break; - case R_AARCH64_TLSDESC: + case AARCH64_R(TLSDESC): { struct tlsdesc volatile *td = (struct tlsdesc volatile *)reloc_addr; @@ -318,7 +321,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, break; } - case R_AARCH64_TLS_DTPMOD: + case AARCH64_R(TLS_DTPMOD): #ifdef RTLD_BOOTSTRAP *reloc_addr = 1; #else @@ -329,12 +332,12 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, #endif break; - case R_AARCH64_TLS_DTPREL: + case AARCH64_R(TLS_DTPREL): if (sym) *reloc_addr = sym->st_value + reloc->r_addend; break; - case R_AARCH64_TLS_TPREL: + case AARCH64_R(TLS_TPREL): if (sym) { CHECK_STATIC_TLS (map, sym_map); @@ -343,7 +346,7 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, } break; - case R_AARCH64_IRELATIVE: + case AARCH64_R(IRELATIVE): value = map->l_addr + reloc->r_addend; value = elf_ifunc_invoke (value); *reloc_addr = value; @@ -374,16 +377,16 @@ elf_machine_lazy_rel (struct link_map *map, int skip_ifunc) { ElfW(Addr) *const reloc_addr = (void *) (l_addr + reloc->r_offset); - const unsigned int r_type = ELF64_R_TYPE (reloc->r_info); + const unsigned int r_type = ELFW(R_TYPE) (reloc->r_info); /* Check for unexpected PLT reloc type. */ - if (__builtin_expect (r_type == R_AARCH64_JUMP_SLOT, 1)) + if (__builtin_expect (r_type == AARCH64_R(JUMP_SLOT), 1)) { if (__builtin_expect (map->l_mach.plt, 0) == 0) *reloc_addr += l_addr; else *reloc_addr = map->l_mach.plt; } - else if (__builtin_expect (r_type == R_AARCH64_TLSDESC, 1)) + else if (__builtin_expect (r_type == AARCH64_R(TLSDESC), 1)) { struct tlsdesc volatile *td = (struct tlsdesc volatile *)reloc_addr; @@ -392,7 +395,7 @@ elf_machine_lazy_rel (struct link_map *map, td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)]) + map->l_addr); } - else if (__glibc_unlikely (r_type == R_AARCH64_IRELATIVE)) + else if (__glibc_unlikely (r_type == AARCH64_R(IRELATIVE))) { ElfW(Addr) value = map->l_addr + reloc->r_addend; if (__glibc_likely (!skip_ifunc)) diff --git a/sysdeps/aarch64/sysdep.h b/sysdeps/aarch64/sysdep.h index 594ab0b..05d6f8e 100644 --- a/sysdeps/aarch64/sysdep.h +++ b/sysdeps/aarch64/sysdep.h @@ -21,6 +21,12 @@ #include +#ifdef __LP64__ +# define AARCH64_R(NAME) R_AARCH64_ ## NAME +#else +# define AARCH64_R(NAME) R_AARCH64_P32_ ## NAME +#endif + #ifdef __ASSEMBLER__ /* Syntactic details of assembler. */