From patchwork Sat Jan 22 21:20:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: cqwrteur X-Patchwork-Id: 50364 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 70322385840A for ; Sat, 22 Jan 2022 21:20:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 70322385840A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1642886452; bh=VEAFSq6Pxfz1j4Hmi57J+yuBuUoQc01bpzODMVuM2HQ=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=jSoe1fjLn8NXLsCwL+P7kTcwXtMlWjNq5hZhuk3zrXLXcrGxrngymbqYRiD871+II NGJ/TJUMq4ooqNwp+9U4d/GKbzQyfOiMjW1vN9y19rHVo1eFZVjfY3uL3DoRY3/tvs kVVil9At9OkCTxYMuoMU2lBe+jnsomdfqMXgZLlc= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10olkn2078.outbound.protection.outlook.com [40.92.41.78]) by sourceware.org (Postfix) with ESMTPS id 341363858D37 for ; Sat, 22 Jan 2022 21:20:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 341363858D37 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DgSfeDf2IJyA+0U+il9oz+jHRXZilBDWfN4P1gG9F2d0JtHRzOOfmr7oJcrV/vhhRKKeK76SUBH41I1UHbZ+ykHHIt+p3nnJ2PhnDjeYlxf7HgOUXi8yt12LaqQlWXl/DqmoIwelBf/2N2/5lhda7jKZWvi/a9bxDU1FBhm0j5sigme9Qxh1v9EecwQ+i8aWdiuA3ZNW/k0L2uX2IhmkQLMh+G+5BV8SoP2twl215CAmfDEn9MJ+TZeWTDG63h7JiVYvs1wjs+sDJFbZvR2ihZ7qdbdOIek/bEH2gXwhrYyFUE4r3Jn8IFebRoa4iZNEzV8VzeJ8i3lhdy5uHQIPCA== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VEAFSq6Pxfz1j4Hmi57J+yuBuUoQc01bpzODMVuM2HQ=; b=nf3ocaEaD9FgcW/bWyVp6UMM19vKvphT8YDYGRgLZN7Xsmt7QK/4f5zlB8YsVYEIiZjim49U6eUj8LfvhwIjuXxesA6jOyBDHlT+hYF7hg8kR9S6URrg8eEPsEtTbbeXjX1hnLT3d96SIFFcFlHXn0UChlMJH6TiYHStu5PO3ya40B3iO26fiw21S16/Vomtk0UumxIXKxu7BMC3MwfZpBQhAKMbfDjPTDuh1MeqNEYkqJ85UjSXJzpbdevVlBXVdRIFfAy+rc2KfE+QGV+J1xUSOdis9Go1SCdMH/fwE36bGf6wiqSg8gtjzt5SfZqH8ObiWUuTxrSyH4Zo0h/+bQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from DM6PR05MB4697.namprd05.prod.outlook.com (2603:10b6:5:18::13) by BYAPR05MB5527.namprd05.prod.outlook.com (2603:10b6:a03:7f::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.10; Sat, 22 Jan 2022 21:20:15 +0000 Received: from DM6PR05MB4697.namprd05.prod.outlook.com ([fe80::9801:f6b9:e961:48ca]) by DM6PR05MB4697.namprd05.prod.outlook.com ([fe80::9801:f6b9:e961:48ca%5]) with mapi id 15.20.4930.008; Sat, 22 Jan 2022 21:20:15 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH] Fix build issues for *-linux-android and add aarch64-linux-android support. [PR101785, PR99499] Date: Sat, 22 Jan 2022 16:20:02 -0500 Message-ID: X-Mailer: git-send-email 2.25.1 X-TMN: [R+oMYBw/SENO9eVfBssgb+i4riFcE+W7U3zYg5C0l9coskWJjo50mdMMaNXG9Uci] X-ClientProxiedBy: BL1PR13CA0129.namprd13.prod.outlook.com (2603:10b6:208:2bb::14) To DM6PR05MB4697.namprd05.prod.outlook.com (2603:10b6:5:18::13) X-Microsoft-Original-Message-ID: <20220122212003.203693-1-unlvsur@live.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e0f3ffa8-02d6-4937-1f16-08d9ddecfbad X-MS-TrafficTypeDiagnostic: BYAPR05MB5527:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DsSGvPYHlYPw+CV7kqsLIbnfTqbYhcHZ9Lx3CYLdQN6oTFpfOXH4TDdEqHxbizc4FOZ0xtCYGwrRTuMy0E7FyO+mJE4iUiULrPmJQpa8el4LDPVBCYMpzyFRDtX25Y0AgZ9bnFsXk1PU6Gl4HbUDJjUgQCmTiffl0cKePeqMBgSHzKGGewwD4QKxFd3IorDRkoMJfwnotJLsd7DVR20rfsb/D8mDLCI3I9YPKfP+WTaBnR3sWf0dy5PjzIBlBAmfhpJvG32eqrbxauv898DUyMopzOq9dXM4zLiN9LSSAVqHIHa/iZHSuUf9oDs+wCPMMZKlauYVoj3GVHg4J6fqOyunw9yNFCmjGbbaMal6neD9UfiQKOlK+SiSCojI3Z9eZdYfkpo+/o2AOiwhCGOSjYemu3ydDqKfYKAdQm5YlrE0uxpPhEglPAojER3rwwS0zt5Jaj2H2C08mNqxa6m0FJbKksy93iG0YfaahJ4Cjkv+qX5fBdYekON8uQIREO/1qa1UDTXdQHZfZ4pbpg4hu/Crh+YdR08a4N5gevpBuRTH9FGQ+DQqCKrmA1tseNmB X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yiyXacvKBMTUeIZbueSWVlm5NvEbzElugCEX20akS/ZS10kD7yLiY4JMhjJ4SwsXbAQp2LXK3HDRAuL3P4hPxfhd7ctYXhHryuyW7cg9W+D/1Fg1HFeZSPGIJSJ6jkwwxwx496OETTQI2ZhybfaiWYZbr+TIHLTFEoha509JUMAM3EvN1nqvwQoPKyDKaUtAq+/QvykTfl9uFdIDxGINPYvC1CfOAPjjxDtqnARW2hxqRGy+cy1IvSUTZzOrasjody360xI+v2YNL9DXjQhml6kGWIXOc+oMlx8+Of6y1nMfEiYd1kvi7EEHuotEsOfeMXPLCYelkSWV4ibqYnmvMwqnQBtU8k0kQCfckMvw2HK2X9fZ3T/e8rMfACDiyS7qMtxADEnxNPTpwTdr8eEYGVBT/3mdeOyUTHsO0V48LXY5Gq7HorX8S0f1K8H5AkgoVVBAwmtxU5nSiy/8UHAt8sCq8wg6OxTnat6ooOyTWAExxuaLfNrUDhyyXVgF8vGjmHzbJxb8GLkdaKtfRwsblxQNF7wbHptbmX1GTO2cX6r6XpbKPaRW6oH3UD6vMSHsS8R9e8fOSPlC/nczio9UkeADrX9c04HdCYLxNvCsiC2iRqK1pLowmddj8oaEuARLYkA0NQDXZkQJdLndle68OzuVr3lf/J7ocervt41S1+7WUQ/8Q88uPLMgqWxDL5C/F0HxPcOyCmc23XAd1njyd5S2+mXeN6K5j9HSMMPqXFsjFTHmVRnqyz6I2JqpbC3FNOfN46jJiDJsbJQNSLiuNdkxqOV9Rh93vpr3+pFcuOFgdR9wQtH2iQ2HV421NqkM9sbG1BB1So52Y1u3L4tCuRDzyfylLZTGo45rLo0W+EyqR4wyQ23zLL0Ugc+MVsQb84IhO3Dsdb3YyrIzBnDpR7/wkITCt0j+x5l56zfGyVEN0R3egw0Z6dCAVQyr7XeL6zB8TJgU1eZ7BKl9HsWAmmQD2OAA87ttdLOkyVIsSGb1AckveYW6xJqdkl8cajGASJKdZLqsEcaqG5L30nOpgg== X-OriginatorOrg: sct-15-20-4823-7-msonline-outlook-84f76.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: e0f3ffa8-02d6-4937-1f16-08d9ddecfbad X-MS-Exchange-CrossTenant-AuthSource: DM6PR05MB4697.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2022 21:20:15.7051 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR05MB5527 X-Spam-Status: No, score=-8.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: cqwrteur via Gcc-patches From: cqwrteur Reply-To: cqwrteur Cc: cqwrteur Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" I have add aarch64-linux-android target support and fix build issues with libstdc++ for android. Several small issues like no libpthread.a (since android does not need libpthread.a) + 'ifunc' is not supported on this target, i will leave other people to fix. --- gcc/config.gcc | 3 +- gcc/config/aarch64/aarch64-linux.h | 48 ++++++++++++++++++++-- libstdc++-v3/config/os/bionic/ctype_base.h | 38 +++++++++++------ 3 files changed, 72 insertions(+), 17 deletions(-) diff --git a/gcc/config.gcc b/gcc/config.gcc index 2c4266ce7b0..8d25868e1cd 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1129,10 +1129,11 @@ aarch64*-*-netbsd*) extra_options="${extra_options} netbsd.opt netbsd-elf.opt" ;; aarch64*-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h" + tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h" tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h" tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux" tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1" + extra_options="${extra_options} linux-android.opt" case $target in aarch64_be-*) tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h index 5e4553d79f5..3e6b112ae95 100644 --- a/gcc/config/aarch64/aarch64-linux.h +++ b/gcc/config/aarch64/aarch64-linux.h @@ -26,6 +26,9 @@ #undef MUSL_DYNAMIC_LINKER #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" +#undef BIONIC_DYNAMIC_LINKER +#define BIONIC_DYNAMIC_LINKER "/system/bin/linker64" + #undef ASAN_CC1_SPEC #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}" @@ -46,11 +49,48 @@ %{mbig-endian:-EB} %{mlittle-endian:-EL} \ -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}" - -#define LINK_SPEC LINUX_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC - #define GNU_USER_TARGET_MATHFILE_SPEC \ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" + +#if defined(TARGET_ANDROID) + +#define EXTRA_TARGET_D_OS_VERSIONS() \ + ANDROID_TARGET_D_OS_VERSIONS(); + +#define LINK_SPEC LINUX_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC ANDROID_LINK_SPEC + +#undef SUBTARGET_CC1_SPEC +#define SUBTARGET_CC1_SPEC \ + LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \ + GNU_USER_TARGET_CC1_SPEC " " ANDROID_CC1_SPEC) + +#undef LIB_SPEC +#define LIB_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LIB_SPEC, \ + GNU_USER_TARGET_NO_PTHREADS_LIB_SPEC " " ANDROID_LIB_SPEC) + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_STARTFILE_SPEC, ANDROID_STARTFILE_SPEC) + +#undef ENDFILE_SPEC +#define ENDFILE_SPEC \ + LINUX_OR_ANDROID_LD (GNU_USER_TARGET_MATHFILE_SPEC " " \ + GNU_USER_TARGET_ENDFILE_SPEC, \ + GNU_USER_TARGET_MATHFILE_SPEC " " \ + ANDROID_ENDFILE_SPEC) + +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + GNU_USER_TARGET_OS_CPP_BUILTINS(); \ + ANDROID_TARGET_OS_CPP_BUILTINS(); \ + } \ + while (0) + +#else + +#define LINK_SPEC LINUX_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC #undef ENDFILE_SPEC #define ENDFILE_SPEC \ @@ -64,6 +104,8 @@ } \ while (0) +#endif + #define TARGET_ASM_FILE_END aarch64_file_end_indicate_exec_stack /* Uninitialized common symbols in non-PIE executables, even with diff --git a/libstdc++-v3/config/os/bionic/ctype_base.h b/libstdc++-v3/config/os/bionic/ctype_base.h index bbb499ce749..8c5a505ee8d 100644 --- a/libstdc++-v3/config/os/bionic/ctype_base.h +++ b/libstdc++-v3/config/os/bionic/ctype_base.h @@ -27,6 +27,19 @@ // // Information as gleaned from /usr/include/ctype.h +// Define macros by ourselves so we do not get into more troubles. +#define _GLIBCXX_U 0x01 +#define _GLIBCXX_L 0x02 +#define _GLIBCXX_D 0x04 +#define _GLIBCXX_S 0x08 +#define _GLIBCXX_P 0x10 +#define _GLIBCXX_C 0x20 +#define _GLIBCXX_X 0x40 +#define _GLIBCXX_B 0x80 +#define _GLIBCXX_R (_GLIBCXX_P|_GLIBCXX_U|\ + _GLIBCXX_L|_GLIBCXX_D|_GLIBCXX_B) +#define _GLIBCXX_A (_GLIBCXX_L|_GLIBCXX_U) +#define _GLIBCXX_N _GLIBCXX_D namespace std _GLIBCXX_VISIBILITY(default) { @@ -41,20 +54,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // NB: Offsets into ctype::_M_table force a particular size // on the mask type. Because of this, we don't use an enum. typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L + static const mask upper = _GLIBCXX_U; + static const mask lower = _GLIBCXX_L; + static const mask alpha = _GLIBCXX_A; + static const mask digit = _GLIBCXX_N; + static const mask xdigit = _GLIBCXX_X | _GLIBCXX_N; + static const mask space = _GLIBCXX_S; + static const mask print = _GLIBCXX_R; + static const mask graph = _GLIBCXX_P | _GLIBCXX_U | + _GLIBCXX_L | _GLIBCXX_N; + static const mask cntrl = _GLIBCXX_C; + static const mask punct = _GLIBCXX_P; + static const mask alnum = _GLIBCXX_A | _GLIBCXX_N; static const mask blank = space; -#endif }; _GLIBCXX_END_NAMESPACE_VERSION