From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by sourceware.org (Postfix) with ESMTPS id BA3F73858C2F for ; Wed, 17 Jan 2024 09:04:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BA3F73858C2F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org BA3F73858C2F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::429 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705482254; cv=none; b=yD9DLUQ8VavEvqqgDbk/hjSpulNndvxm9QdVyiNXoEKmhbYRElF6TWUXfxIIvYWPVZ0fOfD8Tf7vFySTc4yJ8596S1HvaoV23jFdsJEPEeLLk1n/QuJfBN9o5ZB0K0sWDyi1Ty6BAfiB9b1A7I9EnqaAUlkPntIoqvHiT5Sp4PY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705482254; c=relaxed/simple; bh=ZZKAsZjs2xtIKQEE32D5uvwuQtvtSZYXUvLNNULBnEw=; h=DKIM-Signature:Mime-Version:Subject:From:Date:Message-Id:To; b=JbCxYup72ttnlPMovCk3Sr1UpbJ+xi8HUvNLsV4HMVo+gcTr4V5xOHHsyWBi08z22RB9dQ84rmftRyX4gmrkI6lOufBirS3hHLZRH0oO8zRPV5+1NmNlltsusT0tegokPEIWSAIU598pPluWLOys/z807acycQQACOYVONf0N8s= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-3376f71fcbbso8534562f8f.1 for ; Wed, 17 Jan 2024 01:04:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705482250; x=1706087050; darn=gcc.gnu.org; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=F/xG9GI6I0Wt+DyWQTPeiyVsq+6TKHJ+uODTymBUr74=; b=KvxXDCyPCOHrF+8TSiwCZDQCqvnx0cfQP7zmfQPvkJTXA6jbM46RC/7FC3plRSIcIj x3351gF/WE8wPGOGgo+dznwKB5mfjLH52mVGGvzQBi9EM+0CVO/zche7H9SXm5b99+Lf nVlpVFPuOxyGf+qBzidObExAsUsXLEeFynWU6lw6NB4WVL4NK+XBa1ec+TrNcB2+Uad5 5oVx2gAJmB15ciGb4ICMvpPFNsfkMx/85eazg+hGHPJLxWBQpwiOSUikuLsCWaPBzEM/ DsKb5YgWdXuQhSK262p/nCyW8W//2XnG7Vo2ZMhQiIvk7Ptsv4YlGeyRLyq61N5KnV7G H0Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705482250; x=1706087050; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=F/xG9GI6I0Wt+DyWQTPeiyVsq+6TKHJ+uODTymBUr74=; b=exnyGwUVm1OwmmLN/xEWLA1HUZcfcRWEb+74Pj5vLeo8GgyPJox4aGA3yjc80YpaGL VAKZLPVqYrycvreq8iyvKN34g3GfBQne3xwhcmd20U7LxkR16hsUleBaVsl9S2W82H0/ KUIrViWdKQ66Jmg8+3zG+ltHsiYghvL8XxzczNHQcx9mPkX+1K5JR7zUrAqkW5K41utV j/yc5Y6xyzpVf1NA4ja2g3ruC/gAXkzKDPN4EwmMmWBP/5t68wjDgMTjzX3hMEbx7JS3 Chsn9anCkenw98LhR/RvJIzJKKshViZaq7MFOYSnGUbovEq2N1zkFDE218HOOBMpm3uZ WyPw== X-Gm-Message-State: AOJu0YyTW29tTR3oXbfi4jg4eX1ep6f6xR4ByaRyx4d1557kME114gBD u9HHF/Rx1kuBduPUS3wnvl+U6G7JDHY= X-Google-Smtp-Source: AGHT+IE9/V2+BfQXVhL92u6YPfMW5Sz3PiAzxusS7njhZ04qafsZPAJI+bZprUXCLqmJy28pW7Sctg== X-Received: by 2002:a5d:69cd:0:b0:336:d9a6:494f with SMTP id s13-20020a5d69cd000000b00336d9a6494fmr2483176wrw.131.1705482250122; Wed, 17 Jan 2024 01:04:10 -0800 (PST) Received: from smtpclient.apple (host81-138-1-83.in-addr.btopenworld.com. [81.138.1.83]) by smtp.gmail.com with ESMTPSA id x5-20020adfffc5000000b0033672cfca96sm1160040wrs.89.2024.01.17.01.04.09 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Jan 2024 01:04:09 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.4\)) Subject: Re: [PATCH v2] Fix __builtin_nested_func_ptr_{created,deleted} symbol versions [PR113402] From: Iain Sandoe In-Reply-To: <20240117085531.21315-1-iain@sandoe.co.uk> Date: Wed, 17 Jan 2024 09:04:08 +0000 Cc: Jakub Jelinek Content-Transfer-Encoding: quoted-printable Message-Id: References: <20240117085531.21315-1-iain@sandoe.co.uk> To: GCC Patches X-Mailer: Apple Mail (2.3696.120.41.1.4) X-Spam-Status: No, score=-8.4 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,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: > On 17 Jan 2024, at 08:55, Iain Sandoe wrote: >=20 > Tested on x86_64, aarch64 Darwin21 (which default to heap-based = trampolines) > and on x86_64 Darwin19 and Linux (which default to executable stack > trampolines). > OK for trunk? Hmm.. maybe this is not right and the builtins should still be named = __builtin (with the fallback function only renamed) or alternatively, add these as = libfuncs only? > Iain >=20 > --- 8< --- >=20 > The symbols for the functions supporting heap-based trampolines were > exported at an incorrect symbol version, the following patch fixes = that. >=20 > As requested in the PR, this also renames __builtin_nested_func_ptr* = to > __gcc_nested_func_ptr*. >=20 > PR libgcc/113402 >=20 > gcc/ChangeLog: >=20 > * builtins.def > (BUILT_IN_NESTED_PTR_CREATED): Rename = __builtin_nested_func_ptr_created > to __gcc_nested_func_ptr_created. > (BUILT_IN_NESTED_PTR_DELETED): Rename = __builtin_nested_func_ptr_deleted > to __gcc_nested_func_ptr_deleted. > * doc/invoke.texi: Likewise. > * tree.cc (build_common_builtin_nodes): Likewise. >=20 > libgcc/ChangeLog: >=20 > * config/aarch64/heap-trampoline.c: Rename > __builtin_nested_func_ptr_created to = __gcc_nested_func_ptr_created and > __builtin_nested_func_ptr_deleted to = __gcc_nested_func_ptr_deleted. > * config/i386/heap-trampoline.c: Likewise. > * libgcc2.h: Likewise. > * libgcc-std.ver.in (GCC_7.0.0): Likewise and then move > __gcc_nested_func_ptr_created and > __gcc_nested_func_ptr_deleted from this symbol version to ... > (GCC_14.0.0): ... this one. >=20 > Signed-off-by: Iain Sandoe > Co-authored-by: Jakub Jelinek > --- > gcc/builtins.def | 4 ++-- > gcc/doc/invoke.texi | 4 ++-- > gcc/tree.cc | 8 ++++---- > libgcc/config/aarch64/heap-trampoline.c | 8 ++++---- > libgcc/config/i386/heap-trampoline.c | 8 ++++---- > libgcc/libgcc-std.ver.in | 5 ++--- > libgcc/libgcc2.h | 4 ++-- > 7 files changed, 20 insertions(+), 21 deletions(-) >=20 > diff --git a/gcc/builtins.def b/gcc/builtins.def > index 4d97ca0eec9..e8a88ee8bf7 100644 > --- a/gcc/builtins.def > +++ b/gcc/builtins.def > @@ -1084,8 +1084,8 @@ DEF_BUILTIN_STUB (BUILT_IN_ADJUST_TRAMPOLINE, = "__builtin_adjust_trampoline") > DEF_BUILTIN_STUB (BUILT_IN_INIT_DESCRIPTOR, = "__builtin_init_descriptor") > DEF_BUILTIN_STUB (BUILT_IN_ADJUST_DESCRIPTOR, = "__builtin_adjust_descriptor") > DEF_BUILTIN_STUB (BUILT_IN_NONLOCAL_GOTO, "__builtin_nonlocal_goto") > -DEF_BUILTIN_STUB (BUILT_IN_NESTED_PTR_CREATED, = "__builtin_nested_func_ptr_created") > -DEF_BUILTIN_STUB (BUILT_IN_NESTED_PTR_DELETED, = "__builtin_nested_func_ptr_deleted") > +DEF_BUILTIN_STUB (BUILT_IN_NESTED_PTR_CREATED, = "__gcc_nested_func_ptr_created") > +DEF_BUILTIN_STUB (BUILT_IN_NESTED_PTR_DELETED, = "__gcc_nested_func_ptr_deleted") >=20 > /* Implementing __builtin_setjmp. */ > DEF_BUILTIN_STUB (BUILT_IN_SETJMP_SETUP, "__builtin_setjmp_setup") > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index 16e31a3c6db..9727f1de71d 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -19450,8 +19450,8 @@ for nested functions. > By default, trampolines are generated on stack. However, certain = platforms > (such as the Apple M1) do not permit an executable stack. Compiling = with > @option{-ftrampoline-impl=3Dheap} generate calls to > -@code{__builtin_nested_func_ptr_created} and > -@code{__builtin_nested_func_ptr_deleted} in order to allocate and > +@code{__gcc_nested_func_ptr_created} and > +@code{__gcc_nested_func_ptr_deleted} in order to allocate and > deallocate trampoline space on the executable heap. These functions = are > implemented in libgcc, and will only be provided on specific targets: > x86_64 Darwin, x86_64 and aarch64 Linux. @emph{PLEASE NOTE}: Heap > diff --git a/gcc/tree.cc b/gcc/tree.cc > index 8aee3ef18d8..6fa99ad7fe4 100644 > --- a/gcc/tree.cc > +++ b/gcc/tree.cc > @@ -9934,15 +9934,15 @@ build_common_builtin_nodes (void) > ptr_type_node, // void *func > ptr_ptr_type_node, // void **dst > NULL_TREE); > - local_define_builtin ("__builtin_nested_func_ptr_created", ftype, > + local_define_builtin ("__gcc_nested_func_ptr_created", ftype, > BUILT_IN_NESTED_PTR_CREATED, > - "__builtin_nested_func_ptr_created", = ECF_NOTHROW); > + "__gcc_nested_func_ptr_created", ECF_NOTHROW); >=20 > ftype =3D build_function_type_list (void_type_node, > NULL_TREE); > - local_define_builtin ("__builtin_nested_func_ptr_deleted", ftype, > + local_define_builtin ("__gcc_nested_func_ptr_deleted", ftype, > BUILT_IN_NESTED_PTR_DELETED, > - "__builtin_nested_func_ptr_deleted", = ECF_NOTHROW); > + "__gcc_nested_func_ptr_deleted", ECF_NOTHROW); >=20 > ftype =3D build_function_type_list (void_type_node, > ptr_type_node, ptr_type_node, = NULL_TREE); > diff --git a/libgcc/config/aarch64/heap-trampoline.c = b/libgcc/config/aarch64/heap-trampoline.c > index f22233987ca..2041fe6aa39 100644 > --- a/libgcc/config/aarch64/heap-trampoline.c > +++ b/libgcc/config/aarch64/heap-trampoline.c > @@ -20,8 +20,8 @@ int get_trampolines_per_page (void); > struct tramp_ctrl_data *allocate_tramp_ctrl (struct tramp_ctrl_data = *parent); > void *allocate_trampoline_page (void); >=20 > -void __builtin_nested_func_ptr_created (void *chain, void *func, void = **dst); > -void __builtin_nested_func_ptr_deleted (void); > +void __gcc_nested_func_ptr_created (void *chain, void *func, void = **dst); > +void __gcc_nested_func_ptr_deleted (void); >=20 > #if defined(__gnu_linux__) > static const uint32_t aarch64_trampoline_insns[] =3D { > @@ -108,7 +108,7 @@ allocate_tramp_ctrl (struct tramp_ctrl_data = *parent) > } >=20 > void > -__builtin_nested_func_ptr_created (void *chain, void *func, void = **dst) > +__gcc_nested_func_ptr_created (void *chain, void *func, void **dst) > { > if (tramp_ctrl_curr =3D=3D NULL) > { > @@ -155,7 +155,7 @@ __builtin_nested_func_ptr_created (void *chain, = void *func, void **dst) > } >=20 > void > -__builtin_nested_func_ptr_deleted (void) > +__gcc_nested_func_ptr_deleted (void) > { > if (tramp_ctrl_curr =3D=3D NULL) > abort (); > diff --git a/libgcc/config/i386/heap-trampoline.c = b/libgcc/config/i386/heap-trampoline.c > index 4b9f4365868..726cf55277a 100644 > --- a/libgcc/config/i386/heap-trampoline.c > +++ b/libgcc/config/i386/heap-trampoline.c > @@ -20,8 +20,8 @@ int get_trampolines_per_page (void); > struct tramp_ctrl_data *allocate_tramp_ctrl (struct tramp_ctrl_data = *parent); > void *allocate_trampoline_page (void); >=20 > -void __builtin_nested_func_ptr_created (void *chain, void *func, void = **dst); > -void __builtin_nested_func_ptr_deleted (void); > +void __gcc_nested_func_ptr_created (void *chain, void *func, void = **dst); > +void __gcc_nested_func_ptr_deleted (void); >=20 > static const uint8_t trampoline_insns[] =3D { > /* movabs $,%r11 */ > @@ -108,7 +108,7 @@ allocate_tramp_ctrl (struct tramp_ctrl_data = *parent) > } >=20 > void > -__builtin_nested_func_ptr_created (void *chain, void *func, void = **dst) > +__gcc_nested_func_ptr_created (void *chain, void *func, void **dst) > { > if (tramp_ctrl_curr =3D=3D NULL) > { > @@ -155,7 +155,7 @@ __builtin_nested_func_ptr_created (void *chain, = void *func, void **dst) > } >=20 > void > -__builtin_nested_func_ptr_deleted (void) > +__gcc_nested_func_ptr_deleted (void) > { > if (tramp_ctrl_curr =3D=3D NULL) > abort (); > diff --git a/libgcc/libgcc-std.ver.in b/libgcc/libgcc-std.ver.in > index a81c5a1142c..ac8f661a08e 100644 > --- a/libgcc/libgcc-std.ver.in > +++ b/libgcc/libgcc-std.ver.in > @@ -1943,9 +1943,6 @@ GCC_4.8.0 { > GCC_7.0.0 { > __PFX__divmoddi4 > __PFX__divmodti4 > - > - __builtin_nested_func_ptr_created > - __builtin_nested_func_ptr_deleted > } >=20 > %inherit GCC_14.0.0 GCC_7.0.0 > @@ -1960,4 +1957,6 @@ GCC_14.0.0 { > __PFX__strub_enter > __PFX__strub_update > __PFX__strub_leave > + __gcc_nested_func_ptr_created > + __gcc_nested_func_ptr_deleted > } > diff --git a/libgcc/libgcc2.h b/libgcc/libgcc2.h > index 5050456eada..0b67fab637e 100644 > --- a/libgcc/libgcc2.h > +++ b/libgcc/libgcc2.h > @@ -29,8 +29,8 @@ see the files COPYING3 and COPYING.RUNTIME = respectively. If not, see > #pragma GCC visibility push(default) > #endif >=20 > -extern void __builtin_nested_func_ptr_created (void *, void *, void = **); > -extern void __builtin_nested_func_ptr_deleted (void); > +extern void __gcc_nested_func_ptr_created (void *, void *, void **); > +extern void __gcc_nested_func_ptr_deleted (void); >=20 > extern int __gcc_bcmp (const unsigned char *, const unsigned char *, = size_t); > extern void __clear_cache (void *, void *); > --=20 > 2.39.2 (Apple Git-143) >=20