From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rock.gnat.com (rock.gnat.com [IPv6:2620:20:4000:0:a9e:1ff:fe9b:1d1]) by sourceware.org (Postfix) with ESMTP id 004CD3861826 for ; Sat, 5 Dec 2020 21:02:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 004CD3861826 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oliva@adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id B2261561E7; Sat, 5 Dec 2020 16:02:13 -0500 (EST) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id EOMISDdhR1uu; Sat, 5 Dec 2020 16:02:13 -0500 (EST) Received: from free.home (tron.gnat.com [IPv6:2620:20:4000:0:46a8:42ff:fe0e:e294]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by rock.gnat.com (Postfix) with ESMTPS id 74065561E5; Sat, 5 Dec 2020 16:02:13 -0500 (EST) Received: from livre (livre.home [172.31.160.2]) by free.home (8.15.2/8.15.2) with ESMTPS id 0B5L1xjR345244 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sat, 5 Dec 2020 18:02:02 -0300 From: Alexandre Oliva To: Andreas Schwab Cc: Christophe Lyon , gcc Patches Subject: Re: introduce overridable clear_cache emitter Organization: Free thinker, does not speak for AdaCore References: <87v9dgd06t.fsf@linux-m68k.org> Errors-To: aoliva@lxoliva.fsfla.org Date: Sat, 05 Dec 2020 18:01:59 -0300 In-Reply-To: <87v9dgd06t.fsf@linux-m68k.org> (Andreas Schwab's message of "Sat, 05 Dec 2020 11:19:54 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Scanned-By: MIMEDefang 2.84 X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP 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: 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-List-Received-Date: Sat, 05 Dec 2020 21:02:15 -0000 On Dec 5, 2020, Andreas Schwab wrote: > ../../../../libffi/src/aarch64/ffi.c: In function 'ffi_prep_closure_loc': > ../../../../libffi/src/aarch64/ffi.c:67:3: internal compiler error: in emit_library_call_value_1, at calls.c:5300 > 67 | __builtin___clear_cache (start, end); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Is this still aarch64-linux-gnu -mabi=ilp32? I'm afraid I couldn't duplicate this error using a cross compiler (without binutils, but with HAVE_AS_MABI_OPTION forced enabled), and many variants of a manually minimized ffi.c (to build without libc): static inline void ffi_clear_cache (void *start, void *end) { __builtin___clear_cache (start, end); } #define FFI_TRAMPOLINE_SIZE 24 typedef struct closure { char tramp[FFI_TRAMPOLINE_SIZE / sizeof (long)]; } ffi_closure; void ffi_prep_closure_loc (ffi_closure *closure) { static const unsigned char trampoline[16] = { 0x90, 0x00, 0x00, 0x58, /* ldr x16, tramp+16 */ 0xf1, 0xff, 0xff, 0x10, /* adr x17, tramp+0 */ 0x00, 0x02, 0x1f, 0xd6 /* br x16 */ }; char *tramp = closure->tramp; __builtin_memcpy(tramp, trampoline, sizeof (trampoline)); ffi_clear_cache(tramp, tramp + FFI_TRAMPOLINE_SIZE); } Once you confirm command line and target, I'll look into cross-building a full toolchain, or using a machine from the compile farm. Thanks, -- Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/ Free Software Activist GNU Toolchain Engineer Vim, Vi, Voltei pro Emacs -- GNUlius Caesar