From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 39060 invoked by alias); 12 Nov 2019 17:25:46 -0000 Mailing-List: contact jit-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Subscribe: Sender: jit-owner@gcc.gnu.org Received: (qmail 39037 invoked by uid 89); 12 Nov 2019 17:25:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.100.3 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-22.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 spammy=replay X-Spam-Status: No, score=-22.2 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LOTSOFHASH,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on sourceware.org X-Spam-Level: X-Spam-User: qpsmtpd, 2 recipients X-HELO: EUR03-AM5-obe.outbound.protection.outlook.com Received: from mail-eopbgr30040.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.40) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 12 Nov 2019 17:25:43 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=44qVplPMVxK+zkwgXb6MzezrRF3sZyzTrKTZR3+mOn8=; b=sPVCVY3Y1icuP2ssn/Mzynv0Lr0gP5DkmskqHi56zVHEneOOj0nMO+zBzM8xGbtQe7tvjZKGbsQ9e4QTwfBrXR891tZ36ZTDvbCpiMDoP4vYKhXu6vpRwDMsHrxY8vEp9gfxpoWg62CjmeIUzwxAunuveIwFVAsJTPy1emZvbZM= Received: from VI1PR08CA0132.eurprd08.prod.outlook.com (2603:10a6:800:d4::34) by VI1PR0801MB2030.eurprd08.prod.outlook.com (2603:10a6:800:81::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2430.20; Tue, 12 Nov 2019 17:25:39 +0000 Received: from VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::209) by VI1PR08CA0132.outlook.office365.com (2603:10a6:800:d4::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2430.22 via Frontend Transport; Tue, 12 Nov 2019 17:25:39 +0000 Authentication-Results: spf=fail (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=none action=none header.from=arm.com; Received-SPF: Fail (protection.outlook.com: domain of arm.com does not designate 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT043.mail.protection.outlook.com (10.152.19.122) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.2430.21 via Frontend Transport; Tue, 12 Nov 2019 17:25:38 +0000 Received: ("Tessian outbound 6481c7fa5a3c:v33"); Tue, 12 Nov 2019 17:25:38 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a28507f661427faa X-CR-MTA-TID: 64aa7808 Received: from 21c9abd705b0.2 (cr-mta-lb-1.cr-mta-net [104.47.1.57]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id 31814DDF-C7A3-4F4A-AF7F-72FCA436F57C.1; Tue, 12 Nov 2019 17:25:33 +0000 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01lp2057.outbound.protection.outlook.com [104.47.1.57]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 21c9abd705b0.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 12 Nov 2019 17:25:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VJKGqDhJW2nVDW/59Zw8HNwnf1UE02CM2gn8sb4JOGZPARaCUiDrL1JP2WmkvKOseUvxm2/bjCnnjJzPvPpDd8AVB5kkFZHjf4G7l9SVm+PPYHt47ln7oHhdaRgtpdVxQkS6g84KnDOgf6Ycb/trnjWEaEe3g63+KAQgrQDNOHVyPQNVs2O3OwXhzes/gEk75aR1cITxyrRneO4N6jS7+CJmt2hsyNVC5Yj2SUfPgY5DPRR+TmkQgergnZJqwKSVa9PcQD/9mJwdnH/vZQ/ACF0mDG8YkcWBP/SE9/ntjlhpTrP7ussAC3eInHsfz1SJW+PwGeCVjPtom56b0QnZVg== 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-SenderADCheck; bh=44qVplPMVxK+zkwgXb6MzezrRF3sZyzTrKTZR3+mOn8=; b=Np2agJPDv/JXI1aLt0RlwfIRNcynsqzckI5kNFgwCkgIiZBmIfiT5a+9f2GkVLqIWUnhQ1qt47ycABkcHyeI86rOveq0WrSEicG3vpls7t3M7tezfBSpKX7yqAQjxaLvoIYXVrA2sPpyr7HRY6EfPB8uTc4aTdxSBPi8lNFGfuJwqrRx4dHZbGRl+hK69OfS2L5sWoeCWWi0KCqvO40LuwVSHGac7yDWUYI2E6FJ1GXLam/zF+UXA2pkbvD7eVk9uzVs8/+fcD79a0rWP0tBwKNy54+yZyQhgk9rxFwTDmu5aHv/FpTU8zI3PU7sRP2Fskyicv5Xyuowwuihs346fg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=44qVplPMVxK+zkwgXb6MzezrRF3sZyzTrKTZR3+mOn8=; b=sPVCVY3Y1icuP2ssn/Mzynv0Lr0gP5DkmskqHi56zVHEneOOj0nMO+zBzM8xGbtQe7tvjZKGbsQ9e4QTwfBrXR891tZ36ZTDvbCpiMDoP4vYKhXu6vpRwDMsHrxY8vEp9gfxpoWg62CjmeIUzwxAunuveIwFVAsJTPy1emZvbZM= Received: from VE1PR08MB5070.eurprd08.prod.outlook.com (20.179.31.87) by VE1PR08MB4671.eurprd08.prod.outlook.com (10.255.115.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2430.23; Tue, 12 Nov 2019 17:25:31 +0000 Received: from VE1PR08MB5070.eurprd08.prod.outlook.com ([fe80::49ba:f2e6:5383:e16b]) by VE1PR08MB5070.eurprd08.prod.outlook.com ([fe80::49ba:f2e6:5383:e16b%7]) with mapi id 15.20.2430.027; Tue, 12 Nov 2019 17:25:31 +0000 From: Andrea Corallo To: David Malcolm CC: Andrea Corallo , "jit@gcc.gnu.org" , "gcc-patches@gcc.gnu.org" , nd Subject: Re: [PATCH][gcc] libgccjit: handle long literals in playback::context::new_string_literal Thread-Topic: [PATCH][gcc] libgccjit: handle long literals in playback::context::new_string_literal Thread-Index: AQHVYW8dCMmJW7HrCU6PDNsvcxXHiKcjeB6AgCCk5QCARBx0AA== Date: Tue, 01 Jan 2019 00:00:00 -0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0058.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:60::22) To VE1PR08MB5070.eurprd08.prod.outlook.com (2603:10a6:803:10c::23) Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Andrea.Corallo@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [217.140.106.37] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3eaec758-cc4b-4dcf-76df-08d76795560d X-MS-TrafficTypeDiagnostic: VE1PR08MB4671:|VE1PR08MB4671:|VI1PR0801MB2030: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:6790;OLM:6790; x-forefront-prvs: 021975AE46 X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(979002)(4636009)(136003)(366004)(376002)(39860400002)(396003)(346002)(53754006)(199004)(189003)(54534003)(52116002)(446003)(76176011)(14454004)(8676002)(6512007)(86362001)(81156014)(5660300002)(81166006)(316002)(66066001)(11346002)(44832011)(6486002)(6436002)(386003)(6506007)(186003)(26005)(486006)(36756003)(6916009)(71190400001)(2906002)(71200400001)(102836004)(54906003)(6246003)(25786009)(66556008)(4326008)(64756008)(66476007)(7736002)(66446008)(99286004)(478600001)(3846002)(2616005)(14444005)(256004)(476003)(8936002)(5024004)(305945005)(66946007)(229853002)(6116002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:VE1PR08MB4671;H:VE1PR08MB5070.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: +BbBUi6CfiH2R/GBUxxMDTAtmvUdr7CNXFcJ/dAC5Ksl+KM5GaXc+vVo0Nb8+B348rcvpnzdVKSCxfzJlIpUvx9DXCcxIFKbEHqzOz5uB1ypL/R4TvKB6gZx9lGYeqDVRXsmeyREHzw77TSZC8Ej83zXyNX44f7srQWGiwjwc5ZsRx4hu0H5RVRaftDLCPNK4xfslsCAC+UXrvg8vQeT2XeNaQ2HOuXTeRllIxUuKHUh9KU4YOiFK3ObD3F03vHgSzgbYigvK+80tc3zzQhuNUve+4BVSAk27dv2Tzh9lH1T2m+itS0QF7zwDIcgspuNp+iQ2YUzs+VLgDZ+bodEl3bNBICVrSLoTdnloTfmOwuf83BCyQMN9+QaufGC5lHY/EhQyyr1GRUpp9hLImd/W0jkWx7QtxbRws666f5KXoQ19D8WQl0u/w9bfBRDcq88 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4671 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Andrea.Corallo@arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT043.eop-EUR03.prod.protection.outlook.com X-Forefront-Antispam-Report: CIP:63.35.35.123;IPV:CAL;SCL:-1;CTRY:IE;EFV:NLI;SFV:NSPM;SFS:(10009020)(979002)(4636009)(396003)(346002)(136003)(39860400002)(376002)(1110001)(339900001)(54534003)(189003)(199004)(53754006)(486006)(386003)(99286004)(6506007)(3846002)(7736002)(47776003)(105606002)(50466002)(446003)(26005)(76176011)(2906002)(102836004)(6862004)(36756003)(476003)(25786009)(66066001)(2616005)(305945005)(336012)(126002)(86362001)(4326008)(6116002)(11346002)(478600001)(186003)(229853002)(14454004)(14444005)(316002)(8936002)(8676002)(26826003)(23756003)(81156014)(81166006)(70206006)(36906005)(76130400001)(5660300002)(356004)(6486002)(6512007)(5024004)(450100002)(70586007)(22756006)(54906003)(6246003)(8746002)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0801MB2030;H:64aa7808-outbound-1.mta.getcheckrecipient.com;FPR:;SPF:Fail;LANG:en;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;MX:1;A:1; X-MS-Office365-Filtering-Correlation-Id-Prvs: 05df03ab-ed98-4e37-2bbd-08d76795518f NoDisclaimer: True X-Forefront-PRVS: 021975AE46 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JcW7SwQQntamJH3h50HcV1w9UFjHyYLVva7AvP/7uKnrx4z4SsRGEstMRU/lrhlRg7K61ZIa6Ltr426sMoCmy0TmCpfKQsEFVZ//s+bSKWhSBxMd/sejijIOnJ40MYdApBO/T4/BBA9joUOBEntjFQ3qRK7M2tTwJES28RgS+mukwGMrouBhdB3o1lUGvNR4jz1JbRF9uBuOZnBcWBxstvgz5NqzdCrTcFIluhLNEjZdcpdsfwis5sJ3mORjIb4hxhOzC8E7WAKg1stxGTFNt8qOfgjrSq3eQR3ekKp4SPUxB6Vi9mIXwNFKhFExMAcenNYQTH0qPi/jKcP/5V7YQ/FCaooUJwq5dQ/gF32l90fmYQUS7Dnsqbg6cBQXU0nK7ZzwvIMgDXX3DJp6cKBMbMuTsE39N4YkQgrmQB0pGiO0fWklbc3vJLejkPbwHEyv X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2019 17:25:38.6284 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3eaec758-cc4b-4dcf-76df-08d76795560d X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB2030 X-SW-Source: 2019-q4/txt/msg00005.txt.bz2 Andrea Corallo writes: > Andrea Corallo writes: > >> Andrea Corallo writes: >> >>> Hi all, >>> yesterday I've found an interesting bug in libgccjit. >>> Seems we have an hard limitation of 200 characters for literal strings. >>> Attempting to create longer strings lead to ICE during pass_expand >>> while performing a sanity check in get_constant_size. >>> >>> Tracking down the issue seems the code we have was inspired from >>> c-family/c-common.c:c_common_nodes_and_builtins were array_domain_type >>> is actually defined with a size of 200. >>> The comment that follows that point sounded premonitory :) :) >>> >>> /* Make a type for arrays of characters. >>> With luck nothing will ever really depend on the length of this >>> array type. */ >>> >>> At least in the current implementation the type is set by >>> fix_string_type were the actual string length is taken in account. >>> >>> I attach a patch updating the logic accordingly and a new testcase >>> for that. >>> >>> make check-jit is passing clean. >>> >>> Best Regards >>> Andrea >>> >>> gcc/jit/ChangeLog >>> 2019-??-?? Andrea Corallo >>> >>> * jit-playback.h >>> (gcc::jit::recording::context m_recording_ctxt): Remove >>> m_char_array_type_node field. >>> * jit-playback.c >>> (playback::context::context) Remove m_char_array_type_node from member >>> initializer list. >>> (playback::context::new_string_literal) Fix logic to handle string >>> length > 200. >>> >>> gcc/testsuite/ChangeLog >>> 2019-??-?? Andrea Corallo >>> >>> * jit.dg/all-non-failing-tests.h: Add test-long-string-literal.c. >>> * jit.dg/test-long-string-literal.c: New testcase. >>> diff --git a/gcc/jit/jit-playback.c b/gcc/jit/jit-playback.c >>> index 9eeb2a7..a26b8d3 100644 >>> --- a/gcc/jit/jit-playback.c >>> +++ b/gcc/jit/jit-playback.c >>> @@ -88,7 +88,6 @@ playback::context::context (recording::context *ctxt) >>> : log_user (ctxt->get_logger ()), >>> m_recording_ctxt (ctxt), >>> m_tempdir (NULL), >>> - m_char_array_type_node (NULL), >>> m_const_char_ptr (NULL) >>> { >>> JIT_LOG_SCOPE (get_logger ()); >>> @@ -670,9 +669,12 @@ playback::rvalue * >>> playback::context:: >>> new_string_literal (const char *value) >>> { >>> - tree t_str =3D build_string (strlen (value), value); >>> - gcc_assert (m_char_array_type_node); >>> - TREE_TYPE (t_str) =3D m_char_array_type_node; >>> + /* Compare with c-family/c-common.c: fix_string_type. */ >>> + size_t len =3D strlen (value); >>> + tree i_type =3D build_index_type (size_int (len)); >>> + tree a_type =3D build_array_type (char_type_node, i_type); >>> + tree t_str =3D build_string (len, value); >>> + TREE_TYPE (t_str) =3D a_type; >>> >>> /* Convert to (const char*), loosely based on >>> c/c-typeck.c: array_to_pointer_conversion, >>> @@ -2703,10 +2705,6 @@ playback::context:: >>> replay () >>> { >>> JIT_LOG_SCOPE (get_logger ()); >>> - /* Adapted from c-common.c:c_common_nodes_and_builtins. */ >>> - tree array_domain_type =3D build_index_type (size_int (200)); >>> - m_char_array_type_node >>> - =3D build_array_type (char_type_node, array_domain_type); >>> >>> m_const_char_ptr >>> =3D build_pointer_type (build_qualified_type (char_type_node, >>> diff --git a/gcc/jit/jit-playback.h b/gcc/jit/jit-playback.h >>> index d4b148e..801f610 100644 >>> --- a/gcc/jit/jit-playback.h >>> +++ b/gcc/jit/jit-playback.h >>> @@ -322,7 +322,6 @@ private: >>> >>> auto_vec m_functions; >>> auto_vec m_globals; >>> - tree m_char_array_type_node; >>> tree m_const_char_ptr; >>> >>> /* Source location handling. */ >>> diff --git a/gcc/testsuite/jit.dg/all-non-failing-tests.h b/gcc/testsui= te/jit.dg/all-non-failing-tests.h >>> index 0272e6f8..1b3d561 100644 >>> --- a/gcc/testsuite/jit.dg/all-non-failing-tests.h >>> +++ b/gcc/testsuite/jit.dg/all-non-failing-tests.h >>> @@ -220,6 +220,13 @@ >>> #undef create_code >>> #undef verify_code >>> >>> +/* test-long-string-literal.c */ >>> +#define create_code create_code_long_string_literal >>> +#define verify_code verify_code_long_string_literal >>> +#include "test-long-string-literal.c" >>> +#undef create_code >>> +#undef verify_code >>> + >>> /* test-sum-of-squares.c */ >>> #define create_code create_code_sum_of_squares >>> #define verify_code verify_code_sum_of_squares >>> diff --git a/gcc/testsuite/jit.dg/test-long-string-literal.c b/gcc/test= suite/jit.dg/test-long-string-literal.c >>> new file mode 100644 >>> index 0000000..882567c >>> --- /dev/null >>> +++ b/gcc/testsuite/jit.dg/test-long-string-literal.c >>> @@ -0,0 +1,48 @@ >>> +#include >>> +#include >>> +#include >>> + >>> +#include "libgccjit.h" >>> + >>> +#include "harness.h" >>> + >>> +const char very_long_string[] =3D >>> + "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca= bcabcabc" >>> + "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca= bcabcabc" >>> + "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca= bcabcabc" >>> + "abcabcabcabcabcabcabcabcabcabca"; >>> + >>> +void >>> +create_code (gcc_jit_context *ctxt, void *user_data) >>> +{ >>> + /* Build the test_fn. */ >>> + gcc_jit_function *f =3D >>> + gcc_jit_context_new_function ( >>> + ctxt, NULL, >>> + GCC_JIT_FUNCTION_EXPORTED, >>> + gcc_jit_context_get_type(ctxt, >>> + GCC_JIT_TYPE_CONST_CHAR_PTR), >>> + "test_long_string_literal", >>> + 0, NULL, 0); >>> + gcc_jit_block *blk =3D >>> + gcc_jit_function_new_block (f, "init_block"); >>> + gcc_jit_rvalue *res =3D >>> + gcc_jit_context_new_string_literal (ctxt, very_long_string); >>> + >>> + gcc_jit_block_end_with_return (blk, NULL, res); >>> +} >>> + >>> +void >>> +verify_code (gcc_jit_context *ctxt, gcc_jit_result *result) >>> +{ >>> + typedef const char *(*fn_type) (void); >>> + CHECK_NON_NULL (result); >>> + fn_type test_long_string_literal =3D >>> + (fn_type)gcc_jit_result_get_code (result, "test_long_string_litera= l"); >>> + CHECK_NON_NULL (test_long_string_literal); >>> + >>> + /* Call the JIT-generated function. */ >>> + const char *str =3D test_long_string_literal (); >>> + CHECK_NON_NULL (str); >>> + CHECK_VALUE (strcmp (str, very_long_string), 0); >>> +} >> >> Kindly pinging >> >> Bests >> Andrea > > Hi, > I'd like to ping this patch. > > Bests > Andrea Pinging again. Bests Andrea