mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Remove 'grp' and merge into 'nss' and 'posix'
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. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
83d13972f2
commit
b121fdc552
@ -1352,7 +1352,7 @@ endif
|
|||||||
# dependencies and generate sorted-subdirs dynamically.
|
# dependencies and generate sorted-subdirs dynamically.
|
||||||
all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
|
all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
|
||||||
stdlib stdio-common libio malloc string wcsmbs time dirent \
|
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 \
|
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
|
||||||
localedata timezone rt conform debug mathvec support \
|
localedata timezone rt conform debug mathvec support \
|
||||||
dlfcn elf
|
dlfcn elf
|
||||||
|
70
grp/Makefile
70
grp/Makefile
@ -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
|
|
||||||
# <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
#
|
|
||||||
# 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
|
|
34
grp/Versions
34
grp/Versions
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _GRP_MERGE_H
|
#ifndef _GRP_MERGE_H
|
||||||
#include <grp/grp-merge.h>
|
#include <nss/grp-merge.h>
|
||||||
|
|
||||||
libc_hidden_proto (__copy_grp)
|
libc_hidden_proto (__copy_grp)
|
||||||
libc_hidden_proto (__merge_grp)
|
libc_hidden_proto (__merge_grp)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#ifndef _GRP_H
|
#ifndef _GRP_H
|
||||||
#include <grp/grp.h>
|
#include <nss/grp.h>
|
||||||
|
|
||||||
#ifndef _ISOMAC
|
#ifndef _ISOMAC
|
||||||
libc_hidden_proto (setgroups)
|
libc_hidden_proto (setgroups)
|
||||||
|
@ -45,7 +45,7 @@ static const initgr_response_header notfound =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#include "../grp/compat-initgroups.c"
|
#include "../nss/initgroups-fallback.c"
|
||||||
|
|
||||||
|
|
||||||
static time_t
|
static time_t
|
||||||
|
43
nss/Makefile
43
nss/Makefile
@ -23,6 +23,7 @@ subdir := nss
|
|||||||
include ../Makeconfig
|
include ../Makeconfig
|
||||||
|
|
||||||
headers := \
|
headers := \
|
||||||
|
grp.h \
|
||||||
nss.h \
|
nss.h \
|
||||||
# headers
|
# headers
|
||||||
|
|
||||||
@ -50,6 +51,34 @@ routines = \
|
|||||||
valid_list_field \
|
valid_list_field \
|
||||||
# routines
|
# 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.
|
# These are the databases that go through nss dispatch.
|
||||||
# Caution: if you add a database here, you must add its real name
|
# Caution: if you add a database here, you must add its real name
|
||||||
# in databases.def, too.
|
# in databases.def, too.
|
||||||
@ -88,6 +117,7 @@ tests := \
|
|||||||
bug17079 \
|
bug17079 \
|
||||||
test-digits-dots \
|
test-digits-dots \
|
||||||
test-netdb \
|
test-netdb \
|
||||||
|
testgrp \
|
||||||
tst-nss-getpwent \
|
tst-nss-getpwent \
|
||||||
tst-nss-hash \
|
tst-nss-hash \
|
||||||
tst-nss-test1 \
|
tst-nss-test1 \
|
||||||
@ -95,11 +125,14 @@ tests := \
|
|||||||
tst-nss-test4 \
|
tst-nss-test4 \
|
||||||
tst-nss-test5 \
|
tst-nss-test5 \
|
||||||
tst-nss-test_errno \
|
tst-nss-test_errno \
|
||||||
|
tst-putgrent \
|
||||||
# tests
|
# tests
|
||||||
|
|
||||||
xtests = bug-erange
|
xtests = bug-erange
|
||||||
|
|
||||||
tests-container := \
|
tests-container := \
|
||||||
|
tst-initgroups1 \
|
||||||
|
tst-initgroups2 \
|
||||||
tst-nss-compat1 \
|
tst-nss-compat1 \
|
||||||
tst-nss-db-endgrent \
|
tst-nss-db-endgrent \
|
||||||
tst-nss-db-endpwent \
|
tst-nss-db-endpwent \
|
||||||
@ -112,13 +145,21 @@ tests-container := \
|
|||||||
tst-reload2 \
|
tst-reload2 \
|
||||||
# tests-container
|
# tests-container
|
||||||
|
|
||||||
# Tests which need libdl
|
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
|
# Tests which need libdl
|
||||||
tests += tst-nss-files-hosts-erange
|
tests += tst-nss-files-hosts-erange
|
||||||
tests += tst-nss-files-hosts-multi
|
tests += tst-nss-files-hosts-multi
|
||||||
tests += tst-nss-files-hosts-getent
|
tests += tst-nss-files-hosts-getent
|
||||||
tests += tst-nss-files-alias-leak
|
tests += tst-nss-files-alias-leak
|
||||||
tests += tst-nss-files-alias-truncated
|
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
|
endif
|
||||||
|
|
||||||
# If we have a thread library then we can test cancellation against
|
# If we have a thread library then we can test cancellation against
|
||||||
|
30
nss/Versions
30
nss/Versions
@ -5,10 +5,38 @@ libc {
|
|||||||
# Functions exported as no-op compat symbols.
|
# Functions exported as no-op compat symbols.
|
||||||
__nss_passwd_lookup; __nss_group_lookup; __nss_hosts_lookup; __nss_next;
|
__nss_passwd_lookup; __nss_group_lookup; __nss_hosts_lookup; __nss_next;
|
||||||
__nss_database_lookup;
|
__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 {
|
GLIBC_2.2.2 {
|
||||||
__nss_hostname_digits_dots;
|
__nss_hostname_digits_dots;
|
||||||
}
|
}
|
||||||
|
GLIBC_2.2.4 {
|
||||||
|
# g*
|
||||||
|
getgrouplist;
|
||||||
|
}
|
||||||
GLIBC_2.27 {
|
GLIBC_2.27 {
|
||||||
}
|
}
|
||||||
GLIBC_PRIVATE {
|
GLIBC_PRIVATE {
|
||||||
@ -107,6 +135,8 @@ libc {
|
|||||||
_nss_files_initgroups_dyn;
|
_nss_files_initgroups_dyn;
|
||||||
|
|
||||||
_nss_files_init;
|
_nss_files_init;
|
||||||
|
|
||||||
|
__merge_grp; __copy_grp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ typedef enum nss_status (*initgroups_dyn_function) (const char *, gid_t,
|
|||||||
static bool use_initgroups_entry;
|
static bool use_initgroups_entry;
|
||||||
|
|
||||||
|
|
||||||
#include "compat-initgroups.c"
|
#include "initgroups-fallback.c"
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
@ -21,20 +21,20 @@ set -e
|
|||||||
common_objpfx=$1; shift
|
common_objpfx=$1; shift
|
||||||
test_program_prefix=$1; shift
|
test_program_prefix=$1; shift
|
||||||
|
|
||||||
testout=${common_objpfx}/grp/tst_fgetgrent.out
|
testout=${common_objpfx}/nss/tst_fgetgrent.out
|
||||||
|
|
||||||
result=0
|
result=0
|
||||||
|
|
||||||
${test_program_prefix} \
|
${test_program_prefix} \
|
||||||
${common_objpfx}grp/tst_fgetgrent 0 > ${testout} || result=1
|
${common_objpfx}nss/tst_fgetgrent 0 > ${testout} || result=1
|
||||||
|
|
||||||
${test_program_prefix} \
|
${test_program_prefix} \
|
||||||
${common_objpfx}grp/tst_fgetgrent 1 >> ${testout} || result=1
|
${common_objpfx}nss/tst_fgetgrent 1 >> ${testout} || result=1
|
||||||
|
|
||||||
${test_program_prefix} \
|
${test_program_prefix} \
|
||||||
${common_objpfx}grp/tst_fgetgrent 2 >> ${testout} || result=1
|
${common_objpfx}nss/tst_fgetgrent 2 >> ${testout} || result=1
|
||||||
|
|
||||||
${test_program_prefix} \
|
${test_program_prefix} \
|
||||||
${common_objpfx}grp/tst_fgetgrent 3 >> ${testout} || result=1
|
${common_objpfx}nss/tst_fgetgrent 3 >> ${testout} || result=1
|
||||||
|
|
||||||
exit $result
|
exit $result
|
@ -137,6 +137,7 @@ routines := \
|
|||||||
sched_sets \
|
sched_sets \
|
||||||
sched_yield \
|
sched_yield \
|
||||||
setgid \
|
setgid \
|
||||||
|
setgroups \
|
||||||
setpgid \
|
setpgid \
|
||||||
setpgrp \
|
setpgrp \
|
||||||
setresgid \
|
setresgid \
|
||||||
|
@ -53,7 +53,7 @@ libc {
|
|||||||
sched_get_priority_max; sched_get_priority_min; sched_getparam;
|
sched_get_priority_max; sched_get_priority_min; sched_getparam;
|
||||||
sched_getscheduler; sched_rr_get_interval; sched_setparam;
|
sched_getscheduler; sched_rr_get_interval; sched_setparam;
|
||||||
sched_setscheduler; sched_yield; setegid; seteuid; setgid;
|
sched_setscheduler; sched_yield; setegid; seteuid; setgid;
|
||||||
setpgid; setpgrp; setsid; setuid; sleep; sysconf;
|
setgroups; setpgid; setpgrp; setsid; setuid; sleep; sysconf;
|
||||||
|
|
||||||
# t*
|
# t*
|
||||||
times;
|
times;
|
||||||
|
@ -65,7 +65,7 @@ for f in $files; do
|
|||||||
"$update_script" "$f"
|
"$update_script" "$f"
|
||||||
fi
|
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)
|
| sysdeps/wordsize-32/divdi3.c)
|
||||||
# Pre-1991 gaps in copyright years, so cannot use a single range.
|
# Pre-1991 gaps in copyright years, so cannot use a single range.
|
||||||
UPDATE_COPYRIGHT_USE_INTERVALS=1 "$update_script" "$f"
|
UPDATE_COPYRIGHT_USE_INTERVALS=1 "$update_script" "$f"
|
||||||
|
Loading…
Reference in New Issue
Block a user