From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sender4-pp-o91.zoho.com (sender4-pp-o90.zoho.com [136.143.188.90]) by sourceware.org (Postfix) with ESMTPS id 37087385840D; Sat, 20 Nov 2021 16:53:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 37087385840D ARC-Seal: i=1; a=rsa-sha256; t=1637427190; cv=none; d=zohomail.com; s=zohoarc; b=VIFwxWKIe8lEtJYxwj8nQdY5FmDQbm21gxgfnVN6EGH3KDCMfJOI8kQEFs5lX56y1NZtZtJFaW9U+ciC5WGnfHb0UpmTgQQ4hNvfRhYjcrihipFlj7dZ3KWbru2+i6ceh+uOgstABSSSIOj3U/cdxcHovshhbbcsjaUr7Mi/Q6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1637427190; h=Content-Type:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=AyX8wJzpZkwTJbQ5mNTGmMK5dgYhsSmogK8n28h5ZWg=; b=mrrD783qkFxXzGXXMgbZOMqYvWSiGJwsjo6wMDXznGjnDiK2r7xWaGlMBpQkYyNsGVi0jVSAwA88TbLZHAPuWQkLhqTOZ2Upf3l2Bo0mwsFdMuhuqBgurURMD51voyc7/+nVh0CXK0Y8v7O1391bvaQZKj6fvwEA66WDOHX/73c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zoho.com; spf=pass smtp.mailfrom=bouanto@zoho.com; dmarc=pass header.from= Received: from [192.168.1.174] (38.87.11.6 [38.87.11.6]) by mx.zohomail.com with SMTPS id 16374271899071018.4538299844517; Sat, 20 Nov 2021 08:53:09 -0800 (PST) Message-ID: Subject: Re: [PATCH] libgccjit: Add support for setting the link section of global variables [PR100688] From: Antoni Boucher To: David Malcolm , jit@gcc.gnu.org, gcc-patches@gcc.gnu.org Date: Sat, 20 Nov 2021 11:53:07 -0500 In-Reply-To: <7530c6bca7aab2a29303957512be97cf090e159d.camel@redhat.com> References: <7fde146d8c3aecb47f66f34c836e2733eb4d8a6d.camel@zoho.com> <7530c6bca7aab2a29303957512be97cf090e159d.camel@redhat.com> Content-Type: multipart/mixed; boundary="=-8z6tDSsRj7O5FEScp0hS" User-Agent: Evolution 3.42.1 MIME-Version: 1.0 X-Zoho-Virus-Status: 1 X-ZohoMailClient: External X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00, BODY_8BITS, 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_NONE, 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: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2021 16:53:18 -0000 --=-8z6tDSsRj7O5FEScp0hS Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi. Here's the updated patch. See comments below. Thanks for the review! Le samedi 20 novembre 2021 =C3=A0 11:20 -0500, David Malcolm a =C3=A9crit= =C2=A0: > On Sat, 2021-11-20 at 00:58 -0500, Antoni Boucher wrote: > > Thanks for your reviews! > >=20 > > Here's the updated patch, ready for another review. > > See comments/questions below. >=20 > Thanks for the updated patch... >=20 > >=20 > > I'll update the other patches over the weekend. > >=20 > > Le jeudi 20 mai 2021 =C3=A0 15:29 -0400, David Malcolm a =C3=A9crit=C2= =A0: > > > On Wed, 2021-05-19 at 20:32 -0400, Antoni Boucher via Jit wrote: > > > > Hello. > > > > This patch adds support to set the link section of global > > > > variables. > > > > I used the ABI 18 because I submitted other patches up to 17. > > > > Thanks for the review. > > >=20 > > > I didn't see this email until now, and put the review in bugzilla > > > instead; sorry. > > >=20 > > > Here's a copy-and-paste of what I put in bugzilla: > > >=20 > > >=20 > > > Thanks for the patch; I like the idea; various nits below: > > >=20 >=20 > [...snip...] >=20 > > >=20 > > > > =C2=A0Global variables > > > > =C2=A0**************** > > > > =C2=A0 > > > > diff --git a/gcc/jit/jit-playback.h b/gcc/jit/jit-playback.h > > > > index 825a3e172e9..8b0f65e87e8 100644 > > > > --- a/gcc/jit/jit-playback.h > > > > +++ b/gcc/jit/jit-playback.h > > > > @@ -650,6 +650,8 @@ public: > > > > =C2=A0 > > > > =C2=A0private: > > > > =C2=A0=C2=A0 context *m_ctxt; > > > > + > > > > +protected: > > > > =C2=A0=C2=A0 tree m_inner; > > > > =C2=A0}; > > >=20 > > > I think you only use this... > > >=20 > > > > =C2=A0 > > > > @@ -670,6 +672,12 @@ public: > > > > =C2=A0=C2=A0 rvalue * > > > > =C2=A0=C2=A0 get_address (location *loc); > > > > =C2=A0 > > > > +=C2=A0 void > > > > +=C2=A0 set_link_section (const char* name) > > > > +=C2=A0 { > > > > +=C2=A0=C2=A0=C2=A0 set_decl_section_name (m_inner, name); > > > > +=C2=A0 } > > >=20 > > > ...here, and you can get at rvalue::m_inner using as_tree (), so > > > I > > > don't think we need to make m_inner protected. >=20 > Thanks for dropping the "protected" in the updated patch; you need to > update the ChangeLog entry. >=20 > > >=20 > > >=20 > > > > +=C2=A0 set_playback_obj (global); > > > > =C2=A0} > > > > =C2=A0 > > >=20 > > > [...snip....] > > >=20 > > > > diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h > > > > index 03fa1160cf0..0691fac579d 100644 > > > > --- a/gcc/jit/jit-recording.h > > > > +++ b/gcc/jit/jit-recording.h > > > > @@ -1105,7 +1105,8 @@ public: > > > > =C2=A0=C2=A0 lvalue (context *ctxt, > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 location *lo= c, > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 type *type_) > > > > -=C2=A0=C2=A0=C2=A0 : rvalue (ctxt, loc, type_) > > > > +=C2=A0=C2=A0=C2=A0 : rvalue (ctxt, loc, type_), > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m_link_section(NULL) > > > > =C2=A0=C2=A0=C2=A0=C2=A0 {} > > > > =C2=A0 > > > > =C2=A0=C2=A0 playback::lvalue * > > > > @@ -1127,6 +1128,10 @@ public: > > > > =C2=A0=C2=A0 const char *access_as_rvalue (reproducer &r) OVERRIDE; > > > > =C2=A0=C2=A0 virtual const char *access_as_lvalue (reproducer &r); > > > > =C2=A0=C2=A0 virtual bool is_global () const { return false; } > > > > +=C2=A0 void set_link_section (const char *name); > > > > + > > > > +protected: > > > > +=C2=A0 string *m_link_section; > > > > =C2=A0}; > > >=20 > > > Can it be private, rather than protected? > >=20 > > m_link_section can't be private because it's used in > > recording::global::replay_into. >=20 > Fair enough; thanks. >=20 > > >=20 > > > > diff --git a/gcc/jit/libgccjit.c b/gcc/jit/libgccjit.c > > > > index 7fa948007ad..8cfa48aae24 100644 > > > > --- a/gcc/jit/libgccjit.c > > > > +++ b/gcc/jit/libgccjit.c > > > > @@ -1953,6 +1953,18 @@ gcc_jit_lvalue_get_address > > > > (gcc_jit_lvalue > > > *lvalue, > > > > =C2=A0=C2=A0 return (gcc_jit_rvalue *)lvalue->get_address (loc); > > > > =C2=A0} > > > > =C2=A0 > > > > +/* Public entrypoint.=C2=A0 See description in libgccjit.h. > > > > + > > > > +=C2=A0=C2=A0 After error-checking, the real work is done by the > > > > +=C2=A0=C2=A0 gcc::jit::recording::lvalue::set_section method in ji= t- > > > recording.c.=C2=A0 */ > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ^^^^^^^^^^^ > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 set_link_secti= on > > >=20 > > > Also, a newline here please for consistency with the other > > > entrypoints. > >=20 > > Where should I add a newline? >=20 > Between the closing of the comment and the "void" of the fndecl (all > the other entrypoints have a blank line separating them).=C2=A0 Thanks fo= r > fixing my other nitpicks. >=20 >=20 > [...snip...] >=20 > > > > diff --git a/gcc/testsuite/jit.dg/all-non-failing-tests.h > > > b/gcc/testsuite/jit.dg/all-non-failing-tests.h > > > > index 4202eb7798b..7e3b59dee0d 100644 > > > > --- a/gcc/testsuite/jit.dg/all-non-failing-tests.h > > > > +++ b/gcc/testsuite/jit.dg/all-non-failing-tests.h > > > > @@ -181,6 +181,13 @@ > > > > =C2=A0#undef create_code > > > > =C2=A0#undef verify_code > > > > =C2=A0 > > > > +/* test-link-section.c */ > > > > +#define create_code create_code_link_section > > > > +#define verify_code verify_code_link_section > > > > +#include "test-link-section.c" > > > > +#undef create_code > > > > +#undef verify_code >=20 > The updated version of the testcase doesn't have a verify_code, so it > can't be in the "testcases" array.=C2=A0=20 > Please replace this with something like: >=20 >=20 > /* test-link-section.c: This can't be in the testcases array as it > =C2=A0=C2=A0 doesn't have a verify_code implementation.=C2=A0 */ > =C2=A0 >=20 > (I'm trying to have all-nonfailing-tests.h refer to each non-failing > test, either adding it to the testcases array, or documenting why it > isn't in the array; listing them in alphabetical order) Hum, that code seems to refer to the previous patch. I removed that part and changed the test to test-link-section- assembler.c which checks that the assembly contains the link section. As far as I know, it does not need to be listed here to be ran. >=20 > [...snip...] >=20 > > > >=20 > > > > + > > > > +extern void > > > > +verify_code (gcc_jit_context *ctxt, gcc_jit_result *result) > > > > +{ > > > > +} > > >=20 > > > This is OK, but ideally it would test that the section name made > > > it > > > into the generated assembler.=C2=A0 test-compile-to-assembler.c has a > > > testcase for this which does something similar, with a DejaGnu > > > directive looking for a substring in the generated asm if you > > > want to > > > attempt it. >=20 > Thanks for implementing the .exp directive. >=20 > > >=20 > > > One other thing: the docs should make it clear about the leading > > > ".". > > >=20 > > > If I want to create the equivalent of: > > >=20 > > > =C2=A0=C2=A0 __attribute__((section(".section"))) > > >=20 > > > do I call it with: > > >=20 > > > =C2=A0=C2=A0 gcc_jit_lvalue_set_link_section(foo, "section"); > > >=20 > > > or with: > > >=20 > > > =C2=A0=C2=A0 gcc_jit_lvalue_set_link_section(foo, ".section"); > > >=20 > > > It's a bit unclear to me from just reading the patch.=C2=A0 The > > > example > > > suggests it's the former.=C2=A0 In either case, the documentation > > > should > > > be > > > clearer about this. >=20 > Thanks for clarifying this in the docs. > >=20 >=20 > Notes on the updated patch follow: >=20 >=20 > > From a454cb9ce14aa6903f7be9f2a56c35ab8251e678 Mon Sep 17 00:00:00 > > 2001 > > From: Antoni Boucher > > Date: Wed, 12 May 2021 07:57:54 -0400 > > Subject: [PATCH] libgccjit: Add support for setting the link > > section of global > > =C2=A0variables [PR100688] > >=20 > > 2021-11-20=C2=A0 Antoni Boucher=C2=A0 > >=20 > > =C2=A0=C2=A0=C2=A0 gcc/jit/ > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PR t= arget/100688 > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * do= cs/topics/compatibility.rst (LIBGCCJIT_ABI_18): New > > ABI > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 tag. > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * do= cs/topics/expressions.rst: Add documentation for > > the > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 func= tion gcc_jit_lvalue_set_link_section. > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * ji= t-playback.h: New function (set_link_section) and > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 rval= ue::m_inner protected. >=20 > As noted above, this part of the ChangeLog at least needs updating. >=20 > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * ji= t-recording.c: New function (set_link_section) and > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 supp= ort for setting the link section. > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * ji= t-recording.h: New function (set_link_section) and > > new > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fiel= d m_link_section. > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * li= bgccjit.c: New function > > (gcc_jit_lvalue_set_link_section). > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * li= bgccjit.h: New function > > (gcc_jit_lvalue_set_link_section). > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * li= bgccjit.map (LIBGCCJIT_ABI_18): New ABI tag. > >=20 > > =C2=A0=C2=A0=C2=A0 gcc/testsuite/ > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PR t= arget/100688 > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * ji= t.dg/all-non-failing-tests.h: Add test-link- > > section.c. > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * ji= t.dg/test-link_section.c: New test. > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * ji= t.dg/jit.exp: New helper function to test that the > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 asse= mbly contains a pattern. >=20 > [...snip...] >=20 > > diff --git a/gcc/jit/docs/topics/compatibility.rst > > b/gcc/jit/docs/topics/compatibility.rst > > index 52ee3f860a7..b852f205fd7 100644 > > --- a/gcc/jit/docs/topics/compatibility.rst > > +++ b/gcc/jit/docs/topics/compatibility.rst > > @@ -284,3 +284,12 @@ entrypoints: > > =C2=A0=C2=A0 * :func:`gcc_jit_struct_get_field` > > =C2=A0 > > =C2=A0=C2=A0 * :func:`gcc_jit_struct_get_field_count` > > + > > +.. _LIBGCCJIT_ABI_18: > > + > > +``LIBGCCJIT_ABI_18`` > > +----------------------- > > +``LIBGCCJIT_ABI_18`` covers the addition of an API entrypoint to > > set the link > > +section of a variable: > > + > > +=C2=A0 * :func:`gcc_jit_lvalue_set_link_section` >=20 > As noted in earlier review, presumably there's a different patch that > adds ABI_17? >=20 > I can potentially approve this link section patch now, but that other > patch would need to be pushed first. Yes, there's a patch before this one that will need to be reviewed and merged first. >=20 > [...snip...] >=20 > > @@ -4547,20 +4552,30 @@ recording::block::dump_edges_to_dot > > (pretty_printer *pp) > > =C2=A0void > > =C2=A0recording::global::replay_into (replayer *r) > > =C2=A0{ > > -=C2=A0 set_playback_obj ( > > -=C2=A0=C2=A0=C2=A0 m_initializer > > -=C2=A0=C2=A0=C2=A0 ? r->new_global_initialized (playback_location (r, = m_loc), > > +=C2=A0 playback::lvalue *global; > > +=C2=A0 if (m_initializer) > > +=C2=A0 { > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 global =3D r->new_global_initialized (p= layback_location (r, > > m_loc), > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m_kind, > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m_type->playback_type (), > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m_type->dereference ()->ge= t_size > > (), > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m_initializer_num_bytes > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 / m_type->dereference ()->= get_size > > (), > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m_initializer, > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 playback_string (m_name)) > > -=C2=A0=C2=A0=C2=A0 : r->new_global (playback_location (r, m_loc), > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 playback_string (m_name)); > > +=C2=A0 } > > +=C2=A0 else > > +=C2=A0 { > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 global =3D r->new_global (playback_loca= tion (r, m_loc), > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m_kind, > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 m_type->playback_type (= ), > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 playback_string (m_name))); > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 playback_string (m_name)); > > +=C2=A0 } > > + > > +=C2=A0 if (m_link_section !=3D NULL) > > +=C2=A0=C2=A0=C2=A0 global->set_link_section (m_link_section->c_str ())= ; > > + > > +=C2=A0 set_playback_obj (global); > > =C2=A0} >=20 > Looks like the patch as posted has some interaction with the > initializers patch, presumably that's the ABI_17? Yes, but that's gonna be in a future patch that is not ABI 17. Since I need to update that code to have the variable global to call set_link_section, I'll let this code as is if this is OK. >=20 > But presumably the intent here is this hunk: >=20 > +=C2=A0 if (m_link_section !=3D NULL) > +=C2=A0=C2=A0=C2=A0 global->set_link_section (m_link_section->c_str ()); >=20 > and that indeed looks good. >=20 > =C2=A0=20 > > diff --git a/gcc/jit/libgccjit.c b/gcc/jit/libgccjit.c > > index c744b634f4b..5b413d41e2c 100644 > > --- a/gcc/jit/libgccjit.c > > +++ b/gcc/jit/libgccjit.c > > @@ -2217,6 +2217,18 @@ gcc_jit_lvalue_get_address (gcc_jit_lvalue > > *lvalue, > > =C2=A0=C2=A0 return (gcc_jit_rvalue *)lvalue->get_address (loc); > > =C2=A0} > > =C2=A0 > > +/* Public entrypoint.=C2=A0 See description in libgccjit.h. > > + > > +=C2=A0=C2=A0 After error-checking, the real work is done by the > > +=C2=A0=C2=A0 gcc::jit::recording::lvalue::set_link_section method in j= it- > > recording.c.=C2=A0 */ > > +void > > +gcc_jit_lvalue_set_link_section (gcc_jit_lvalue *lvalue, > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 const char *section_name) > > +{ > > +=C2=A0 RETURN_IF_FAIL (name, NULL, NULL, "NULL section_name"); > > +=C2=A0 lvalue->set_link_section (name); > > +} >=20 > Thanks for renaming the param from "name" to "section_name", but it > looks like you didn't rename the uses of it within the function - I'm > guessing this code as-is doesn't compile. >=20 > [...snip...] >=20 > > diff --git a/gcc/jit/libgccjit.map b/gcc/jit/libgccjit.map > > index 64e790949e8..e5bdafd0156 100644 > > --- a/gcc/jit/libgccjit.map > > +++ b/gcc/jit/libgccjit.map > > @@ -226,3 +226,11 @@ LIBGCCJIT_ABI_16 { > > =C2=A0=C2=A0=C2=A0=C2=A0 gcc_jit_type_is_struct; > > =C2=A0=C2=A0=C2=A0=C2=A0 gcc_jit_struct_get_field_count; > > =C2=A0} LIBGCCJIT_ABI_15; > > + > > +LIBGCCJIT_ABI_17 { > > +} LIBGCCJIT_ABI_16; > > + >=20 > Same notes here as above. >=20 > [...snip...] >=20 > Overall the patch looks good, my comments are all just nit-picks at > this point, except that obviously you need to finish updating the > symbol name to "section_name" in gcc_jit_lvalue_set_link_section so > that it compiles.=C2=A0 Please check it compiles and that the testsuite > passes before pushing - though I think this is waiting on another > patch, right?=C2=A0 This is OK for trunk, once those fixes and > prerequisites > are taken care of. >=20 > Thanks again > Dave >=20 --=-8z6tDSsRj7O5FEScp0hS Content-Disposition: attachment; filename*0=0001-libgccjit-Add-support-for-setting-the-link-section-o.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-libgccjit-Add-support-for-setting-the-link-section-o.patch"; charset="UTF-8" RnJvbSBkMzM0ZmJhY2E4ZmE0MGJlYmNlZjg4Y2JhMmYwNTMyOWQ2NzdjNjljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmkgQm91Y2hlciA8Ym91YW50b0B6b2hvLmNvbT4KRGF0 ZTogV2VkLCAxMiBNYXkgMjAyMSAwNzo1Nzo1NCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGxpYmdj Y2ppdDogQWRkIHN1cHBvcnQgZm9yIHNldHRpbmcgdGhlIGxpbmsgc2VjdGlvbiBvZiBnbG9iYWwK IHZhcmlhYmxlcyBbUFIxMDA2ODhdCgoyMDIxLTExLTIwICBBbnRvbmkgQm91Y2hlciAgPGJvdWFu dG9Aem9oby5jb20+CgogICAgZ2NjL2ppdC8KICAgICAgICAgICAgUFIgdGFyZ2V0LzEwMDY4OAog ICAgICAgICAgICAqIGRvY3MvdG9waWNzL2NvbXBhdGliaWxpdHkucnN0IChMSUJHQ0NKSVRfQUJJ XzE4KTogTmV3IEFCSQogICAgICAgICAgICB0YWcuCiAgICAgICAgICAgICogZG9jcy90b3BpY3Mv ZXhwcmVzc2lvbnMucnN0OiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlCiAgICAgICAgICAgIGZ1 bmN0aW9uIGdjY19qaXRfbHZhbHVlX3NldF9saW5rX3NlY3Rpb24uCiAgICAgICAgICAgICogaml0 LXBsYXliYWNrLmg6IE5ldyBmdW5jdGlvbiAoc2V0X2xpbmtfc2VjdGlvbikuCiAgICAgICAgICAg ICogaml0LXJlY29yZGluZy5jOiBOZXcgZnVuY3Rpb24gKHNldF9saW5rX3NlY3Rpb24pIGFuZAog ICAgICAgICAgICBzdXBwb3J0IGZvciBzZXR0aW5nIHRoZSBsaW5rIHNlY3Rpb24uCiAgICAgICAg ICAgICogaml0LXJlY29yZGluZy5oOiBOZXcgZnVuY3Rpb24gKHNldF9saW5rX3NlY3Rpb24pIGFu ZCBuZXcKICAgICAgICAgICAgZmllbGQgbV9saW5rX3NlY3Rpb24uCiAgICAgICAgICAgICogbGli Z2Njaml0LmM6IE5ldyBmdW5jdGlvbiAoZ2NjX2ppdF9sdmFsdWVfc2V0X2xpbmtfc2VjdGlvbiku CiAgICAgICAgICAgICogbGliZ2Njaml0Lmg6IE5ldyBmdW5jdGlvbiAoZ2NjX2ppdF9sdmFsdWVf c2V0X2xpbmtfc2VjdGlvbikuCiAgICAgICAgICAgICogbGliZ2Njaml0Lm1hcCAoTElCR0NDSklU X0FCSV8xOCk6IE5ldyBBQkkgdGFnLgoKICAgIGdjYy90ZXN0c3VpdGUvCiAgICAgICAgICAgIFBS IHRhcmdldC8xMDA2ODgKICAgICAgICAgICAgKiBqaXQuZGcvdGVzdC1saW5rLXNlY3Rpb24tYXNz ZW1ibGVyLmM6IE5ldyB0ZXN0LgogICAgICAgICAgICAqIGppdC5kZy9qaXQuZXhwOiBOZXcgaGVs cGVyIGZ1bmN0aW9uIHRvIHRlc3QgdGhhdCB0aGUKICAgICAgICAgICAgYXNzZW1ibHkgY29udGFp bnMgYSBwYXR0ZXJuLgotLS0KIGdjYy9qaXQvZG9jcy90b3BpY3MvY29tcGF0aWJpbGl0eS5yc3Qg ICAgICAgICB8ICA5ICsrKysrCiBnY2Mvaml0L2RvY3MvdG9waWNzL2V4cHJlc3Npb25zLnJzdCAg ICAgICAgICAgfCAyMSArKysrKysrKysrKwogZ2NjL2ppdC9qaXQtcGxheWJhY2suaCAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDYgKysrCiBnY2Mvaml0L2ppdC1yZWNvcmRpbmcuYyAgICAgICAg ICAgICAgICAgICAgICAgfCAzNSArKysrKysrKysrKysrKystLS0KIGdjYy9qaXQvaml0LXJlY29y ZGluZy5oICAgICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKy0KIGdjYy9qaXQvbGliZ2Njaml0 LmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysKIGdjYy9qaXQvbGliZ2Nj aml0LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysKIGdjYy9qaXQvbGli Z2Njaml0Lm1hcCAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysKIGdjYy90ZXN0c3Vp dGUvaml0LmRnL2ppdC5leHAgICAgICAgICAgICAgICAgICB8IDMzICsrKysrKysrKysrKysrKysr CiAuLi4vaml0LmRnL3Rlc3QtbGluay1zZWN0aW9uLWFzc2VtYmxlci5jICAgICAgfCAzNyArKysr KysrKysrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9ucygrKSwgNyBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0 LWxpbmstc2VjdGlvbi1hc3NlbWJsZXIuYwoKZGlmZiAtLWdpdCBhL2djYy9qaXQvZG9jcy90b3Bp Y3MvY29tcGF0aWJpbGl0eS5yc3QgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2NvbXBhdGliaWxpdHku cnN0CmluZGV4IDUyZWUzZjg2MGE3Li5iODUyZjIwNWZkNyAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9k b2NzL3RvcGljcy9jb21wYXRpYmlsaXR5LnJzdAorKysgYi9nY2Mvaml0L2RvY3MvdG9waWNzL2Nv bXBhdGliaWxpdHkucnN0CkBAIC0yODQsMyArMjg0LDEyIEBAIGVudHJ5cG9pbnRzOgogICAqIDpm dW5jOmBnY2Nfaml0X3N0cnVjdF9nZXRfZmllbGRgCiAKICAgKiA6ZnVuYzpgZ2NjX2ppdF9zdHJ1 Y3RfZ2V0X2ZpZWxkX2NvdW50YAorCisuLiBfTElCR0NDSklUX0FCSV8xODoKKworYGBMSUJHQ0NK SVRfQUJJXzE4YGAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitgYExJQkdDQ0pJVF9BQklfMThg YCBjb3ZlcnMgdGhlIGFkZGl0aW9uIG9mIGFuIEFQSSBlbnRyeXBvaW50IHRvIHNldCB0aGUgbGlu aworc2VjdGlvbiBvZiBhIHZhcmlhYmxlOgorCisgICogOmZ1bmM6YGdjY19qaXRfbHZhbHVlX3Nl dF9saW5rX3NlY3Rpb25gCmRpZmYgLS1naXQgYS9nY2Mvaml0L2RvY3MvdG9waWNzL2V4cHJlc3Np b25zLnJzdCBiL2djYy9qaXQvZG9jcy90b3BpY3MvZXhwcmVzc2lvbnMucnN0CmluZGV4IDM5NjI1 OWVmMDdlLi4wMmRlNTMxZjMxYSAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHBy ZXNzaW9ucy5yc3QKKysrIGIvZ2NjL2ppdC9kb2NzL3RvcGljcy9leHByZXNzaW9ucy5yc3QKQEAg LTUzOSw2ICs1MzksMjcgQEAgd2hlcmUgdGhlIHJ2YWx1ZSBpcyBjb21wdXRlZCBieSByZWFkaW5n IGZyb20gdGhlIHN0b3JhZ2UgYXJlYS4KIAogICAgaW4gQy4KIAorLi4gZnVuY3Rpb246OiB2b2lk CisgICAgICAgICAgICAgIGdjY19qaXRfbHZhbHVlX3NldF9saW5rX3NlY3Rpb24gKGdjY19qaXRf bHZhbHVlICpsdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSkKKworICAgU2V0IHRoZSBsaW5rIHNlY3Rp b24gb2YgYSB2YXJpYWJsZS4KKyAgIFRoZSBwYXJhbWV0ZXIgYGBzZWN0aW9uX25hbWVgYCBtdXN0 IGJlIG5vbi1OVUxMIGFuZCBtdXN0IGNvbnRhaW5zIHRoZQorICAgbGVhZGluZyBkb3QuIEFuYWxv Z291cyB0bzoKKworICAgLi4gY29kZS1ibG9jazo6IGMKKworICAgICBpbnQgdmFyaWFibGUgX19h dHRyaWJ1dGVfXygoc2VjdGlvbigiLnNlY3Rpb24iKSkpOworCisgICBpbiBDLgorCisgICBUaGlz IGVudHJ5cG9pbnQgd2FzIGFkZGVkIGluIDpyZWY6YExJQkdDQ0pJVF9BQklfMThgOyB5b3UgY2Fu IHRlc3QgZm9yCisgICBpdHMgcHJlc2VuY2UgdXNpbmcKKworICAgLi4gY29kZS1ibG9jazo6IGMK KworICAgICAgI2lmZGVmIExJQkdDQ0pJVF9IQVZFX2djY19qaXRfbHZhbHVlX3NldF9saW5rX3Nl Y3Rpb24KKwogR2xvYmFsIHZhcmlhYmxlcwogKioqKioqKioqKioqKioqKgogCmRpZmYgLS1naXQg YS9nY2Mvaml0L2ppdC1wbGF5YmFjay5oIGIvZ2NjL2ppdC9qaXQtcGxheWJhY2suaAppbmRleCBm NjcwYzllODFkZi4uMTVmZjRmOTFlYjcgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LXBsYXliYWNr LmgKKysrIGIvZ2NjL2ppdC9qaXQtcGxheWJhY2suaApAQCAtNjc1LDYgKzY3NSwxMiBAQCBwdWJs aWM6CiAgIHJ2YWx1ZSAqCiAgIGdldF9hZGRyZXNzIChsb2NhdGlvbiAqbG9jKTsKIAorICB2b2lk CisgIHNldF9saW5rX3NlY3Rpb24gKGNvbnN0IGNoYXIqIG5hbWUpCisgIHsKKyAgICBzZXRfZGVj bF9zZWN0aW9uX25hbWUgKGFzX3RyZWUgKCksIG5hbWUpOworICB9CisKIHByaXZhdGU6CiAgIGJv b2wgbWFya19hZGRyZXNzYWJsZSAobG9jYXRpb24gKmxvYyk7CiB9OwpkaWZmIC0tZ2l0IGEvZ2Nj L2ppdC9qaXQtcmVjb3JkaW5nLmMgYi9nY2Mvaml0L2ppdC1yZWNvcmRpbmcuYwppbmRleCAxMTdm ZjcwMTE0Yy4uMmFkOWU5MGUzOTcgMTAwNjQ0Ci0tLSBhL2djYy9qaXQvaml0LXJlY29yZGluZy5j CisrKyBiL2djYy9qaXQvaml0LXJlY29yZGluZy5jCkBAIC0zNzEzLDYgKzM3MTMsMTEgQEAgcmVj b3JkaW5nOjpsdmFsdWU6OmdldF9hZGRyZXNzIChyZWNvcmRpbmc6OmxvY2F0aW9uICpsb2MpCiAg IHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgcmVjb3JkaW5nOjpsdmFsdWU6OnNldF9saW5rX3Nl Y3Rpb24gKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgIG1fbGlua19zZWN0aW9uID0gbmV3X3N0cmlu ZyAobmFtZSk7Cit9CisKIC8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBjbGFzcyBnY2M6OmppdDo6 cmVjb3JkaW5nOjpwYXJhbS4gICovCiAKIC8qIEltcGxlbWVudGF0aW9uIG9mIHB1cmUgdmlydHVh bCBob29rIHJlY29yZGluZzo6bWVtZW50bzo6cmVwbGF5X2ludG8KQEAgLTQ1NDcsMjAgKzQ1NTIs MzAgQEAgcmVjb3JkaW5nOjpibG9jazo6ZHVtcF9lZGdlc190b19kb3QgKHByZXR0eV9wcmludGVy ICpwcCkKIHZvaWQKIHJlY29yZGluZzo6Z2xvYmFsOjpyZXBsYXlfaW50byAocmVwbGF5ZXIgKnIp CiB7Ci0gIHNldF9wbGF5YmFja19vYmogKAotICAgIG1faW5pdGlhbGl6ZXIKLSAgICA/IHItPm5l d19nbG9iYWxfaW5pdGlhbGl6ZWQgKHBsYXliYWNrX2xvY2F0aW9uIChyLCBtX2xvYyksCisgIHBs YXliYWNrOjpsdmFsdWUgKmdsb2JhbDsKKyAgaWYgKG1faW5pdGlhbGl6ZXIpCisgIHsKKyAgICAg IGdsb2JhbCA9IHItPm5ld19nbG9iYWxfaW5pdGlhbGl6ZWQgKHBsYXliYWNrX2xvY2F0aW9uIChy LCBtX2xvYyksCiAJCQkJIG1fa2luZCwKIAkJCQkgbV90eXBlLT5wbGF5YmFja190eXBlICgpLAog CQkJCSBtX3R5cGUtPmRlcmVmZXJlbmNlICgpLT5nZXRfc2l6ZSAoKSwKIAkJCQkgbV9pbml0aWFs aXplcl9udW1fYnl0ZXMKIAkJCQkgLyBtX3R5cGUtPmRlcmVmZXJlbmNlICgpLT5nZXRfc2l6ZSAo KSwKIAkJCQkgbV9pbml0aWFsaXplciwKLQkJCQkgcGxheWJhY2tfc3RyaW5nIChtX25hbWUpKQot ICAgIDogci0+bmV3X2dsb2JhbCAocGxheWJhY2tfbG9jYXRpb24gKHIsIG1fbG9jKSwKKwkJCQkg cGxheWJhY2tfc3RyaW5nIChtX25hbWUpKTsKKyAgfQorICBlbHNlCisgIHsKKyAgICAgIGdsb2Jh bCA9IHItPm5ld19nbG9iYWwgKHBsYXliYWNrX2xvY2F0aW9uIChyLCBtX2xvYyksCiAJCSAgICAg bV9raW5kLAogCQkgICAgIG1fdHlwZS0+cGxheWJhY2tfdHlwZSAoKSwKLQkJICAgICBwbGF5YmFj a19zdHJpbmcgKG1fbmFtZSkpKTsKKwkJICAgICBwbGF5YmFja19zdHJpbmcgKG1fbmFtZSkpOwor ICB9CisKKyAgaWYgKG1fbGlua19zZWN0aW9uICE9IE5VTEwpCisgICAgZ2xvYmFsLT5zZXRfbGlu a19zZWN0aW9uIChtX2xpbmtfc2VjdGlvbi0+Y19zdHIgKCkpOworCisgIHNldF9wbGF5YmFja19v YmogKGdsb2JhbCk7CiB9CiAKIC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9u IG9mCkBAIC00Njc1LDYgKzQ2OTAsMTQgQEAgcmVjb3JkaW5nOjpnbG9iYWw6OndyaXRlX3JlcHJv ZHVjZXIgKHJlcHJvZHVjZXIgJnIpCiAgICAgci5nZXRfaWRlbnRpZmllcl9hc190eXBlIChnZXRf dHlwZSAoKSksCiAgICAgbV9uYW1lLT5nZXRfZGVidWdfc3RyaW5nICgpKTsKIAorICBpZiAobV9s aW5rX3NlY3Rpb24gIT0gTlVMTCkKKyAgeworICAgIHIud3JpdGUgKCIgIGdjY19qaXRfbHZhbHVl X3NldF9saW5rX3NlY3Rpb24gKCVzLCAvKiBnY2Nfaml0X2x2YWx1ZSAqbHZhbHVlICovXG4iCisJ IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiVzXCIpOyAvKiAqL1xuIiwKKyAg ICAgaWQsCisgICAgIG1fbGlua19zZWN0aW9uLT5jX3N0ciAoKSk7CisgIH0KKwogICBpZiAobV9p bml0aWFsaXplcikKICAgICBzd2l0Y2ggKG1fdHlwZS0+ZGVyZWZlcmVuY2UgKCktPmdldF9zaXpl ICgpKQogICAgICAgewpkaWZmIC0tZ2l0IGEvZ2NjL2ppdC9qaXQtcmVjb3JkaW5nLmggYi9nY2Mv aml0L2ppdC1yZWNvcmRpbmcuaAppbmRleCA0YTk5NGZlNzA5NC4uMmQwOGUwNDNlMTAgMTAwNjQ0 Ci0tLSBhL2djYy9qaXQvaml0LXJlY29yZGluZy5oCisrKyBiL2djYy9qaXQvaml0LXJlY29yZGlu Zy5oCkBAIC0xMTEyLDcgKzExMTIsOCBAQCBwdWJsaWM6CiAgIGx2YWx1ZSAoY29udGV4dCAqY3R4 dCwKIAkgIGxvY2F0aW9uICpsb2MsCiAJICB0eXBlICp0eXBlXykKLSAgICA6IHJ2YWx1ZSAoY3R4 dCwgbG9jLCB0eXBlXykKKyAgICA6IHJ2YWx1ZSAoY3R4dCwgbG9jLCB0eXBlXyksCisgICAgICBt X2xpbmtfc2VjdGlvbiAoTlVMTCkKICAgICB7fQogCiAgIHBsYXliYWNrOjpsdmFsdWUgKgpAQCAt MTEzNCw2ICsxMTM1LDEwIEBAIHB1YmxpYzoKICAgY29uc3QgY2hhciAqYWNjZXNzX2FzX3J2YWx1 ZSAocmVwcm9kdWNlciAmcikgT1ZFUlJJREU7CiAgIHZpcnR1YWwgY29uc3QgY2hhciAqYWNjZXNz X2FzX2x2YWx1ZSAocmVwcm9kdWNlciAmcik7CiAgIHZpcnR1YWwgYm9vbCBpc19nbG9iYWwgKCkg Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgdm9pZCBzZXRfbGlua19zZWN0aW9uIChjb25zdCBj aGFyICpuYW1lKTsKKworcHJvdGVjdGVkOgorICBzdHJpbmcgKm1fbGlua19zZWN0aW9uOwogfTsK IAogY2xhc3MgcGFyYW0gOiBwdWJsaWMgbHZhbHVlCmRpZmYgLS1naXQgYS9nY2Mvaml0L2xpYmdj Y2ppdC5jIGIvZ2NjL2ppdC9saWJnY2NqaXQuYwppbmRleCBjNzQ0YjYzNGY0Yi4uN2RhMWZhYjc0 MzggMTAwNjQ0Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0LmMKKysrIGIvZ2NjL2ppdC9saWJnY2Nq aXQuYwpAQCAtMjIxNyw2ICsyMjE3LDE5IEBAIGdjY19qaXRfbHZhbHVlX2dldF9hZGRyZXNzIChn Y2Nfaml0X2x2YWx1ZSAqbHZhbHVlLAogICByZXR1cm4gKGdjY19qaXRfcnZhbHVlICopbHZhbHVl LT5nZXRfYWRkcmVzcyAobG9jKTsKIH0KIAorLyogUHVibGljIGVudHJ5cG9pbnQuICBTZWUgZGVz Y3JpcHRpb24gaW4gbGliZ2Njaml0LmguCisKKyAgIEFmdGVyIGVycm9yLWNoZWNraW5nLCB0aGUg cmVhbCB3b3JrIGlzIGRvbmUgYnkgdGhlCisgICBnY2M6OmppdDo6cmVjb3JkaW5nOjpsdmFsdWU6 OnNldF9saW5rX3NlY3Rpb24gbWV0aG9kIGluIGppdC1yZWNvcmRpbmcuYy4gICovCisKK3ZvaWQK K2djY19qaXRfbHZhbHVlX3NldF9saW5rX3NlY3Rpb24gKGdjY19qaXRfbHZhbHVlICpsdmFsdWUs CisJCQkgICAgY29uc3QgY2hhciAqc2VjdGlvbl9uYW1lKQoreworICBSRVRVUk5fSUZfRkFJTCAo c2VjdGlvbl9uYW1lLCBOVUxMLCBOVUxMLCAiTlVMTCBzZWN0aW9uX25hbWUiKTsKKyAgbHZhbHVl LT5zZXRfbGlua19zZWN0aW9uIChzZWN0aW9uX25hbWUpOworfQorCiAvKiBQdWJsaWMgZW50cnlw b2ludC4gIFNlZSBkZXNjcmlwdGlvbiBpbiBsaWJnY2NqaXQuaC4KIAogICAgQWZ0ZXIgZXJyb3It Y2hlY2tpbmcsIHRoZSByZWFsIHdvcmsgaXMgZG9uZSBieSB0aGUKZGlmZiAtLWdpdCBhL2djYy9q aXQvbGliZ2Njaml0LmggYi9nY2Mvaml0L2xpYmdjY2ppdC5oCmluZGV4IGExYzk0MzZjNTQ1Li42 NDZiNTE3MmIwOCAxMDA2NDQKLS0tIGEvZ2NjL2ppdC9saWJnY2NqaXQuaAorKysgYi9nY2Mvaml0 L2xpYmdjY2ppdC5oCkBAIC0xMDg5LDYgKzEwODksMjAgQEAgZXh0ZXJuIGdjY19qaXRfcnZhbHVl ICoKIGdjY19qaXRfbHZhbHVlX2dldF9hZGRyZXNzIChnY2Nfaml0X2x2YWx1ZSAqbHZhbHVlLAog CQkJICAgIGdjY19qaXRfbG9jYXRpb24gKmxvYyk7CiAKKyNkZWZpbmUgTElCR0NDSklUX0hBVkVf Z2NjX2ppdF9sdmFsdWVfc2V0X2xpbmtfc2VjdGlvbgorCisvKiBTZXQgdGhlIGxpbmsgc2VjdGlv biBvZiBhIGdsb2JhbCB2YXJpYWJsZTsgYW5hbG9nb3VzIHRvOgorICAgICBfX2F0dHJpYnV0ZV9f KChzZWN0aW9uKCIuc2VjdGlvbl9uYW1lIikpKQorICAgaW4gQy4KKworICAgVGhpcyBBUEkgZW50 cnlwb2ludCB3YXMgYWRkZWQgaW4gTElCR0NDSklUX0FCSV8xODsgeW91IGNhbiB0ZXN0IGZvciBp dHMKKyAgIHByZXNlbmNlIHVzaW5nCisgICAgICNpZmRlZiBMSUJHQ0NKSVRfSEFWRV9nY2Nfaml0 X2x2YWx1ZV9zZXRfbGlua19zZWN0aW9uCisqLworZXh0ZXJuIHZvaWQKK2djY19qaXRfbHZhbHVl X3NldF9saW5rX3NlY3Rpb24gKGdjY19qaXRfbHZhbHVlICpsdmFsdWUsCisJCQkgICAgY29uc3Qg Y2hhciAqc2VjdGlvbl9uYW1lKTsKKwogZXh0ZXJuIGdjY19qaXRfbHZhbHVlICoKIGdjY19qaXRf ZnVuY3Rpb25fbmV3X2xvY2FsIChnY2Nfaml0X2Z1bmN0aW9uICpmdW5jLAogCQkJICAgIGdjY19q aXRfbG9jYXRpb24gKmxvYywKZGlmZiAtLWdpdCBhL2djYy9qaXQvbGliZ2Njaml0Lm1hcCBiL2dj Yy9qaXQvbGliZ2Njaml0Lm1hcAppbmRleCA2NGU3OTA5NDllOC4uZTViZGFmZDAxNTYgMTAwNjQ0 Ci0tLSBhL2djYy9qaXQvbGliZ2Njaml0Lm1hcAorKysgYi9nY2Mvaml0L2xpYmdjY2ppdC5tYXAK QEAgLTIyNiwzICsyMjYsMTEgQEAgTElCR0NDSklUX0FCSV8xNiB7CiAgICAgZ2NjX2ppdF90eXBl X2lzX3N0cnVjdDsKICAgICBnY2Nfaml0X3N0cnVjdF9nZXRfZmllbGRfY291bnQ7CiB9IExJQkdD Q0pJVF9BQklfMTU7CisKK0xJQkdDQ0pJVF9BQklfMTcgeworfSBMSUJHQ0NKSVRfQUJJXzE2Owor CitMSUJHQ0NKSVRfQUJJXzE4IHsKKyAgZ2xvYmFsOgorICAgIGdjY19qaXRfbHZhbHVlX3NldF9s aW5rX3NlY3Rpb247Cit9IExJQkdDQ0pJVF9BQklfMTc7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1 aXRlL2ppdC5kZy9qaXQuZXhwIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvaml0LmV4cAppbmRleCAx MGI5OGJkYzc0Yi4uMzU2OGRiYjlkNjMgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvaml0LmRn L2ppdC5leHAKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvaml0LmV4cApAQCAtODY0LDYgKzg2 NCwzOSBAQCBwcm9jIGppdC12ZXJpZnktYXNzZW1ibGVyIHsgYXJncyB9IHsKICAgICBqaXQtcnVu LWV4ZWN1dGFibGUgJHtleGVjdXRhYmxlX2Zyb21fYXNtfSAke2RnLW91dHB1dC10ZXh0fQogfQog CisjIEFzc3VtaW5nIHRoYXQgYSAucyBmaWxlIGhhcyBiZWVuIHdyaXR0ZW4gb3V0IG5hbWVkCisj IE9VVFBVVF9GSUxFTkFNRSwgY2hlY2sgdGhhdCB0aGUgYXJndW1lbnQgbWF0Y2hlcyB0aGUKKyMg b3V0cHV0IGZpbGUuCisjIEZvciB1c2UgYnkgdGhlIHRlc3QtbGluay1zZWN0aW9uLWFzc2VtYmxl ci5jIHRlc3RjYXNlLgorcHJvYyBqaXQtdmVyaWZ5LWFzc2VtYmxlci1vdXRwdXQgeyBhcmdzIH0g eworICAgIHZlcmJvc2UgImppdC12ZXJpZnktYXNzZW1ibGVyOiAkYXJncyIKKworICAgIHNldCBk Zy1vdXRwdXQtdGV4dCBbbGluZGV4ICRhcmdzIDBdCisgICAgdmVyYm9zZSAiZGctb3V0cHV0LXRl eHQ6ICR7ZGctb3V0cHV0LXRleHR9IgorCisgICAgdXB2YXIgMiBuYW1lIG5hbWUKKyAgICB2ZXJi b3NlICJuYW1lOiAkbmFtZSIKKworICAgIHVwdmFyIDIgcHJvZyBwcm9nCisgICAgdmVyYm9zZSAi cHJvZzogJHByb2ciCisgICAgc2V0IGFzbV9maWxlbmFtZSBbaml0LWdldC1vdXRwdXQtZmlsZW5h bWUgJHByb2ddCisgICAgdmVyYm9zZSAiICBhc21fZmlsZW5hbWU6ICR7YXNtX2ZpbGVuYW1lfSIK KworICAgICMgUmVhZCB0aGUgYXNzZW1ibHkgZmlsZS4KKyAgICBzZXQgZiBbb3BlbiAkYXNtX2Zp bGVuYW1lIHJdCisgICAgc2V0IGNvbnRlbnQgW3JlYWQgJGZdCisgICAgY2xvc2UgJGYKKworICAg ICMgVmVyaWZ5IHRoYXQgdGhlIGFzc2VtYmx5IG1hdGNoZXMgdGhlIHJlZ2V4LgorICAgIGlmIHsg IVtyZWdleHAgJHtkZy1vdXRwdXQtdGV4dH0gJGNvbnRlbnRdIH0geworCWZhaWwgIiR7YXNtX2Zp bGVuYW1lfSBvdXRwdXQgcGF0dGVybiB0ZXN0LCBpcyAke2NvbnRlbnR9LCBzaG91bGQgbWF0Y2gg JHtkZy1vdXRwdXQtdGV4dH0iCisJdmVyYm9zZSAiRmFpbGVkIHRlc3QgZm9yIG91dHB1dCBwYXR0 ZXJuICR7ZGctb3V0cHV0LXRleHR9IiAzCisgICAgfSBlbHNlIHsKKwlwYXNzICIke2FzbV9maWxl bmFtZX0gb3V0cHV0IHBhdHRlcm4gdGVzdCwgJHtkZy1vdXRwdXQtdGV4dH0iCisJdmVyYm9zZSAi UGFzc2VkIHRlc3QgZm9yIG91dHB1dCBwYXR0ZXJuICR7ZGctb3V0cHV0LXRleHR9IiAzCisgICAg fQorCit9CiAjIEFzc3VtaW5nIHRoYXQgYSAubyBmaWxlIGhhcyBiZWVuIHdyaXR0ZW4gb3V0IG5h bWVkCiAjIE9VVFBVVF9GSUxFTkFNRSwgaW52b2tlIHRoZSBkcml2ZXIgdG8gdHJ5IHRvIHR1cm4g aXQgaW50bwogIyBhbiBleGVjdXRhYmxlLCBhbmQgdHJ5IHRvIHJ1biB0aGUgcmVzdWx0LgpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9qaXQuZGcvdGVzdC1saW5rLXNlY3Rpb24tYXNzZW1ibGVy LmMgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWxpbmstc2VjdGlvbi1hc3NlbWJsZXIuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTkwYjAwZTlhODIKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2ppdC5kZy90ZXN0LWxpbmstc2VjdGlvbi1hc3Nl bWJsZXIuYwpAQCAtMCwwICsxLDM3IEBACisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 c3RkaW8uaD4KKworI2luY2x1ZGUgImxpYmdjY2ppdC5oIgorCisjZGVmaW5lIFRFU1RfQ09NUElM SU5HX1RPX0ZJTEUKKyNkZWZpbmUgT1VUUFVUX0tJTkQgICAgICBHQ0NfSklUX09VVFBVVF9LSU5E X0FTU0VNQkxFUgorI2RlZmluZSBPVVRQVVRfRklMRU5BTUUgICJvdXRwdXQtb2YtdGVzdC1saW5r LXNlY3Rpb24tYXNzZW1ibGVyLmMucyIKKyNpbmNsdWRlICJoYXJuZXNzLmgiCisKK3ZvaWQKK2Ny ZWF0ZV9jb2RlIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAg LyogTGV0J3MgdHJ5IHRvIGluamVjdCB0aGUgZXF1aXZhbGVudCBvZjoKKyAgICAgaW50IGZvbyBf X2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIuc2VjdGlvbiIpKSk7CisgICovCisgIGdjY19qaXRfdHlw ZSAqaW50X3R5cGUgPQorICAgIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSAoY3R4dCwgR0NDX0pJ VF9UWVBFX0lOVCk7CisgIGdjY19qaXRfbHZhbHVlICpmb28gPQorICAgIGdjY19qaXRfY29udGV4 dF9uZXdfZ2xvYmFsICgKKyAgICAgIGN0eHQsIE5VTEwsIEdDQ19KSVRfR0xPQkFMX0VYUE9SVEVE LCBpbnRfdHlwZSwgImZvbyIpOworICBnY2Nfaml0X2x2YWx1ZV9zZXRfbGlua19zZWN0aW9uKGZv bywgIi5teV9zZWN0aW9uIik7CisKKyAgZ2NjX2ppdF9mdW5jdGlvbiAqZnVuY19tYWluID0KKyAg ICBnY2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uIChjdHh0LCBOVUxMLAorCQkJCSAgR0NDX0pJ VF9GVU5DVElPTl9FWFBPUlRFRCwKKwkJCQkgIGludF90eXBlLAorCQkJCSAgIm1haW4iLAorCQkJ CSAgMCwgTlVMTCwKKwkJCQkgIDApOworICBnY2Nfaml0X3J2YWx1ZSAqemVybyA9IGdjY19qaXRf Y29udGV4dF96ZXJvIChjdHh0LCBpbnRfdHlwZSk7CisgIGdjY19qaXRfYmxvY2sgKmJsb2NrID0g Z2NjX2ppdF9mdW5jdGlvbl9uZXdfYmxvY2sgKGZ1bmNfbWFpbiwgTlVMTCk7CisgIGdjY19qaXRf YmxvY2tfZW5kX3dpdGhfcmV0dXJuIChibG9jaywgTlVMTCwgemVybyk7Cit9CisKKy8qIHsgZGct ZmluYWwgeyBqaXQtdmVyaWZ5LW91dHB1dC1maWxlLXdhcy1jcmVhdGVkICIiIH0gfSAqLworLyog eyBkZy1maW5hbCB7IGppdC12ZXJpZnktYXNzZW1ibGVyLW91dHB1dCAiLnNlY3Rpb24JLm15X3Nl Y3Rpb24iIH0gfSAqLwotLSAKMi4yNi4yLjcuZzE5ZGI5Y2ZiNjguZGlydHkKCg== --=-8z6tDSsRj7O5FEScp0hS--