From patchwork Tue Jun 28 16:39:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 71134 Delivered-To: patch@linaro.org Received: by 10.140.28.4 with SMTP id 4csp1693625qgy; Tue, 28 Jun 2016 09:42:49 -0700 (PDT) X-Received: by 10.66.49.134 with SMTP id u6mr3460905pan.118.1467132169058; Tue, 28 Jun 2016 09:42:49 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id h128si21384694pfc.215.2016.06.28.09.42.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 Jun 2016 09:42:49 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-71221-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-71221-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-71221-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=EoCVM Gq2aUalPff3Jm5d0/PGlJLVyXgsnAO3VkDaVe0UDXh6O8BCu8wCeNar9ts5RARmc d0gj2OLqZbWHi2mwJHG5sFEKxaZO9nF41PZ4YLhyCEbK3SDtBcKLBpwS7SFP/fd3 gsoMVd1yTDKSHZs0+d4FblRgo08fMqwvF5HRrM= 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=eFRcoOUFQ20 jMZ/q13+qwaqQODQ=; b=hMvp1Ytmrkn7+b2DLHhjgJBATEyZLQxNk/ZOnpYeu24 L2KIMaAZipIIoX15M0KoW91TVtHONwO0SZIGFQlhOuT9RJFVxdTKLyn3XRMFdhr+ vGwnfuEN5pu8Bw73/NQB5k5shlF66GOeyhOGBRjlev3WhllUN4+JPwnt+bI61x7A = Received: (qmail 23073 invoked by alias); 28 Jun 2016 16:42:22 -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 22978 invoked by uid 89); 28 Jun 2016 16:42:22 -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 13/23] [AARCH64] Add support to ldconfig for ILP32 and libilp32 Date: Tue, 28 Jun 2016 19:39:28 +0300 Message-ID: <1467131978-669-14-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: AM5PR0901CA0012.eurprd09.prod.outlook.com (10.164.186.150) To DM3PR07MB2250.namprd07.prod.outlook.com (10.164.33.148) X-MS-Office365-Filtering-Correlation-Id: cbd86519-851c-4045-65aa-08d39f732356 X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2250; 2:kZMabh/F+yU3478haRewnwM9HbVG2t6LQJGkuF5Nh0CD1BsDB9qoXy2WABW3DUuAuEfe5/ihAzpeQtc0Pqulqsl+hf9FG8pddSlj6uoHw/PdU2TcSvRlnQByjHR4WiTuZAv4gbcrfRgXEcZB2kqacK3Rag8GXmmrpsriNQiTWC+n7VLuS1lroL3ld1VWszMr; 3:TYiFqTakSplUhaEZp5sF8lyqITO6Llut9KPgJhR1e30yx0o4DyjeZh4mkGY49F503hSA8jQuWHkIDda9rw/eZwsdQeM8mgi5vIZiJ1+pCMX47p92arbJ5BGUxyG83OCj; 25:6XfRBtyZ/ZODpUv8jaSTs5wKT+I93If5zOPIfRxbgkF0Dfn1yXj/OWdw/EWeYIusg+cvTp7HdUStNiNePjBVoEJmtMaIYwFZ6sWMJJ+LOQbmRUFaJzmalDZWXPp+zfoMv9+a/h3SxuhqpCW99YFxnV4wWjgs6hXUhcnSs+kC0eH9TR77BLHgmHnQekV7cvXwYaC7GwLuOzJ/tJz0xUDue0SQV3wwgsESqn5Ka3KdEYANu24s5Xz0L9eDw65QtDoA3oJBw7Cd4tOpVAHGo1B1GX0qil0SDRYI3LJ9nCbkvfBzaUyk9zBVqMxC8OQc9aM2lvHN0wmkPF4w9UTOxx/AkaoeuVur0FgAR/vCTHYhkyhbFEOzRqclWVZ50TBhvVd/3yxCP9hL/iKMauqGYl7u8e3h+NNNHSiBT2L0vDsulYQ= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2250; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2250; 20:iOs11+UrQ6lZDv/ACylgPmnLvxOSuWzo7CE9bIvk8kg/KLauR6yaChUWqePJyElsrREgQ93rg2Ssxqm8bf3flM9QJ/ULAC46+95N9vb7ZNHaU9mvsRMb69+js5KqH7NuTjTjcV4+ENWCg47gjggdfBa4UxNUSBl0vZ/GH3M9P2XI/Ixm7k2WZjq6sVB6U+snjTsBxF0w5leYTNwPgO7YuSHrfFWnVN24ypX0DggvpWrhIMSuCJQUIIXOGiBr8Y/WuKtohJlpWTdcb8OdV1OLdEr1a+M4uJkjmkf4fpifEHA9J9HXvyxKYgfKYp15ESHQs/b4ioemciDIx10OVLeovspcq1ilOnATpXr/mT7C/Cb9vav2AaEutfC6C/IliyilgviHhWTyVIbOchmW2+uztP1Deon9i1dcTYaWGLBJHhdIGNJqNIztWGz4Y9SHrsVnwBpcbh8SxyA7nbnnxrjfDdm5BNUCGES0TYsfGI30Fn5iVJuPT+00YmU5lEM5EEFGmKtQPuyJTzjKUpKRKdOpUUF5kDE8dVKnhKJPdQ6P+bl28bQQI/2uPb5ZTMoh79z53XEWeXKo/G6YUz0AFR8WZfaVOFe2tQzq1yKimOedqrw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001); SRVR:DM3PR07MB2250; BCL:0; PCL:0; RULEID:; SRVR:DM3PR07MB2250; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2250; 4:O69XXV3SnW4Xjd8eYi3h33/IvddYsgGd6Zb6bQQngjeKhvZDjKNfe6ANZnZIH2QFwyLoRiygyI38ztseA0ZCoTlqbaPZHam+XdUNaqBN958rVMdA7J0PJknWo4PIy+4rL7HqfoqnqSSFICPiPG+kAAhvA6/SWxLEV0cOdEMyfWCUcDbzy879w6W6rQqErft5BGi2SPA9GaXSEaGkX6mDrJa8Okei0HOeANBocjI3YYDmx7z464Kp42hx6EGIXYBUKvLBgZ/UJMX8fxHwYap4mi9bqJ3wh1gI47xy8uEDq1YYqAjtWCO+G/sh80QrAeAHziDNiiMbw0R715g9HbcOWwy7Ji0kI3cBnrVN0mB64/jrp8jJ84hIyENZODaOULHh X-Forefront-PRVS: 0987ACA2E2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(7916002)(189002)(199003)(42186005)(3846002)(6116002)(2950100001)(107886002)(77096005)(575784001)(81156014)(81166006)(8676002)(586003)(48376002)(66066001)(47776003)(189998001)(92566002)(5003940100001)(76506005)(68736007)(50466002)(36756003)(76176999)(50986999)(229853001)(7736002)(33646002)(305945005)(4326007)(7846002)(4001430100002)(5001770100001)(50226002)(105586002)(2906002)(19580405001)(97736004)(19580395003)(106356001)(101416001)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:DM3PR07MB2250; 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; DM3PR07MB2250; 23:i6dPwV/bHYk0JuIY/227iIDCPmiSNRk1Q5UhuXr+H?= =?us-ascii?Q?USa/fj9+m/5sbwP3544WwMH8YiCc/iPcw+9r7VDc55f0dyEeSh8mIGWNK8Ne?= =?us-ascii?Q?bMEFRrZgfRe6IVSnaHK6Tq1pXMV+WA3sdumvepgNezl8pyG1ej1Txdia5Ast?= =?us-ascii?Q?xMBZ0DnMD8q0ewfw/W6gMghGcdaDyBRuoXpw8IWU3xvcQntx0A5a5SIA+BXv?= =?us-ascii?Q?oC4xnqooi5mv6F8S1cduKHeReClXJuZV15lFD8anImaxjXUvxr9DbHXkzpvt?= =?us-ascii?Q?FKTTzC/NCaAsw2Dz+G7P2N2fgNLm43glutf8LcLMBMMOWiabZNvkRFnBUJ3K?= =?us-ascii?Q?dmp4F7mIHRljV7/AI1tjf+2wr39nUCxxyYiTrgMoeWVe6kHslA2gJamXBw17?= =?us-ascii?Q?AlI2dLOWAeYt94SgfBpkZlK5rug2mC5NOxgYxfLDAYQDwy++xhFZlGo0AUrh?= =?us-ascii?Q?KpJ+kfru7QmSvEs5mzZC3MUNMZ7EtOXj0rZAG/25mhGlkALhrxsbbINA6yGi?= =?us-ascii?Q?OI+f0s7asz6AXP8m56BYfkGcGwcZshpooaj8F6/yckDAF/xkjjWPhLMP4JFN?= =?us-ascii?Q?+KyK6ElBGBXp1eb7O2b/afoSDA4v9woD+TN7eWfVwC/EnsgTqwyEFFaBykP4?= =?us-ascii?Q?WNZ6JkMsk6l5mAZ7V4tiwmEQF5Q9fzD8aIVKbgL1HKc9MaViORbHE0Bl6e/z?= =?us-ascii?Q?0+5Dpj2hFi6NGyvs4LbGT0ScsMEtMWGf/+VMkuxZZYPNUCn/G7pMJ3NcYDTk?= =?us-ascii?Q?fmAiH26qJttCmRkQUoH2wYgmWwq4AtKBIw+Bex5gl2UK0Hb00YrIkPKSf7aZ?= =?us-ascii?Q?6Ps8/+j06LdE/6cnMzbsA+Gk58VUnpI9gv2RcUd6qjsMFTeZvADil2zJhSeu?= =?us-ascii?Q?JObIYSZRNi8B+E88B42ho1lCqkduS4FbkT4FAM3i5BbvIasuE8Eh6QikP+xP?= =?us-ascii?Q?Kph51w8DBBFqfi67B7Hucyrf8sUVg2hqzDkl8QCvFTh02GNqDFCNAHYNuxtB?= =?us-ascii?Q?39AwpBKDdPKIyeqDsTK5b7UNc6er4GKH7fMNW231UNIEm1nWmNsFLLY4HSuU?= =?us-ascii?Q?gh2OtYmOAuELS98/bSeRQxirNkGpLVM6/dcDn5kEjZQB05exZIabvFm1nFBl?= =?us-ascii?Q?oaVfHtyJt0E86xHeg7S2ZkxBkSoKvCd49WdKwUEjdJeIrQGeHDPJIGtOn6lo?= =?us-ascii?Q?OO+vWUqroCFEEA=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2250; 6:TOLB/YRkIGnEtdHpxELzXlZl7tdqzytMs/+TmmOmD66UKyBW2tXOBcfwmikbrLW49et6aiWp4C54n27Q3afn4xDDUbQYrSHoAqc6cFnytPFjYW+NbLjsaOikwfBFOx3F4QMuYk33b2XrTuZuvK239Nj0vD7F0sGncTNAbcPMQb+B7cE2+BJQIAILaT7bjHZosQKraMgg+uQ86OKzdaC0FVjzPT+KQFriptvsAUG4MVPk/B0fe7ywHtnEkx5QmWNOC4VmHMDnXgOcTDvlvE1LOXW+agzI7I+eBLhanNvuPlOdmTg6eAvqLikvS1RMLjBq; 5:N5VVg1eoU03Xk5QVCcxryO5dGxdgbYI/Q+Oe2XSkf+Ta3yW92sJqunyUUXC+EZk4tDrF0sVPEfJa8nR5jfGaZTMEFBeS8Un+epYSwhqQfdVgaZcTz8jI7D2fnE0CCO0jVICodt11o3Af4jy+1rOqDw==; 24:hA7+uH482j566Oxm8T9vfLDNUHsTsHRUOZItbw6XWe3N762GEKCeDtSPvYKP8PRunEU4Ap2Wqq0RW7Kc3BjiRE6GrXmBKvxJinfVEysI3kY=; 7:W700a4DLdp9VkWDeX+eXegeUDZX/XWVcBObCQj0QJohdr0s5J6qw3wujEa400iPCAAljGes9Q5w2WYNQGV/dxcMMAEFIVKsrIkdApK0Sou3FRXxS4RN2xXkm0UF/6wT9PVwfEKx8pRnSeVtfdbt0jemKcuX/YOSAzpglHbu/ufiapGJqa7Ci7+5TyX8MNFM0p/zgfuWLkOpy5BRJ8pf2b2pbWcftez4+ENW3OjvOD4slX55t8szljKsqxVpxIrSGZYoCTY4xuU4xpHg4ILutHw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2016 16:42:04.8799 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR07MB2250 From: Andrew Pinski This patch adds support to ldconfig for libilp32 which is used by ILP32. * sysdeps/generic/ldconfig.h (FLAG_AARCH64_LIB32): New define. * elf/cache.c (print_entry): Handle FLAG_AARCH64_LIB32. * sysdeps/unix/sysv/linux/aarch64/dl-cache.h (_DL_CACHE_DEFAULT_ID): Define it to be the FLAG_AARCH64_LIB32 if compiling for ILP32. (add_system_dir): Add libilp32 to the list of system directories. * sysdeps/unix/sysv/linux/arm/readelflib.c (process_elf_file): Handle ILP32 elf binaries. Signed-off-by: Yury Norov --- elf/cache.c | 3 +++ sysdeps/generic/ldconfig.h | 1 + sysdeps/unix/sysv/linux/aarch64/dl-cache.h | 13 ++++++++++++- sysdeps/unix/sysv/linux/arm/readelflib.c | 4 +++- 4 files changed, 19 insertions(+), 2 deletions(-) -- 2.7.4 diff --git a/elf/cache.c b/elf/cache.c index fbee172..a3bfb5d 100644 --- a/elf/cache.c +++ b/elf/cache.c @@ -101,6 +101,9 @@ print_entry (const char *lib, int flag, unsigned int osversion, case FLAG_AARCH64_LIB64: fputs (",AArch64", stdout); break; + case FLAG_AARCH64_LIB32: + fputs (",ILP32", stdout); + break; /* Uses the ARM soft-float ABI. */ case FLAG_ARM_LIBSF: fputs (",soft-float", stdout); diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h index 07600b7..8150227 100644 --- a/sysdeps/generic/ldconfig.h +++ b/sysdeps/generic/ldconfig.h @@ -42,6 +42,7 @@ #define FLAG_MIPS_LIB32_NAN2008 0x0c00 #define FLAG_MIPS64_LIBN32_NAN2008 0x0d00 #define FLAG_MIPS64_LIBN64_NAN2008 0x0e00 +#define FLAG_AARCH64_LIB32 0x0f00 /* Name of auxiliary cache. */ #define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache" diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-cache.h b/sysdeps/unix/sysv/linux/aarch64/dl-cache.h index 9c7b271..044fdba 100644 --- a/sysdeps/unix/sysv/linux/aarch64/dl-cache.h +++ b/sysdeps/unix/sysv/linux/aarch64/dl-cache.h @@ -18,7 +18,11 @@ #include +#ifdef __LP64__ #define _DL_CACHE_DEFAULT_ID (FLAG_AARCH64_LIB64 | FLAG_ELF_LIBC6) +#else +#define _DL_CACHE_DEFAULT_ID (FLAG_AARCH64_LIB32 | FLAG_ELF_LIBC6) +#endif #define _dl_cache_check_flags(flags) \ ((flags) == _DL_CACHE_DEFAULT_ID) @@ -27,18 +31,25 @@ do \ { \ size_t len = strlen (dir); \ - char path[len + 3]; \ + char path[len + 6]; \ memcpy (path, dir, len + 1); \ if (len >= 6 && ! memcmp (path + len - 6, "/lib64", 6)) \ { \ len -= 2; \ path[len] = '\0'; \ } \ + if (len >= 9 && ! memcmp (path + len - 9, "/libilp32", 9))\ + { \ + len -= 5; \ + path[len] = '\0'; \ + } \ add_dir (path); \ if (len >= 4 && ! memcmp (path + len - 4, "/lib", 4)) \ { \ memcpy (path + len, "64", 3); \ add_dir (path); \ + memcpy (path + len, "ilp32", 6); \ + add_dir (path); \ } \ } while (0) diff --git a/sysdeps/unix/sysv/linux/arm/readelflib.c b/sysdeps/unix/sysv/linux/arm/readelflib.c index e6ae72e..ddbad25 100644 --- a/sysdeps/unix/sysv/linux/arm/readelflib.c +++ b/sysdeps/unix/sysv/linux/arm/readelflib.c @@ -41,7 +41,9 @@ process_elf_file (const char *file_name, const char *lib, int *flag, ret = process_elf32_file (file_name, lib, flag, osversion, soname, file_contents, file_length); - if (!ret && EF_ARM_EABI_VERSION (elf32_header->e_flags) == EF_ARM_EABI_VER5) + if (!ret && elf_header->e_machine == EM_AARCH64) + *flag = FLAG_AARCH64_LIB32|FLAG_ELF_LIBC6; + else if (!ret && EF_ARM_EABI_VERSION (elf32_header->e_flags) == EF_ARM_EABI_VER5) { if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_HARD) *flag = FLAG_ARM_LIBHF|FLAG_ELF_LIBC6;