From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 97A1B3858C50 for ; Mon, 1 May 2023 00:12:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 97A1B3858C50 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gnu.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gnu.org Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ptHA0-0003Cv-4t; Sun, 30 Apr 2023 20:12:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=In-Reply-To:MIME-Version:References:Subject:To:From: Date; bh=KcuuiB6A0MNqQxJ01sUs6MDP2Aad4xxINyYOWVhfhWc=; b=kwTK3xC9tZaAy+Fler0z T25IcDuLrHvjhUDTlXnzu6/diSABw6ThDxJ3fJIbcBWOFrz2o1qLgR82eFf26BfBBhIsYrwXkJazT HXwUnVG4PQh4mv8EVKnmYNJpxFV0B0+oMeQuqpuLKwE8cUSGnSbzHKd3oZx9IApJnGZeKapZeDnpt 6IwbSJmGK7keLMLoEnY9tjDt0iVp0jxV+iqitQFcsov/SOGR/KKBw1qUfDy1I3s4s0RFTOCWA5yTG aSVgSzH5xJ+CCJQOXDqkZ1zxsU31p9sxk562N19PorxXCIXyfEcW2CFeY1kJFKIGZgw0EuL0Eo9i4 Yo6olJacLcnE9g==; Received: from [2a01:cb19:4a:a400:de41:a9ff:fe47:ec49] (helo=begin) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ptH9z-0003aW-AF; Sun, 30 Apr 2023 20:12:55 -0400 Received: from samy by begin with local (Exim 4.96) (envelope-from ) id 1ptH9x-00EmUk-0j; Mon, 01 May 2023 02:12:53 +0200 Date: Mon, 1 May 2023 02:12:53 +0200 From: Samuel Thibault To: Flavio Cruz Cc: bug-hurd@gnu.org, libc-alpha@sourceware.org Subject: Re: [PATCH glibc] Define __mig_strlen to support dynamically sized strings in hurd RPCs Message-ID: <20230501001253.g2gcs3k4icsikj27@begin> Mail-Followup-To: Flavio Cruz , bug-hurd@gnu.org, libc-alpha@sourceware.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Organization: I am not organized User-Agent: NeoMutt/20170609 (1.8.3) X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK 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: Applied, thanks! Flavio Cruz via Libc-alpha, le dim. 30 avril 2023 20:09:49 -0400, a ecrit: > We make lib{mach,hurd}user.so only call __mig_strlen which can be > relocated before libc.so is relocated, similar to what is done with > __mig_memcpy. > --- > mach/Makefile | 2 +- > mach/Versions | 1 + > mach/mach/mig_support.h | 1 + > mach/mig_strlen.c | 26 +++++++++++++++++++++++++ > sysdeps/mach/include/mach/mig_support.h | 3 ++- > 5 files changed, 31 insertions(+), 2 deletions(-) > create mode 100644 mach/mig_strlen.c > > diff --git a/mach/Makefile b/mach/Makefile > index 39358fdb83..a5d1252f95 100644 > --- a/mach/Makefile > +++ b/mach/Makefile > @@ -25,7 +25,7 @@ headers = mach_init.h mach.h mach_error.h mach-shortcuts.h mach/mach_traps.h \ > lock = spin-solid spin-lock mutex-init mutex-solid > lock-headers = lock-intern.h spin-lock.h > routines = $(mach-syscalls) $(mach-shortcuts) \ > - mach_init mig_strncpy mig_memcpy msg \ > + mach_init mig_strncpy mig_strlen mig_memcpy msg \ > mig-alloc mig-dealloc mig-reply \ > msg-destroy msgserver \ > mach_error errstring error_compat errsystems \ > diff --git a/mach/Versions b/mach/Versions > index b525cfdcf9..72e9d557db 100644 > --- a/mach/Versions > +++ b/mach/Versions > @@ -71,5 +71,6 @@ libc { > GLIBC_PRIVATE { > # functions used by RPC stubs > __mig_memcpy; > + __mig_strlen; > } > } > diff --git a/mach/mach/mig_support.h b/mach/mach/mig_support.h > index 78d4c4f0e3..c43fa953f8 100644 > --- a/mach/mach/mig_support.h > +++ b/mach/mach/mig_support.h > @@ -55,5 +55,6 @@ extern vm_size_t mig_strncpy (char *__dst, const char *__src, vm_size_t __len); > extern vm_size_t __mig_strncpy (char *__dst, const char *__src, vm_size_t); > > extern void *__mig_memcpy (void *__dst, const void *__src, vm_size_t __len); > +extern vm_size_t __mig_strlen (const char *__src); > > #endif /* mach/mig_support.h */ > diff --git a/mach/mig_strlen.c b/mach/mig_strlen.c > new file mode 100644 > index 0000000000..3c5ef8db15 > --- /dev/null > +++ b/mach/mig_strlen.c > @@ -0,0 +1,26 @@ > +/* strlen stub for mig stubs in libmachuser and libhurduser. > + Copyright (C) 2023 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + . */ > + > +#include > +#include > + > +vm_size_t > +__mig_strlen (const char *src) > +{ > + return strlen (src); > +} > diff --git a/sysdeps/mach/include/mach/mig_support.h b/sysdeps/mach/include/mach/mig_support.h > index 1888d481d2..242f310a9c 100644 > --- a/sysdeps/mach/include/mach/mig_support.h > +++ b/sysdeps/mach/include/mach/mig_support.h > @@ -9,10 +9,11 @@ libc_hidden_proto (__mig_init) > # include > > # if defined USE_MULTIARCH && (IS_IN (libmachuser) || IS_IN (libhurduser)) > -/* Avoid directly calling ifunc-enabled memcpy or strpcpy, > +/* Avoid directly calling ifunc-enabled memcpy or strlen, > because they would introduce a relocation loop between lib*user and > libc.so. */ > # define memcpy(dest, src, n) __mig_memcpy(dest, src, n) > +# define strlen(src) __mig_strlen(src) > # endif > #endif > > -- > 2.39.2 > -- Samuel --- Pour une évaluation indépendante, transparente et rigoureuse ! Je soutiens la Commission d'Évaluation de l'Inria.