From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp006.apm-internet.net (smtp006.apm-internet.net [85.119.248.207]) by sourceware.org (Postfix) with ESMTPS id D1D193858D32 for ; Tue, 2 Apr 2024 11:40:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D1D193858D32 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=sandoe.co.uk Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=sandoe.co.uk ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D1D193858D32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=85.119.248.207 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712058021; cv=none; b=kP6NPoLXSI/cxFatlaJvRoYOMFTqypTTq8GgtnBaWexE8Wc69wwG9tazcpRePUHKBiPweti/CI3AR9rRIJZmcts0bvRxdZ9H0ip8dmZ+Yfv93CWQ+hdQh8KJ1E4UPhPArvYbv/iUgNAnLq2EKEPW8Byr+TR00KLxg5olW/e7JIE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712058021; c=relaxed/simple; bh=8QP3M6Tg5xUWixU1KmPY1QbR1iBKFAcEdunQz3tVjiQ=; h=From:Message-Id:Mime-Version:Subject:Date:To; b=RqOhQxWSm4X/dlC9c75DRRV+OFTshzg/MPPk6T/WEwGFGINl8jGF0C+iMZ83hjT1vHr3jbgSU6bDG8/7FWx/93A3sfBq71MNHxdagTUdt2wcMoQA4vWgRMa3v954zOTgutPwG4SH5zhnISaTc7bSjipSbhKoLHqo72l6QFGyclw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: (qmail 7235 invoked from network); 2 Apr 2024 11:40:00 -0000 X-APM-Out-ID: 17120580000722 X-APM-Authkey: 257869/1(257869/1) 2 Received: from unknown (HELO smtpclient.apple) (81.138.1.83) by smtp006.apm-internet.net with SMTP; 2 Apr 2024 11:40:00 -0000 From: Iain Sandoe Message-Id: Content-Type: multipart/mixed; boundary="Apple-Mail=_44722F03-CAFF-4A59-9EA8-403EA98895A9" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.8\)) Subject: Re: [PATCH] jit, Darwin: Implement library exports list. Date: Tue, 2 Apr 2024 12:40:17 +0100 In-Reply-To: Cc: GCC Patches To: David Malcolm References: <20240116111025.14659-1-iain@sandoe.co.uk> <7cea35c64c6eeb5fe7dcd09f01e9a6728479493f.camel@redhat.com> X-Mailer: Apple Mail (2.3696.120.41.1.8) X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00,KAM_COUK,KAM_DMARC_STATUS,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --Apple-Mail=_44722F03-CAFF-4A59-9EA8-403EA98895A9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Hi David, > On 25 Jan 2024, at 10:16, Iain Sandoe wrote: >=20 >> On 24 Jan 2024, at 18:31, David Malcolm wrote: >>=20 >> On Tue, 2024-01-16 at 11:10 +0000, Iain Sandoe wrote: >>> Tested on x86_64, i686 Darwin and x86_64 Linux, >>> OK for trunk? when ? >>> thanks, >>> Iain >>=20 >> Hi Iain, thanks for the patch. >>=20 >> I'll have to defer to your Darwin expertise here; given that you've >> tested it on the above configurations I'll assume it's correct, = but... >>=20 >>>=20 >>> --- 8< --- >>>=20 >>> Currently, we have no exports list for libgccjit, which means that >>> all symbols are exported, including those from libstdc++ which is >>> linked statically into the lib. This causes failures when the >>> shared libstdc++ is used but some c++ symbols are satisfied from >>> libgccjit. >>>=20 >>> This implements an export file for Darwin (which is currently >>> manually created by cross-checking libgccjit.map). >>=20 >> ...I'm a little nervous about this; Antoyo has a number of = out-of-tree >> patches we're working towards merging, and almost all of these touch >> libgccjit.map. >>=20 >>=20 >>> Ideally we'd >>> script this, at some point. =20 >>=20 >> Yes. How about a Python 3 script (inside "contrib", or in "gcc/jit") >> that would do that. =20 >=20 > I=E2=80=99m not sure we want to make a build dependency on Python 3..=20= > the reason I say =E2=80=98build=E2=80=99 is ... >=20 >> Then whenever a patch touches libgccjit.map we'd >> run that script to regenerate libgccjit.exp in the source tree. I = can >> have a go at writing it, if you think that's the best way to go. >=20 > =E2=80=A6 there are two other places in the current sources where ld = map files > are converted to Darwin (and Solaris) symbol export files [libgcc, = libstdc++]. >=20 > In these cases, the export file is created on-the-fly at build time by = scripts > (IIRC a mixture of awk, sh, perl). >=20 > This requires more surgery to the Make stuff and that we have a = suitable > script - but it does mean that we do not need to commit the Darwin = (and > potentially Solaris) versions to the source tree. >=20 > I=E2=80=99m actually happy with either solution - since we do not = expect this to > be a daily occurance, we could have a maintainter=E2=80=99s python3 = script to > update a committed export file or we could try the mechanism used in > the other two places (but then the script would need to use = awk/sh/perl > to avoid new build deps). >=20 >> I take it .exp is the standard extension for these exports file in = the >> Darwin world. If so, it's a shame (but unavoidable) that it clashes >> with the existing uses of .exp in our source tree for our >> expect/Tcl/DejaGnu sources. >=20 > I suspect the linker will accept other extensions, although =E2=80=98exp= =E2=80=99 is a > convention used elsewhere, it is unfortunate that it clashes indeed. > - let me try an alternate (e.g. .export) and report back. >=20 >> I think the patch as-is is OK for trunk now, assuming that you've >> tested it as above. >=20 > I=E2=80=99m going to hold off on this for now (but do want some = solution before > 14 branches, because there are quite a few new fails from it). It seems that we are not going to get time to implement something better for GCC-14; this is what I applied (I renamed the extension to .exports=20= which the linker is fine with) so that it is not confused with .exp = files. I guess I=E2=80=99ll need to do a final pass of checking I=E2=80=99ve = copied all the syms before 14 branches. thanks Iain --Apple-Mail=_44722F03-CAFF-4A59-9EA8-403EA98895A9 Content-Disposition: attachment; filename=0001-jit-Darwin-Implement-library-exports-list.patch Content-Type: application/octet-stream; x-unix-mode=0644; name="0001-jit-Darwin-Implement-library-exports-list.patch" Content-Transfer-Encoding: quoted-printable =46rom=20b120e355e59142bd15d6b010461d07236288d843=20Mon=20Sep=2017=20= 00:00:00=202001=0AFrom:=20Iain=20Sandoe=20=0ADate:=20= Sat,=2013=20Jan=202024=2017:20:47=20+0000=0ASubject:=20[PATCH]=20jit,=20= Darwin:=20Implement=20library=20exports=20list.=0A=0ACurrently,=20we=20= have=20no=20exports=20list=20for=20libgccjit,=20which=20means=20that=0A= all=20symbols=20are=20exported,=20including=20those=20from=20libstdc++=20= which=20is=0Alinked=20statically=20into=20the=20lib.=20=20This=20causes=20= failures=20when=20the=0Ashared=20libstdc++=20is=20used=20but=20some=20= c++=20symbols=20are=20satisfied=20from=0Alibgccjit.=0A=0AThis=20= implements=20an=20export=20file=20for=20Darwin=20(which=20is=20currently=0A= manually=20created=20by=20cross-checking=20libgccjit.map).=20=20Ideally=20= we'd=0Ascript=20this,=20at=20some=20point.=20=20Update=20libtool=20= current=20and=20age=20to=0Areflect=20the=20current=20ABI=20version=20(we=20= are=20not=20bumping=20the=20SO=20name=0Aat=20this=20stage).=0A=0AThis=20= fixes=20a=20number=20of=20new=20failures=20in=20jit=20testing.=0A=0A= gcc/jit/ChangeLog:=0A=0A=09*=20Make-lang.in:=20Implement=20exports=20= list,=20and=20use=20a=20shared=0A=09libgcc.=0A=09*=20libgccjit.exports:=20= New=20file.=0A=0ASigned-off-by:=20Iain=20Sandoe=20=0A= ---=0A=20gcc/jit/Make-lang.in=20=20=20=20=20=20|=20=2047=20+++++---=0A=20= gcc/jit/libgccjit.exports=20|=20233=20= ++++++++++++++++++++++++++++++++++++++=0A=202=20files=20changed,=20263=20= insertions(+),=2017=20deletions(-)=0A=20create=20mode=20100644=20= gcc/jit/libgccjit.exports=0A=0Adiff=20--git=20a/gcc/jit/Make-lang.in=20= b/gcc/jit/Make-lang.in=0Aindex=20b1f0ce73e12..99b3d549d5d=20100644=0A---=20= a/gcc/jit/Make-lang.in=0A+++=20b/gcc/jit/Make-lang.in=0A@@=20-55,7=20= +55,17=20@@=20else=0A=20=0A=20ifneq=20(,$(findstring=20darwin,$(host)))=0A= =20=0A-LIBGCCJIT_AGE=20=3D=201=0A+#=20NOTE=20that=20we=20are=20building=20= here=20for=20the=20host,=20and=20so=20tests=20for=20target-=0A+#=20= specific=20functionality=20will=20only=20work=20when=20host=20=3D=3D=20= target.=20=20This=20causes=0A+#=20fails=20when=20building=20= cross-compilers=20with=20different=20object=20formats=20(at=0A+#=C2=A0leas= t=20when=20the=20respective=20linkers=20do=20not=20accept=20the=20same=20= command=20line=0A+#=20options).=20=20Fortunately,=20for=20Darwin=20we=20= can=20safely=20hard-code=20the=20relevant=0A+#=20host=20options,=20since=20= all=20usable=20linkers=20support=20them).=0A+=0A+LIBGCCJIT_CURRENT=20=3D=20= 26=0A+LIBGCCJIT_REVISION=20=3D=200=0A+LIBGCCJIT_AGE=20=3D=2026=0A= +LIBGCCJIT_COMPAT=20=3D=200=0A=20LIBGCCJIT_BASENAME=20=3D=20libgccjit=0A=20= =0A=20LIBGCCJIT_SONAME=20=3D=20\=0A@@=20-63,18=20+73,18=20@@=20= LIBGCCJIT_SONAME=20=3D=20\=0A=20LIBGCCJIT_FILENAME=20=3D=20= $(LIBGCCJIT_BASENAME).$(LIBGCCJIT_VERSION_NUM).dylib=0A=20= LIBGCCJIT_LINKER_NAME=20=3D=20$(LIBGCCJIT_BASENAME).dylib=0A=20=0A-#=20= Conditionalize=20the=20use=20of=20the=20LD_VERSION_SCRIPT_OPTION=20and=0A= -#=20LD_SONAME_OPTION=20depending=20if=20configure=20found=20them,=20= using=20$(if)=0A-#=20We=20have=20to=20define=20a=20COMMA=20here,=20= otherwise=20the=20commas=20in=20the=20"true"=0A-#=20result=20are=20= treated=20as=20separators=20by=20the=20$(if).=0A+#=20Darwin=20does=20not=20= have=20a=20version=20script=20option.=20Exported=20symbols=20are=20= controlled=0A+#=C2=A0by=20the=20following,=20and=20library=20versioning=20= is=20done=20using=20libtool.=0A+#=20We=20have=20to=20define=20a=20COMMA=20= here,=20otherwise=20the=20commas=20are=20treated=20as=0A+#=20separators.=0A= =20COMMA=20:=3D=20,=0A=20LIBGCCJIT_VERSION_SCRIPT_OPTION=20=3D=20\=0A-=09= $(if=20$(LD_VERSION_SCRIPT_OPTION),\=0A-=09=20=20= -Wl$(COMMA)$(LD_VERSION_SCRIPT_OPTION)$(COMMA)$(srcdir)/jit/libgccjit.map)= =0A+=20=20= -Wl$(COMMA)-exported_symbols_list$(COMMA)$(srcdir)/jit/libgccjit.exports=0A= =20=0A+#=20For=20Darwin=20host,=20we=20need=20a=20l64=20or=20= ld64-compatible=20linker,=20that=20uses=0A+#=20-install_name=20to=20= introduce=20this.=0A=20LIBGCCJIT_SONAME_OPTION=20=3D=20\=0A-=09$(if=20= $(LD_SONAME_OPTION),=20\=0A-=09=20=20=20=20=20= -Wl$(COMMA)$(LD_SONAME_OPTION)$(COMMA)$(LIBGCCJIT_SONAME))=0A+=20=20= -Wl$(COMMA)-install_name$(COMMA)$(LIBGCCJIT_SONAME)=0A=20=0A=20= LIBGCCJIT_SONAME_SYMLINK=20=3D=20$(LIBGCCJIT_FILENAME)=0A=20= LIBGCCJIT_LINKER_NAME_SYMLINK=20=3D=20$(LIBGCCJIT_LINKER_NAME)=0A@@=20= -143,15=20+153,18=20@@=20ifneq=20(,$(findstring=20mingw,$(target)))=0A=20= #=20Create=20import=20library=0A=20LIBGCCJIT_EXTRA_OPTS=20=3D=20= -Wl,--out-implib,$(LIBGCCJIT_IMPORT_LIB)=0A=20else=0A-=0A=20ifneq=20= (,$(findstring=20darwin,$(host)))=0A-#=20TODO=20:=20Construct=20a=20= Darwin-style=20symbol=20export=20file.=0A-LIBGCCJIT_EXTRA_OPTS=20=3D=20= -Wl,-compatibility_version,$(LIBGCCJIT_VERSION_NUM)=20\=0A-=09= -Wl,-current_version,$(LIBGCCJIT_VERSION_NUM).$(LIBGCCJIT_MINOR_NUM).$(LIB= GCCJIT_AGE)=20\=0A-=09$(LIBGCCJIT_VERSION_SCRIPT_OPTION)=20\=0A-=09= $(LIBGCCJIT_SONAME_OPTION)=0A+LIBGCCJIT_VERS=20=3D=20= $(LIBGCCJIT_CURRENT).$(LIBGCCJIT_REVISION).$(LIBGCCJIT_AGE)=0A= +LIBGCCJIT_EXTRA_OPTS=20=3D=20-Wl,-current_version,$(LIBGCCJIT_VERS)=20\=0A= +=20-Wl,-compatibility_version,$(LIBGCCJIT_COMPAT)=20\=0A+=20=20= $(LIBGCCJIT_VERSION_SCRIPT_OPTION)=20$(LIBGCCJIT_SONAME_OPTION)=0A+#=20= Use=20the=20default=20(shared)=20libgcc.=0A+JIT_LDFLAGS=20=3D=20= $(filter-out=20-static-libgcc,=20$(LDFLAGS))=0A+ifeq=20(,$(findstring=20= darwin8,$(host)))=0A+JIT_LDFLAGS=20+=3D=20-Wl,-rpath,@loader_path=0A= +endif=0A=20else=0A-=0A+JIT_LDFLAGS=20=3D=20$(LDFLAGS)=0A=20= LIBGCCJIT_EXTRA_OPTS=20=3D=20$(LIBGCCJIT_VERSION_SCRIPT_OPTION)=20\=0A=20= =09$(LIBGCCJIT_SONAME_OPTION)=0A=20endif=0A@@=20-170,7=20+183,7=20@@=20= $(LIBGCCJIT_FILENAME):=20$(jit_OBJS)=20\=0A=20=09$(LIBDEPS)=20= $(srcdir)/jit/libgccjit.map=20\=0A=20=09$(EXTRA_GCC_OBJS_EXCLUSIVE)=20= $(jit.prev)=0A=20=09@$(call=20LINK_PROGRESS,$(INDEX.jit),start)=0A-=09= +$(LLINKER)=20$(ALL_LINKERFLAGS)=20$(LDFLAGS)=20-o=20$@=20-shared=20\=0A= +=09+$(LLINKER)=20$(ALL_LINKERFLAGS)=20$(JIT_LDFLAGS)=20-o=20$@=20= -shared=20\=0A=20=09=20=20=20=20=20$(jit_OBJS)=20libbackend.a=20= libcommon-target.a=20libcommon.a=20\=0A=20=09=20=20=20=20=20$(CPPLIB)=20= $(LIBDECNUMBER)=20$(EXTRA_GCC_LIBS)=20$(LIBS)=20$(BACKENDLIBS)=20\=0A=20=09= =20=20=20=20=20$(EXTRA_GCC_OBJS_EXCLUSIVE)=20\=0Adiff=20--git=20= a/gcc/jit/libgccjit.exports=20b/gcc/jit/libgccjit.exports=0Anew=20file=20= mode=20100644=0Aindex=2000000000000..e32bbe2fd40=0A---=20/dev/null=0A+++=20= b/gcc/jit/libgccjit.exports=0A@@=20-0,0=20+1,233=20@@=0A+#=20Linker=20= export=20list=20for=20Darwin=20libgccjit.dylib=0A+=0A+#=20=20=20= Contributed=20by=20Iain=20Sandoe=20.=0A+#=0A+#=20This=20= file=20is=20part=20of=20GCC.=0A+#=0A+#=20GCC=20is=20free=20software=20= you=20can=20redistribute=20it=20and/or=20modify=20it=0A+#=20under=20the=20= terms=20of=20the=20GNU=20General=20Public=20License=20as=20published=20= by=0A+#=20the=20Free=20Software=20Foundation=20either=20version=203,=20= or=20(at=20your=20option)=0A+#=20any=20later=20version.=0A+#=0A+#=20GCC=20= is=20distributed=20in=20the=20hope=20that=20it=20will=20be=20useful,=20= but=0A+#=20WITHOUT=20ANY=20WARRANTY=20without=20even=20the=20implied=20= warranty=20of=0A+#=20MERCHANTABILITY=20or=20FITNESS=20FOR=20A=20= PARTICULAR=20PURPOSE.=20=20See=20the=20GNU=0A+#=20General=20Public=20= License=20for=20more=20details.=0A+#=0A+#=20You=20should=20have=20= received=20a=20copy=20of=20the=20GNU=20General=20Public=20License=0A+#=20= along=20with=20GCC=20see=20the=20file=20COPYING3.=20=20If=20not=20see=0A= +#=20.=20=20*/=0A+=0A+#=20The=20initial=20= release=20of=20the=20library.=0A+#=20Keep=20this=20list=20sorted=20= alphabetically:=0A+_gcc_jit_block_add_assignment=0A= +_gcc_jit_block_add_assignment_op=0A+_gcc_jit_block_add_comment=0A= +_gcc_jit_block_add_eval=0A+_gcc_jit_block_as_object=0A= +_gcc_jit_block_end_with_conditional=0A+_gcc_jit_block_end_with_jump=0A= +_gcc_jit_block_end_with_return=0A+_gcc_jit_block_end_with_void_return=0A= +_gcc_jit_block_get_function=0A+_gcc_jit_context_acquire=0A= +_gcc_jit_context_compile=0A+_gcc_jit_context_compile_to_file=0A= +_gcc_jit_context_dump_to_file=0A= +_gcc_jit_context_dump_reproducer_to_file=0A= +_gcc_jit_context_enable_dump=0A+_gcc_jit_context_get_builtin_function=0A= +_gcc_jit_context_get_first_error=0A+_gcc_jit_context_get_last_error=0A= +_gcc_jit_context_get_type=0A+_gcc_jit_context_get_int_type=0A= +_gcc_jit_context_new_array_access=0A+_gcc_jit_context_new_array_type=0A= +_gcc_jit_context_new_binary_op=0A+_gcc_jit_context_new_call=0A= +_gcc_jit_context_new_call_through_ptr=0A+_gcc_jit_context_new_cast=0A= +_gcc_jit_context_new_child_context=0A+_gcc_jit_context_new_comparison=0A= +_gcc_jit_context_new_field=0A+_gcc_jit_context_new_function=0A= +_gcc_jit_context_new_function_ptr_type=0A+_gcc_jit_context_new_global=0A= +_gcc_jit_context_new_location=0A+_gcc_jit_context_new_opaque_struct=0A= +_gcc_jit_context_new_param=0A+_gcc_jit_context_new_rvalue_from_double=0A= +_gcc_jit_context_new_rvalue_from_int=0A= +_gcc_jit_context_new_rvalue_from_long=0A= +_gcc_jit_context_new_rvalue_from_ptr=0A= +_gcc_jit_context_new_string_literal=0A+_gcc_jit_context_new_struct_type=0A= +_gcc_jit_context_new_unary_op=0A+_gcc_jit_context_new_union_type=0A= +_gcc_jit_context_null=0A+_gcc_jit_context_one=0A= +_gcc_jit_context_release=0A+_gcc_jit_context_set_bool_option=0A= +_gcc_jit_context_set_int_option=0A+_gcc_jit_context_set_logfile=0A= +_gcc_jit_context_set_str_option=0A+_gcc_jit_context_zero=0A= +_gcc_jit_field_as_object=0A+_gcc_jit_function_as_object=0A= +_gcc_jit_function_dump_to_dot=0A+_gcc_jit_function_get_param=0A= +_gcc_jit_function_new_block=0A+_gcc_jit_function_new_local=0A= +_gcc_jit_location_as_object=0A+_gcc_jit_lvalue_as_object=0A= +_gcc_jit_lvalue_as_rvalue=0A+_gcc_jit_lvalue_access_field=0A= +_gcc_jit_lvalue_get_address=0A+_gcc_jit_object_get_context=0A= +_gcc_jit_object_get_debug_string=0A+_gcc_jit_param_as_lvalue=0A= +_gcc_jit_param_as_object=0A+_gcc_jit_param_as_rvalue=0A= +_gcc_jit_result_get_code=0A+_gcc_jit_result_get_global=0A= +_gcc_jit_result_release=0A+_gcc_jit_rvalue_access_field=0A= +_gcc_jit_rvalue_as_object=0A+_gcc_jit_rvalue_dereference=0A= +_gcc_jit_rvalue_dereference_field=0A+_gcc_jit_rvalue_get_type=0A= +_gcc_jit_struct_as_type=0A+_gcc_jit_struct_set_fields=0A= +_gcc_jit_type_as_object=0A+_gcc_jit_type_get_const=0A= +_gcc_jit_type_get_pointer=0A+_gcc_jit_type_get_volatile=0A+=0A+#=20Add=20= support=20for=20adding=20arbitrary=20command-line=20options=20(PR=20= jit/66628).=0A+#=20LIBGCCJIT_ABI_1=0A= +_gcc_jit_context_add_command_line_option=0A+=0A+#=20Add=20support=20for=20= disabling=20the=20check=20for=20unreachable=20blocks=20(PR=20jit/66546).=0A= +#=20LIBGCCJIT_ABI_2=0A= +_gcc_jit_context_set_bool_allow_unreachable_blocks=0A+=0A+#=20Add=20= support=20for=20switch=20statements.=0A+#=20LIBGCCJIT_ABI_3=0A= +_gcc_jit_block_end_with_switch=0A+_gcc_jit_case_as_object=0A= +_gcc_jit_context_new_case=0A+=0A+#=20Add=20timing=20API.=0A= +#LIBGCCJIT_ABI_4=0A+_gcc_jit_context_get_timer=0A= +_gcc_jit_context_set_timer=0A+_gcc_jit_timer_new=0A= +_gcc_jit_timer_release=0A+_gcc_jit_timer_push=0A+_gcc_jit_timer_pop=0A= +_gcc_jit_timer_print=0A+=0A+#=20LIBGCCJIT_ABI_5=0A= +_gcc_jit_context_set_bool_use_external_driver=0A+=0A+#=20= LIBGCCJIT_ABI_6=0A+_gcc_jit_rvalue_set_bool_require_tail_call=0A+=0A+#=20= LIBGCCJIT_ABI_7=0A+_gcc_jit_type_get_aligned=0A+=0A+#=20LIBGCCJIT_ABI_8=0A= +_gcc_jit_type_get_vector=0A+=0A+#=20LIBGCCJIT_ABI_9=0A= +_gcc_jit_function_get_address=0A+=0A+#=20LIBGCCJIT_ABI_10=0A= +_gcc_jit_context_new_rvalue_from_vector=0A+=0A+#=20LIBGCCJIT_ABI_11=0A= +_gcc_jit_context_add_driver_option=0A+=0A+#=20LIBGCCJIT_ABI_12=0A= +_gcc_jit_context_new_bitfield=0A+=0A+#=20LIBGCCJIT_ABI_13=0A= +_gcc_jit_version_major=0A+_gcc_jit_version_minor=0A= +_gcc_jit_version_patchlevel=0A+=0A+#=20LIBGCCJIT_ABI_14=0A= +_gcc_jit_global_set_initializer=0A+=0A+#=20LIBGCCJIT_ABI_15=0A= +_gcc_jit_block_add_extended_asm=0A= +_gcc_jit_block_end_with_extended_asm_goto=0A= +_gcc_jit_extended_asm_as_object=0A= +_gcc_jit_extended_asm_set_volatile_flag=0A= +_gcc_jit_extended_asm_set_inline_flag=0A= +_gcc_jit_extended_asm_add_output_operand=0A= +_gcc_jit_extended_asm_add_input_operand=0A= +_gcc_jit_extended_asm_add_clobber=0A+_gcc_jit_context_add_top_level_asm=0A= +=0A+#=20LIBGCCJIT_ABI_16=0A+_gcc_jit_function_get_return_type=0A= +_gcc_jit_function_get_param_count=0A= +_gcc_jit_function_type_get_return_type=0A= +_gcc_jit_function_type_get_param_count=0A= +_gcc_jit_function_type_get_param_type=0A+_gcc_jit_type_unqualified=0A= +_gcc_jit_type_dyncast_array=0A+_gcc_jit_type_is_bool=0A= +_gcc_jit_type_dyncast_function_ptr_type=0A+_gcc_jit_type_is_integral=0A= +_gcc_jit_type_is_pointer=0A+_gcc_jit_type_dyncast_vector=0A= +_gcc_jit_vector_type_get_element_type=0A= +_gcc_jit_vector_type_get_num_units=0A+_gcc_jit_struct_get_field=0A= +_gcc_jit_type_is_struct=0A+_gcc_jit_struct_get_field_count=0A+=0A+#=20= LIBGCCJIT_ABI_17=0A+_gcc_jit_lvalue_set_tls_model=0A+=0A+#=20= LIBGCCJIT_ABI_18=0A+_gcc_jit_lvalue_set_link_section=0A+=0A= +#LIBGCCJIT_ABI_19=0A+_gcc_jit_context_new_array_constructor=0A= +_gcc_jit_context_new_struct_constructor=0A= +_gcc_jit_context_new_union_constructor=0A= +_gcc_jit_global_set_initializer_rvalue=0A+=0A+#=20LIBGCCJIT_ABI_20=0A= +_gcc_jit_compatible_types=0A+_gcc_jit_type_get_size=0A+=0A+#=20= LIBGCCJIT_ABI_21=0A+_gcc_jit_context_new_bitcast=0A+=0A+#=20= LIBGCCJIT_ABI_22=0A+_gcc_jit_lvalue_set_register_name=0A+=0A+#=20= LIBGCCJIT_ABI_23=0A+_gcc_jit_context_set_bool_print_errors_to_stderr=0A+=0A= +#=20LIBGCCJIT_ABI_24=0A+_gcc_jit_lvalue_set_alignment=0A= +_gcc_jit_lvalue_get_alignment=0A+=0A+#=20LIBGCCJIT_ABI_25=0A= +_gcc_jit_type_get_restrict=0A+=0A+#=20LIBGCCJIT_ABI_26=20=0A= +_gcc_jit_function_add_attribute=0A= +_gcc_jit_function_add_string_attribute=0A= +_gcc_jit_lvalue_add_string_attribute=0A= +_gcc_jit_function_add_integer_array_attribute=0A+=0A+#=20= LIBGCCJIT_ABI_27=0A+_gcc_jit_context_new_sizeof=0A+=0A+=0A--=20=0A2.39.2=20= (Apple=20Git-143)=0A=0A= --Apple-Mail=_44722F03-CAFF-4A59-9EA8-403EA98895A9 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii --Apple-Mail=_44722F03-CAFF-4A59-9EA8-403EA98895A9--