Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp2210302pxp; Mon, 21 Mar 2022 13:59:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJylp7h17N6bH9sosULhrxSMs4KDJuqKjWB9AYcdaT303nhZwmBWI+YgKS+So2Vw9FD8J2ZG X-Received: by 2002:a17:902:f605:b0:14f:5d75:4fb0 with SMTP id n5-20020a170902f60500b0014f5d754fb0mr14535718plg.101.1647896343893; Mon, 21 Mar 2022 13:59:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647896343; cv=none; d=google.com; s=arc-20160816; b=m23N13KY9mpY6ghF3obiuQhDLoYeW/yGBWp84hpqO0x27/Wu73ZbvC2su+XjRxhrIN u5MgKGCfJ86wXwL+UlxI86dqSoGetXPoxqZgde2EQbW/tFyxaEZGhIIzimFkF0cWy8+2 yN9/VwZgaQ/c2gNfDgqMcqXyj6k64aEiVeRD87sLz1wPXnfP6SWkr+Wun9FKfL9wMeFc tPCKOmxsMiMwJcVt5dETnZ48GgzFDflnuESy7OZkrDT7fmIjxriX0saE7WQ+whBwk3rK GdscbPsCuQH+OBW1UxEUJ10cAZ5WYAYbhPT5Q/RWfMkHW4jbN+TLJFaoxYBQjs/qc/Ug JW0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=zXWKJPAUjWKS2LrdNXJ0lqZINwOM+qfTd6oyBL1c0n0=; b=SC9wJivI/hxJwccmYpGDqMluVZgt04oITEVT7WJzfWpM8AE4vH7zc4hZGF76zafNbn au9jTSl+mkRcLPkNxIQY7cGQ1I7rlcJ+dcFtjA5cav2qGVjDBJNZSiJRk1c7vCXw4ER9 jL+/gt9gJ1hawP0NXnxhcfz3HjRBFdYyrmMQ6t/zCeu9bIocVOaX4WvLErR/YPcEBOGp SSN1FjyaYll8b7VXLq5qNXmBe7xqXsz0h7pYt/3p88j9gCME98NSSJU2jywUbSbvIkuF B0eLDUygDkM16FOPYEbjxFbteZxnKGD7zzTQKUsU8R5lre35ibIMzbzkCXscDyIzlKtG cNdw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id i187-20020a62c1c4000000b004fab4be3416si1138956pfg.143.2022.03.21.13.59.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Mar 2022 13:59:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 454BA197AC6; Mon, 21 Mar 2022 13:55:40 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346834AbiCULor (ORCPT + 99 others); Mon, 21 Mar 2022 07:44:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44416 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241385AbiCULoo (ORCPT ); Mon, 21 Mar 2022 07:44:44 -0400 Received: from 1wt.eu (wtarreau.pck.nerim.net [62.212.114.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 338E21D325 for ; Mon, 21 Mar 2022 04:43:17 -0700 (PDT) Received: (from willy@localhost) by pcw.home.local (8.15.2/8.15.2/Submit) id 22LBh5Vw006242; Mon, 21 Mar 2022 12:43:05 +0100 Date: Mon, 21 Mar 2022 12:43:05 +0100 From: Willy Tarreau To: Ammar Faizi Cc: "Paul E. McKenney" , Alviro Iskandar Setiawan , Nugraha , Linux Kernel Mailing List , GNU/Weeb Mailing List Subject: Re: [RFC PATCH v1 6/6] tools/include/string: Implement `strdup()` and `strndup()` Message-ID: <20220321114305.GA6222@1wt.eu> References: <20220320093750.159991-1-ammarfaizi2@gnuweeb.org> <20220320093750.159991-7-ammarfaizi2@gnuweeb.org> <20220321075308.GD29580@1wt.eu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Mar 21, 2022 at 06:36:37PM +0700, Ammar Faizi wrote: > On 3/21/22 2:53 PM, Willy Tarreau wrote: > > Hi Ammar, > [...] > > > +static void free(void *ptr); > > > +static void *malloc(size_t len); > > > +static void *realloc(void *old_ptr, size_t new_size); > > > > Better include the required h files here. > > I can't do that, in nolibc.h, we have something like this: > > ``` > #include "stdlib.h" <--- We inlcude string.h from here > #include "string.h" <--- This is a no-op. > ``` > > Note, stdlib.h is included first before string.h, next, in stdlib.h, we > have this: > > ``` > #include "string.h" > > // malloc, calloc, free here > ``` > > If I include "stdlib.h" in "string.h", it will just be a no-op, and the > declarations will not be taken, because the declarations happen after > #include "string.h". So it doesn't work. It's somewhat circular dependency. > > stdlib.h needs string.h > string.h needs stdlib.h > > One of them must fully see the other before they can use the defined functions > in another header. OK, usual stuff indeed. > Suggestion welcome... Then just leave it as-is. > I am thinking of creating a new header just for the forward declarations > where all function declarations live there, we just split off the real > functions' body. That's why I'm doing in my projects for the exact reason above. But here we only have static functions so this will increase the burden to contribute. Better wait for the situation to reach a point where we're certain there will be some benefit in doing that. Thanks, Willy