linux: Set default kernel_stat.h to LFS

The XSTAT_IS_XSTAT64 and STAT_IS_KERNEL_STAT flags are now set to 1 and
STATFS_IS_STATFS64 is set to __STATFS_MATCHES_STATFS64.  This makes the
default ABI for newer ports to provide only LFS calls.

A copy of non-LFS support is provided to 32-bit ABIS with non-LFS
support (arm, csky, i386, m68k, nios2, s390, and sh).  Is also allows
to remove the 64-bit ports, which already uses the default values.

This patch does not change the code generation.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
Adhemerval Zanella 2021-02-05 16:36:30 +00:00
parent 4b221ec9ee
commit 36260d5035
15 changed files with 231 additions and 200 deletions

View File

@ -1,27 +0,0 @@
/* Copyright (C) 2020-2021 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/>. */
#include <bits/wordsize.h>
/* Needed to elide the itemized copy code in common xstatconv.c. */
#define STAT_IS_KERNEL_STAT 1
#define STAT64_IS_KERNEL_STAT64 1
/* Nice side-effect of 64-bit time_t switch is these are same. */
#define XSTAT_IS_XSTAT64 1
#define STATFS_IS_STATFS64 0

View File

@ -0,0 +1,40 @@
/* Definition of `struct stat' used in the kernel.. */
struct kernel_stat
{
unsigned short int st_dev;
unsigned short int __pad1;
#define _HAVE___PAD1
unsigned long int st_ino;
unsigned short int st_mode;
unsigned short int st_nlink;
unsigned short int st_uid;
unsigned short int st_gid;
unsigned short int st_rdev;
unsigned short int __pad2;
#define _HAVE___PAD2
unsigned long int st_size;
unsigned long int st_blksize;
unsigned long int st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
unsigned long int __glibc_reserved4;
#define _HAVE___UNUSED4
unsigned long int __glibc_reserved5;
#define _HAVE___UNUSED5
};
#define _HAVE_STAT___UNUSED4
#define _HAVE_STAT___UNUSED5
#define _HAVE_STAT___PAD1
#define _HAVE_STAT___PAD2
#define _HAVE_STAT_NSEC
#define _HAVE_STAT64___PAD1
#define _HAVE_STAT64___PAD2
#define _HAVE_STAT64___ST_INO
#define _HAVE_STAT64_NSEC
#define STAT_IS_KERNEL_STAT 0
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 0
#define STATFS_IS_STATFS64 0

View File

@ -1,4 +1,5 @@
/* Copyright (C) 2020-2021 Free Software Foundation, Inc.
/* Internal definitions for stat functions. Linux/csky.
Copyright (C) 2011-2021 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
@ -15,9 +16,6 @@
License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#include <bits/wordsize.h>
#define STAT_IS_KERNEL_STAT 1
#define XSTAT_IS_XSTAT64 1
#define STATFS_IS_STATFS64 1
#define STAT_IS_KERNEL_STAT 1
#define XSTAT_IS_XSTAT64 0
#define STATFS_IS_STATFS64 0

View File

@ -1,30 +0,0 @@
/* Copyright (C) 2011-2021 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
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/>. */
#include <bits/wordsize.h>
#define STAT_IS_KERNEL_STAT 1
/* We provide separate 32-bit API versions that check for EOVERFLOW. */
#if __WORDSIZE == 64
# define XSTAT_IS_XSTAT64 1
#else
# define XSTAT_IS_XSTAT64 0
#endif
#define STATFS_IS_STATFS64 0

View File

@ -0,0 +1,40 @@
/* Definition of `struct stat' used in the kernel.. */
struct kernel_stat
{
unsigned short int st_dev;
unsigned short int __pad1;
#define _HAVE___PAD1
unsigned long int st_ino;
unsigned short int st_mode;
unsigned short int st_nlink;
unsigned short int st_uid;
unsigned short int st_gid;
unsigned short int st_rdev;
unsigned short int __pad2;
#define _HAVE___PAD2
unsigned long int st_size;
unsigned long int st_blksize;
unsigned long int st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
unsigned long int __glibc_reserved4;
#define _HAVE___UNUSED4
unsigned long int __glibc_reserved5;
#define _HAVE___UNUSED5
};
#define _HAVE_STAT___UNUSED4
#define _HAVE_STAT___UNUSED5
#define _HAVE_STAT___PAD1
#define _HAVE_STAT___PAD2
#define _HAVE_STAT_NSEC
#define _HAVE_STAT64___PAD1
#define _HAVE_STAT64___PAD2
#define _HAVE_STAT64___ST_INO
#define _HAVE_STAT64_NSEC
#define STAT_IS_KERNEL_STAT 0
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 0
#define STATFS_IS_STATFS64 0

View File

@ -1,22 +0,0 @@
/* Definition of `struct stat' used in the kernel.
Copyright (C) 2003-2021 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/>. */
#define STAT_IS_KERNEL_STAT 1
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 1
#define STATFS_IS_STATFS64 1

View File

@ -1,40 +1,22 @@
/* Definition of `struct stat' used in the kernel.. */
struct kernel_stat
{
unsigned short int st_dev;
unsigned short int __pad1;
#define _HAVE___PAD1
unsigned long int st_ino;
unsigned short int st_mode;
unsigned short int st_nlink;
unsigned short int st_uid;
unsigned short int st_gid;
unsigned short int st_rdev;
unsigned short int __pad2;
#define _HAVE___PAD2
unsigned long int st_size;
unsigned long int st_blksize;
unsigned long int st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
unsigned long int __glibc_reserved4;
#define _HAVE___UNUSED4
unsigned long int __glibc_reserved5;
#define _HAVE___UNUSED5
};
/* Internal definitions for stat functions.
Copyright (C) 2021 Free Software Foundation, Inc.
This file is part of the GNU C Library.
#define _HAVE_STAT___UNUSED4
#define _HAVE_STAT___UNUSED5
#define _HAVE_STAT___PAD1
#define _HAVE_STAT___PAD2
#define _HAVE_STAT_NSEC
#define _HAVE_STAT64___PAD1
#define _HAVE_STAT64___PAD2
#define _HAVE_STAT64___ST_INO
#define _HAVE_STAT64_NSEC
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.
#define STAT_IS_KERNEL_STAT 0
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 0
#define STATFS_IS_STATFS64 0
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/>. */
/* The default Linux ABI assumes only LFS support. */
#define XSTAT_IS_XSTAT64 1
#define STATFS_IS_STATFS64 __STATFS_MATCHES_STATFS64
#define STAT_IS_KERNEL_STAT 1

View File

@ -0,0 +1,40 @@
/* Definition of `struct stat' used in the kernel.. */
struct kernel_stat
{
unsigned short int st_dev;
unsigned short int __pad1;
#define _HAVE___PAD1
unsigned long int st_ino;
unsigned short int st_mode;
unsigned short int st_nlink;
unsigned short int st_uid;
unsigned short int st_gid;
unsigned short int st_rdev;
unsigned short int __pad2;
#define _HAVE___PAD2
unsigned long int st_size;
unsigned long int st_blksize;
unsigned long int st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
unsigned long int __glibc_reserved4;
#define _HAVE___UNUSED4
unsigned long int __glibc_reserved5;
#define _HAVE___UNUSED5
};
#define _HAVE_STAT___UNUSED4
#define _HAVE_STAT___UNUSED5
#define _HAVE_STAT___PAD1
#define _HAVE_STAT___PAD2
#define _HAVE_STAT_NSEC
#define _HAVE_STAT64___PAD1
#define _HAVE_STAT64___PAD2
#define _HAVE_STAT64___ST_INO
#define _HAVE_STAT64_NSEC
#define STAT_IS_KERNEL_STAT 0
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 0
#define STATFS_IS_STATFS64 0

View File

@ -1,6 +1,7 @@
/* Internal definitions for stat functions. Linux/AARch64 version.
/* Internal definitions for stat functions. Linux/nios2.
Copyright (C) 2021 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
@ -16,6 +17,6 @@
License along with the GNU C Library. If not, see
<https://www.gnu.org/licenses/>. */
#define STAT_IS_KERNEL_STAT 1
#define XSTAT_IS_XSTAT64 1
#define STATFS_IS_STATFS64 1
#define STAT_IS_KERNEL_STAT 1
#define XSTAT_IS_XSTAT64 0
#define STATFS_IS_STATFS64 0

View File

@ -1,22 +0,0 @@
/* Definition of `struct stat' used in the kernel.
Copyright (C) 2002-2021 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/>. */
#define STAT_IS_KERNEL_STAT 1
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 1
#define STATFS_IS_STATFS64 1

View File

@ -0,0 +1,40 @@
/* Definition of `struct stat' used in the kernel.. */
struct kernel_stat
{
unsigned short int st_dev;
unsigned short int __pad1;
#define _HAVE___PAD1
unsigned long int st_ino;
unsigned short int st_mode;
unsigned short int st_nlink;
unsigned short int st_uid;
unsigned short int st_gid;
unsigned short int st_rdev;
unsigned short int __pad2;
#define _HAVE___PAD2
unsigned long int st_size;
unsigned long int st_blksize;
unsigned long int st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
unsigned long int __glibc_reserved4;
#define _HAVE___UNUSED4
unsigned long int __glibc_reserved5;
#define _HAVE___UNUSED5
};
#define _HAVE_STAT___UNUSED4
#define _HAVE_STAT___UNUSED5
#define _HAVE_STAT___PAD1
#define _HAVE_STAT___PAD2
#define _HAVE_STAT_NSEC
#define _HAVE_STAT64___PAD1
#define _HAVE_STAT64___PAD2
#define _HAVE_STAT64___ST_INO
#define _HAVE_STAT64_NSEC
#define STAT_IS_KERNEL_STAT 0
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 0
#define STATFS_IS_STATFS64 0

View File

@ -1,22 +0,0 @@
/* Definition of `struct stat' used in the kernel.
Copyright (C) 2003-2021 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/>. */
#define STAT_IS_KERNEL_STAT 1
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 1
#define STATFS_IS_STATFS64 1

View File

@ -0,0 +1,40 @@
/* Definition of `struct stat' used in the kernel.. */
struct kernel_stat
{
unsigned short int st_dev;
unsigned short int __pad1;
#define _HAVE___PAD1
unsigned long int st_ino;
unsigned short int st_mode;
unsigned short int st_nlink;
unsigned short int st_uid;
unsigned short int st_gid;
unsigned short int st_rdev;
unsigned short int __pad2;
#define _HAVE___PAD2
unsigned long int st_size;
unsigned long int st_blksize;
unsigned long int st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
unsigned long int __glibc_reserved4;
#define _HAVE___UNUSED4
unsigned long int __glibc_reserved5;
#define _HAVE___UNUSED5
};
#define _HAVE_STAT___UNUSED4
#define _HAVE_STAT___UNUSED5
#define _HAVE_STAT___PAD1
#define _HAVE_STAT___PAD2
#define _HAVE_STAT_NSEC
#define _HAVE_STAT64___PAD1
#define _HAVE_STAT64___PAD2
#define _HAVE_STAT64___ST_INO
#define _HAVE_STAT64_NSEC
#define STAT_IS_KERNEL_STAT 0
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 0
#define STATFS_IS_STATFS64 0

View File

@ -1,22 +0,0 @@
/* Definition of `struct stat' used in the kernel.
Copyright (C) 2003-2021 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/>. */
#define STAT_IS_KERNEL_STAT 1
#define STAT64_IS_KERNEL_STAT64 1
#define XSTAT_IS_XSTAT64 1
#define STATFS_IS_STATFS64 1

View File

@ -21,12 +21,7 @@
#include <kernel_stat.h>
#include <sysdep.h>
#if STAT_IS_KERNEL_STAT
/* Dummy. */
struct kernel_stat;
#else
#if !STAT_IS_KERNEL_STAT
#include <string.h>