From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by sourceware.org (Postfix) with ESMTPS id 7A96B3858C01 for ; Thu, 19 Oct 2023 17:55:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7A96B3858C01 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7A96B3858C01 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::634 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697738109; cv=none; b=AZCAmebBcqUDyp141iByAcXe4W24xtKb3BY96cFXOkuJWhycwYWf2PzNdL583cVO3CoOhUXQozELnPGfUw+r52niZzfDpzJs+x96F/RQu/pI+jB5Zri/yOkVbwWv61Yc8vQs/ycKPHzdWJolXhwShEGeq4Nu/oF4NCYmDDbxqls= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697738109; c=relaxed/simple; bh=IeOVHR/DD2oNBgEXMNQnDvWgW3swTXFK2Nm/+NQEezg=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=MVfizKIV3LsqqtbGH0c+Z+bqWByGhj93yew8xs4d/wCMhszL3r0YzoVQUwMfPg1qtImfq4cGrlw48aKu0tJJRJZeSRg8/I4tkRsOUlM5p7Kjsbwa45Sh2e2EdQ+HOzyQ29oxWr3l3sVDEBq907LzOBNGA+dTxD2+GeklgFXLWkg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-1c871a095ceso60486345ad.2 for ; Thu, 19 Oct 2023 10:55:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1697738105; x=1698342905; darn=sourceware.org; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=f2LQdeeHZE7I70cqO5htrHg4TuHvbALAOn+8NhPsQ/M=; b=v7AKOgsl7EKBbBhFeGtCsy3ubiYsbFYCb5Mq3WCtxVoRDWUyqf/Bc70RD9Xzo0tVZV LxGP2Q2NY+5He8D+euqmI0EKj3euTMw+cWoV9FJZrWGq5JBJz+0M6UGuYPvO9A3ftfR5 aYbw7aO+lVyMK4u/2QEYiSUF/4FdkKcNBPRXmSrMK035znQzMFIDLA2A1g9IOTtHYpnZ OV/h1RdfWjMKtPREMzfr7XwA/CL09mlQbw0nrd9QpdkcgGEJTEwAtaVvukKlLkSiY9mr iNuMAJQt+wL8Zi/imnTVFAhMfsI6/g4mLkCbYtCWQ88M2Q9LfUocCdK7chV0ismfFdw0 H/7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697738105; x=1698342905; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=f2LQdeeHZE7I70cqO5htrHg4TuHvbALAOn+8NhPsQ/M=; b=K6U23zAt9Z6VUROzhLyGFhsmS2AEQoYMSdkYnAILW76JE4eFE0b1izsdNIwWrU9zHs A7eSTSsPgPXzs0/ff4iVLi79LsRuHJGfj9EZ44MkilSZjrZ3mpldhJOdN791Nayc3C0d 9ghztSj+gujsQU6/luWWQQO8yTkmU4vzfFYVhbR9ZXcLSZ/HZpbFfirUjWj44cRlHHIQ pItprBz/biQQOXpcSoE3BTLbuoWtfTgYZW1o5As2kCOhYPx8dEEaCr44zuYLPJrQ0f7j aY2aLOGgmnv6ox11a7nTKHPmfXTxmP1RRKKuIm8fFgSBGHV9a/C/8P0j0+/xnz1NDTgs ptWg== X-Gm-Message-State: AOJu0Yx90RI/2h7QgU18rL/tu/fkz9wkKL3BaaATNQyrLC1bhFkW0kA7 krprDvLhDh43B3iPlMVJdtC3/sbCHTRIfdHQeATIpQ== X-Google-Smtp-Source: AGHT+IGIWMVknaERX36w3zS6T+6/iprcrbfy1Y4coUA3SaPidq1rnjYw2C+kLJcUYwsXsxCue/Lexw== X-Received: by 2002:a17:902:c7d1:b0:1c9:d143:e9e with SMTP id r17-20020a170902c7d100b001c9d1430e9emr2529033pla.18.1697738105306; Thu, 19 Oct 2023 10:55:05 -0700 (PDT) Received: from ?IPV6:2804:1b3:a7c3:a647:51c8:7d15:99b:dc36? ([2804:1b3:a7c3:a647:51c8:7d15:99b:dc36]) by smtp.gmail.com with ESMTPSA id nk19-20020a17090b195300b00268b9862343sm1859426pjb.24.2023.10.19.10.55.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 19 Oct 2023 10:55:04 -0700 (PDT) Message-ID: Date: Thu, 19 Oct 2023 14:55:01 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 03/16] Remove 'grp' and merge into 'nss' and 'posix' Content-Language: en-US To: Arjun Shankar , libc-alpha@sourceware.org References: <20231002130150.1497733-1-arjun@redhat.com> <20231002130150.1497733-4-arjun@redhat.com> From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: <20231002130150.1497733-4-arjun@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: On 02/10/23 09:55, Arjun Shankar wrote: > The majority of grp routines are entry points for nss functionality. > This commit removes the 'grp' subdirectory and moves all nss-relevant > functionality and all tests to 'nss', and the 'setgroups' stub into > 'posix' (alongside the 'getgroups' stub). References to grp/ are > accordingly changed. In addition, compat-initgroups.c, a fallback > implementation of initgroups is renamed to initgroups-fallback.c so that > the build system does not confuse it for nss_compat/compat-initgroups.c. > > Build time improves very slightly; e.g. down from an average of 45.5s to > 44.5s on an 8-thread mobile x86_64 CPU. LGTM, thanks. Reviewed-by: Adhemerval Zanella > --- > Makeconfig | 2 +- > grp/Makefile | 70 ------------------- > grp/Versions | 34 --------- > include/grp-merge.h | 2 +- > include/grp.h | 2 +- > nscd/initgrcache.c | 2 +- > nss/Makefile | 43 +++++++++++- > nss/Versions | 30 ++++++++ > {grp => nss}/fgetgrent.c | 0 > {grp => nss}/fgetgrent_r.c | 0 > {grp => nss}/getgrent.c | 0 > {grp => nss}/getgrent_r.c | 0 > {grp => nss}/getgrgid.c | 0 > {grp => nss}/getgrgid_r.c | 0 > {grp => nss}/getgrnam.c | 0 > {grp => nss}/getgrnam_r.c | 0 > {grp => nss}/grp-merge.c | 0 > {grp => nss}/grp-merge.h | 0 > {grp => nss}/grp.h | 0 > .../initgroups-fallback.c | 0 > {grp => nss}/initgroups.c | 2 +- > {grp => nss}/putgrent.c | 0 > {grp => nss}/testgrp.c | 0 > {grp => nss}/tst-initgroups1.c | 0 > {grp => nss}/tst-initgroups1.root/etc/group | 0 > .../tst-initgroups1.root/etc/nsswitch.conf | 0 > {grp => nss}/tst-initgroups1.root/etc/passwd | 0 > {grp => nss}/tst-initgroups2.c | 0 > {grp => nss}/tst-initgroups2.root/etc/group | 0 > .../tst-initgroups2.root/etc/nsswitch.conf | 0 > {grp => nss}/tst-initgroups2.root/etc/passwd | 0 > {grp => nss}/tst-putgrent.c | 0 > {grp => nss}/tst_fgetgrent.c | 0 > {grp => nss}/tst_fgetgrent.sh | 10 +-- > posix/Makefile | 1 + > posix/Versions | 2 +- > {grp => posix}/setgroups.c | 0 > scripts/update-copyrights | 2 +- > 38 files changed, 85 insertions(+), 117 deletions(-) > delete mode 100644 grp/Makefile > delete mode 100644 grp/Versions > rename {grp => nss}/fgetgrent.c (100%) > rename {grp => nss}/fgetgrent_r.c (100%) > rename {grp => nss}/getgrent.c (100%) > rename {grp => nss}/getgrent_r.c (100%) > rename {grp => nss}/getgrgid.c (100%) > rename {grp => nss}/getgrgid_r.c (100%) > rename {grp => nss}/getgrnam.c (100%) > rename {grp => nss}/getgrnam_r.c (100%) > rename {grp => nss}/grp-merge.c (100%) > rename {grp => nss}/grp-merge.h (100%) > rename {grp => nss}/grp.h (100%) > rename grp/compat-initgroups.c => nss/initgroups-fallback.c (100%) > rename {grp => nss}/initgroups.c (99%) > rename {grp => nss}/putgrent.c (100%) > rename {grp => nss}/testgrp.c (100%) > rename {grp => nss}/tst-initgroups1.c (100%) > rename {grp => nss}/tst-initgroups1.root/etc/group (100%) > rename {grp => nss}/tst-initgroups1.root/etc/nsswitch.conf (100%) > rename {grp => nss}/tst-initgroups1.root/etc/passwd (100%) > rename {grp => nss}/tst-initgroups2.c (100%) > rename {grp => nss}/tst-initgroups2.root/etc/group (100%) > rename {grp => nss}/tst-initgroups2.root/etc/nsswitch.conf (100%) > rename {grp => nss}/tst-initgroups2.root/etc/passwd (100%) > rename {grp => nss}/tst-putgrent.c (100%) > rename {grp => nss}/tst_fgetgrent.c (100%) > rename {grp => nss}/tst_fgetgrent.sh (76%) > rename {grp => posix}/setgroups.c (100%) > > diff --git a/Makeconfig b/Makeconfig > index c48fcc59e8..9ff6a902e9 100644 > --- a/Makeconfig > +++ b/Makeconfig > @@ -1352,7 +1352,7 @@ endif > # dependencies and generate sorted-subdirs dynamically. > all-subdirs = csu assert ctype locale intl catgets math setjmp signal \ > stdlib stdio-common libio malloc string wcsmbs time dirent \ > - grp pwd posix io termios resource misc socket sysvipc gmon \ > + pwd posix io termios resource misc socket sysvipc gmon \ > gnulib iconv iconvdata wctype manual shadow gshadow po argp \ > localedata timezone rt conform debug mathvec support \ > dlfcn elf > diff --git a/grp/Makefile b/grp/Makefile > deleted file mode 100644 > index 38006fb5c3..0000000000 > --- a/grp/Makefile > +++ /dev/null > @@ -1,70 +0,0 @@ > -# Copyright (C) 1991-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 > -# . > - > -# > -# Sub-makefile for grp portion of the library. > -# > -subdir := grp > - > -include ../Makeconfig > - > -headers := grp.h > - > -routines := fgetgrent initgroups setgroups \ > - getgrent getgrgid getgrnam putgrent \ > - getgrent_r getgrgid_r getgrnam_r fgetgrent_r \ > - grp-merge > - > -tests := testgrp tst-putgrent > - > -tests-container = \ > - tst-initgroups1 \ > - tst-initgroups2 > - > -ifeq (yes,$(build-shared)) > -test-srcs := tst_fgetgrent > -ifeq ($(run-built-tests),yes) > -tests-special += $(objpfx)tst_fgetgrent.out > -endif > -endif > - > - > -include ../Rules > - > -ifeq ($(have-thread-library),yes) > - > -CFLAGS-getgrgid_r.c += -fexceptions > -CFLAGS-getgrnam_r.c += -fexceptions > -CFLAGS-getgrent_r.c += -fexceptions > -CFLAGS-getgrent.c += -fexceptions > -CFLAGS-fgetgrent.c += -fexceptions > -CFLAGS-fgetgrent_r.c += -fexceptions $(libio-mtsafe) > -CFLAGS-putgrent.c += -fexceptions $(libio-mtsafe) > -CFLAGS-initgroups.c += -fexceptions > -CFLAGS-getgrgid.c += -fexceptions > - > -endif > - > -ifeq ($(run-built-tests),yes) > -# tst_fgetgrent currently only works with shared libraries > -ifeq (yes,$(build-shared)) > -$(objpfx)tst_fgetgrent.out: tst_fgetgrent.sh $(objpfx)tst_fgetgrent > - $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ > - $(evaluate-test) > - > -endif > -endif > diff --git a/grp/Versions b/grp/Versions > deleted file mode 100644 > index 096caa47c5..0000000000 > --- a/grp/Versions > +++ /dev/null > @@ -1,34 +0,0 @@ > -libc { > - GLIBC_2.0 { > - # e* > - endgrent; > - > - # f* > - fgetgrent; fgetgrent_r; > - > - # g* > - getgrent; getgrent_r; getgrgid; getgrgid_r; getgrnam; getgrnam_r; > - getgroups; > - > - # i* > - initgroups; > - > - # s* > - setgrent; setgroups; > - } > - GLIBC_2.1 { > - # p* > - putgrent; > - } > - GLIBC_2.1.2 { > - # g* > - getgrent_r; getgrgid_r; getgrnam_r; > - } > - GLIBC_2.2.4 { > - # g* > - getgrouplist; > - } > - GLIBC_PRIVATE { > - __merge_grp; __copy_grp; > - } > -} > diff --git a/include/grp-merge.h b/include/grp-merge.h > index 331ac20ea9..fc9a25df01 100644 > --- a/include/grp-merge.h > +++ b/include/grp-merge.h > @@ -1,5 +1,5 @@ > #ifndef _GRP_MERGE_H > -#include > +#include > > libc_hidden_proto (__copy_grp) > libc_hidden_proto (__merge_grp) > diff --git a/include/grp.h b/include/grp.h > index 2cd2475534..96b98a3cde 100644 > --- a/include/grp.h > +++ b/include/grp.h > @@ -1,5 +1,5 @@ > #ifndef _GRP_H > -#include > +#include > > #ifndef _ISOMAC > libc_hidden_proto (setgroups) > diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c > index be44951bd6..8d8e1c2dbf 100644 > --- a/nscd/initgrcache.c > +++ b/nscd/initgrcache.c > @@ -45,7 +45,7 @@ static const initgr_response_header notfound = > }; > > > -#include "../grp/compat-initgroups.c" > +#include "../nss/initgroups-fallback.c" > > > static time_t > diff --git a/nss/Makefile b/nss/Makefile > index 32764b74c0..baf7d9d0ab 100644 > --- a/nss/Makefile > +++ b/nss/Makefile > @@ -23,6 +23,7 @@ subdir := nss > include ../Makeconfig > > headers := \ > + grp.h \ > nss.h \ > # headers > > @@ -50,6 +51,34 @@ routines = \ > valid_list_field \ > # routines > > +# grp routines: > +routines += \ > + fgetgrent \ > + fgetgrent_r \ > + getgrent \ > + getgrent_r \ > + getgrgid \ > + getgrgid_r \ > + getgrnam \ > + getgrnam_r \ > + grp-merge \ > + initgroups \ > + putgrent \ > + # routines > + > +ifeq ($(have-thread-library),yes) > +CFLAGS-fgetgrent.c += -fexceptions > +CFLAGS-fgetgrent_r.c += -fexceptions $(libio-mtsafe) > +CFLAGS-getgrent.c += -fexceptions > +CFLAGS-getgrent_r.c += -fexceptions > +CFLAGS-getgrgid.c += -fexceptions > +CFLAGS-getgrgid_r.c += -fexceptions > +CFLAGS-getgrnam.c += -fexceptions > +CFLAGS-getgrnam_r.c += -fexceptions > +CFLAGS-initgroups.c += -fexceptions > +CFLAGS-putgrent.c += -fexceptions $(libio-mtsafe) > +endif > + > # These are the databases that go through nss dispatch. > # Caution: if you add a database here, you must add its real name > # in databases.def, too. > @@ -88,6 +117,7 @@ tests := \ > bug17079 \ > test-digits-dots \ > test-netdb \ > + testgrp \ > tst-nss-getpwent \ > tst-nss-hash \ > tst-nss-test1 \ > @@ -95,11 +125,14 @@ tests := \ > tst-nss-test4 \ > tst-nss-test5 \ > tst-nss-test_errno \ > + tst-putgrent \ > # tests > > xtests = bug-erange > > tests-container := \ > + tst-initgroups1 \ > + tst-initgroups2 \ > tst-nss-compat1 \ > tst-nss-db-endgrent \ > tst-nss-db-endpwent \ > @@ -112,13 +145,21 @@ tests-container := \ > tst-reload2 \ > # tests-container > > -# Tests which need libdl > ifeq (yes,$(build-shared)) > +# Tests which need libdl > tests += tst-nss-files-hosts-erange > tests += tst-nss-files-hosts-multi > tests += tst-nss-files-hosts-getent > tests += tst-nss-files-alias-leak > tests += tst-nss-files-alias-truncated > +# tst_fgetgrent currently only works with shared libraries > +test-srcs := tst_fgetgrent > +ifeq ($(run-built-tests),yes) > +tests-special += $(objpfx)tst_fgetgrent.out > +$(objpfx)tst_fgetgrent.out: tst_fgetgrent.sh $(objpfx)tst_fgetgrent > + $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ > + $(evaluate-test) > +endif > endif > > # If we have a thread library then we can test cancellation against > diff --git a/nss/Versions b/nss/Versions > index e551524aa9..5401829911 100644 > --- a/nss/Versions > +++ b/nss/Versions > @@ -5,10 +5,38 @@ libc { > # Functions exported as no-op compat symbols. > __nss_passwd_lookup; __nss_group_lookup; __nss_hosts_lookup; __nss_next; > __nss_database_lookup; > + > + # e* > + endgrent; > + > + # f* > + fgetgrent; fgetgrent_r; > + > + # g* > + getgrent; getgrent_r; getgrgid; getgrgid_r; getgrnam; getgrnam_r; > + getgroups; > + > + # i* > + initgroups; > + > + # s* > + setgrent; > + } > + GLIBC_2.1 { > + # p* > + putgrent; > + } > + GLIBC_2.1.2 { > + # g* > + getgrent_r; getgrgid_r; getgrnam_r; > } > GLIBC_2.2.2 { > __nss_hostname_digits_dots; > } > + GLIBC_2.2.4 { > + # g* > + getgrouplist; > + } > GLIBC_2.27 { > } > GLIBC_PRIVATE { > @@ -107,6 +135,8 @@ libc { > _nss_files_initgroups_dyn; > > _nss_files_init; > + > + __merge_grp; __copy_grp; > } > } > > diff --git a/grp/fgetgrent.c b/nss/fgetgrent.c > similarity index 100% > rename from grp/fgetgrent.c > rename to nss/fgetgrent.c > diff --git a/grp/fgetgrent_r.c b/nss/fgetgrent_r.c > similarity index 100% > rename from grp/fgetgrent_r.c > rename to nss/fgetgrent_r.c > diff --git a/grp/getgrent.c b/nss/getgrent.c > similarity index 100% > rename from grp/getgrent.c > rename to nss/getgrent.c > diff --git a/grp/getgrent_r.c b/nss/getgrent_r.c > similarity index 100% > rename from grp/getgrent_r.c > rename to nss/getgrent_r.c > diff --git a/grp/getgrgid.c b/nss/getgrgid.c > similarity index 100% > rename from grp/getgrgid.c > rename to nss/getgrgid.c > diff --git a/grp/getgrgid_r.c b/nss/getgrgid_r.c > similarity index 100% > rename from grp/getgrgid_r.c > rename to nss/getgrgid_r.c > diff --git a/grp/getgrnam.c b/nss/getgrnam.c > similarity index 100% > rename from grp/getgrnam.c > rename to nss/getgrnam.c > diff --git a/grp/getgrnam_r.c b/nss/getgrnam_r.c > similarity index 100% > rename from grp/getgrnam_r.c > rename to nss/getgrnam_r.c > diff --git a/grp/grp-merge.c b/nss/grp-merge.c > similarity index 100% > rename from grp/grp-merge.c > rename to nss/grp-merge.c > diff --git a/grp/grp-merge.h b/nss/grp-merge.h > similarity index 100% > rename from grp/grp-merge.h > rename to nss/grp-merge.h > diff --git a/grp/grp.h b/nss/grp.h > similarity index 100% > rename from grp/grp.h > rename to nss/grp.h > diff --git a/grp/compat-initgroups.c b/nss/initgroups-fallback.c > similarity index 100% > rename from grp/compat-initgroups.c > rename to nss/initgroups-fallback.c > diff --git a/grp/initgroups.c b/nss/initgroups.c > similarity index 99% > rename from grp/initgroups.c > rename to nss/initgroups.c > index 2ebd623d7b..e803cecebc 100644 > --- a/grp/initgroups.c > +++ b/nss/initgroups.c > @@ -39,7 +39,7 @@ typedef enum nss_status (*initgroups_dyn_function) (const char *, gid_t, > static bool use_initgroups_entry; > > > -#include "compat-initgroups.c" > +#include "initgroups-fallback.c" > > > static int > diff --git a/grp/putgrent.c b/nss/putgrent.c > similarity index 100% > rename from grp/putgrent.c > rename to nss/putgrent.c > diff --git a/grp/testgrp.c b/nss/testgrp.c > similarity index 100% > rename from grp/testgrp.c > rename to nss/testgrp.c > diff --git a/grp/tst-initgroups1.c b/nss/tst-initgroups1.c > similarity index 100% > rename from grp/tst-initgroups1.c > rename to nss/tst-initgroups1.c > diff --git a/grp/tst-initgroups1.root/etc/group b/nss/tst-initgroups1.root/etc/group > similarity index 100% > rename from grp/tst-initgroups1.root/etc/group > rename to nss/tst-initgroups1.root/etc/group > diff --git a/grp/tst-initgroups1.root/etc/nsswitch.conf b/nss/tst-initgroups1.root/etc/nsswitch.conf > similarity index 100% > rename from grp/tst-initgroups1.root/etc/nsswitch.conf > rename to nss/tst-initgroups1.root/etc/nsswitch.conf > diff --git a/grp/tst-initgroups1.root/etc/passwd b/nss/tst-initgroups1.root/etc/passwd > similarity index 100% > rename from grp/tst-initgroups1.root/etc/passwd > rename to nss/tst-initgroups1.root/etc/passwd > diff --git a/grp/tst-initgroups2.c b/nss/tst-initgroups2.c > similarity index 100% > rename from grp/tst-initgroups2.c > rename to nss/tst-initgroups2.c > diff --git a/grp/tst-initgroups2.root/etc/group b/nss/tst-initgroups2.root/etc/group > similarity index 100% > rename from grp/tst-initgroups2.root/etc/group > rename to nss/tst-initgroups2.root/etc/group > diff --git a/grp/tst-initgroups2.root/etc/nsswitch.conf b/nss/tst-initgroups2.root/etc/nsswitch.conf > similarity index 100% > rename from grp/tst-initgroups2.root/etc/nsswitch.conf > rename to nss/tst-initgroups2.root/etc/nsswitch.conf > diff --git a/grp/tst-initgroups2.root/etc/passwd b/nss/tst-initgroups2.root/etc/passwd > similarity index 100% > rename from grp/tst-initgroups2.root/etc/passwd > rename to nss/tst-initgroups2.root/etc/passwd > diff --git a/grp/tst-putgrent.c b/nss/tst-putgrent.c > similarity index 100% > rename from grp/tst-putgrent.c > rename to nss/tst-putgrent.c > diff --git a/grp/tst_fgetgrent.c b/nss/tst_fgetgrent.c > similarity index 100% > rename from grp/tst_fgetgrent.c > rename to nss/tst_fgetgrent.c > diff --git a/grp/tst_fgetgrent.sh b/nss/tst_fgetgrent.sh > similarity index 76% > rename from grp/tst_fgetgrent.sh > rename to nss/tst_fgetgrent.sh > index 1775a6bc61..fb6b0c4179 100644 > --- a/grp/tst_fgetgrent.sh > +++ b/nss/tst_fgetgrent.sh > @@ -21,20 +21,20 @@ set -e > common_objpfx=$1; shift > test_program_prefix=$1; shift > > -testout=${common_objpfx}/grp/tst_fgetgrent.out > +testout=${common_objpfx}/nss/tst_fgetgrent.out > > result=0 > > ${test_program_prefix} \ > -${common_objpfx}grp/tst_fgetgrent 0 > ${testout} || result=1 > +${common_objpfx}nss/tst_fgetgrent 0 > ${testout} || result=1 > > ${test_program_prefix} \ > -${common_objpfx}grp/tst_fgetgrent 1 >> ${testout} || result=1 > +${common_objpfx}nss/tst_fgetgrent 1 >> ${testout} || result=1 > > ${test_program_prefix} \ > -${common_objpfx}grp/tst_fgetgrent 2 >> ${testout} || result=1 > +${common_objpfx}nss/tst_fgetgrent 2 >> ${testout} || result=1 > > ${test_program_prefix} \ > -${common_objpfx}grp/tst_fgetgrent 3 >> ${testout} || result=1 > +${common_objpfx}nss/tst_fgetgrent 3 >> ${testout} || result=1 > > exit $result > diff --git a/posix/Makefile b/posix/Makefile > index c36b9d981e..be7d319394 100644 > --- a/posix/Makefile > +++ b/posix/Makefile > @@ -137,6 +137,7 @@ routines := \ > sched_sets \ > sched_yield \ > setgid \ > + setgroups \ > setpgid \ > setpgrp \ > setresgid \ > diff --git a/posix/Versions b/posix/Versions > index 3753810864..2eedbc3e79 100644 > --- a/posix/Versions > +++ b/posix/Versions > @@ -53,7 +53,7 @@ libc { > sched_get_priority_max; sched_get_priority_min; sched_getparam; > sched_getscheduler; sched_rr_get_interval; sched_setparam; > sched_setscheduler; sched_yield; setegid; seteuid; setgid; > - setpgid; setpgrp; setsid; setuid; sleep; sysconf; > + setgroups; setpgid; setpgrp; setsid; setuid; sleep; sysconf; > > # t* > times; > diff --git a/grp/setgroups.c b/posix/setgroups.c > similarity index 100% > rename from grp/setgroups.c > rename to posix/setgroups.c > diff --git a/scripts/update-copyrights b/scripts/update-copyrights > index f6ef6fa33b..a582fa1476 100755 > --- a/scripts/update-copyrights > +++ b/scripts/update-copyrights > @@ -65,7 +65,7 @@ for f in $files; do > "$update_script" "$f" > fi > ;; > - grp/initgroups.c | misc/bits/stab.def | posix/regex.h \ > + nss/initgroups.c | misc/bits/stab.def | posix/regex.h \ > | sysdeps/wordsize-32/divdi3.c) > # Pre-1991 gaps in copyright years, so cannot use a single range. > UPDATE_COPYRIGHT_USE_INTERVALS=1 "$update_script" "$f"