mbox series

[00/10,f] stat[fs,vfs] consolidation

Message ID 20210208214936.1502047-1-adhemerval.zanella@linaro.org
Headers show
Series stat[fs,vfs] consolidation | expand

Message

Adhemerval Zanella Feb. 8, 2021, 9:49 p.m. UTC
The recent thread from OpenRISC work [1] showed that even through after
the stat refactor to add y2038 support, the default internals still do
not set a saner default ABI.

The 'generic' internal interface still assumes non-LFS support calls
and sets both the kernel_stat.h and the statfs.h with this assumption.
This is misleading and requires newer ports to override both definitions
(as done by arc and riscv32).

This a refactor set I intended to push and the idea is to make LFS only
support as default.  It requires to set XSTAT_IS_XSTAT64 to 1 and
STATFS_IS_STATFS64 to __STATFS_MATCHES_STATFS64 (the STAT_IS_KERNEL_STAT
is not really required for newer ports, only for older ones with
non-LFS ABI).

It allows to consolide the [f]stat[fs,vfs] using the same strategy done
for stat functions, with alpha being the only outlier (and the hackery
required to support moved to an alpha specific implementation).

The final patch also removes a recent addition to the 'generic' folder
(stat-check.c).  My longer plan is to remove the 'generic' folder
altogether, by consolidating the implementations, moving the outliers
to arch-specific implementations, and setting a more saner default abi
(that assumes LFS and 64-bit time).

[1] https://sourceware.org/pipermail/libc-alpha/2021-January/122167.html

Adhemerval Zanella (10):
  linux: Fix STATFS_IS_STATFS64 definition
  linux: Set default kernel_stat.h to LFS
  linux: Set LFS statfs as default
  linux: Consolidate fstatfs implementations
  linux: Consolidate statfs implementations
  linux: Consolidate fstatvfs implementations
  linux: Consolidate statvfs implementations
  linux: Consolidate internal_statvfs
  linux: Remove overflow.h
  linux: Remove stat-check.c

 include/sys/statfs.h                          |  7 +-
 include/sys/statvfs.h                         |  3 +-
 sysdeps/unix/sysv/linux/Makefile              |  2 +-
 .../{generic/wordsize-32 => alpha}/fstatfs.c  | 13 +---
 sysdeps/unix/sysv/linux/alpha/fstatfs64.c     | 52 ++++++++++++-
 sysdeps/unix/sysv/linux/alpha/fstatvfs.c      |  1 -
 sysdeps/unix/sysv/linux/alpha/fstatvfs64.c    |  1 -
 .../sysv/linux/alpha/internal_statvfs64.c     |  1 -
 .../{generic/wordsize-32 => alpha}/statfs.c   | 16 ++--
 sysdeps/unix/sysv/linux/alpha/statfs64.c      | 52 ++++++++++++-
 sysdeps/unix/sysv/linux/alpha/statvfs.c       |  1 -
 sysdeps/unix/sysv/linux/alpha/statvfs64.c     |  1 -
 sysdeps/unix/sysv/linux/alpha/syscalls.list   |  4 -
 sysdeps/unix/sysv/linux/arc/kernel_stat.h     | 27 -------
 sysdeps/unix/sysv/linux/arm/kernel_stat.h     | 40 ++++++++++
 .../linux/{generic => csky}/bits/statfs.h     | 11 ---
 .../sysv/linux/{riscv => csky}/kernel_stat.h  | 12 ++-
 sysdeps/unix/sysv/linux/fstatat64.c           | 12 +++
 sysdeps/unix/sysv/linux/fstatfs.c             | 62 +++++++++++++++
 sysdeps/unix/sysv/linux/fstatfs64.c           | 67 +++--------------
 sysdeps/unix/sysv/linux/fstatvfs.c            | 11 ++-
 sysdeps/unix/sysv/linux/fstatvfs64.c          | 53 +++++--------
 sysdeps/unix/sysv/linux/generic/Makefile      |  2 +-
 sysdeps/unix/sysv/linux/generic/stat-check.c  | 29 -------
 .../sysv/linux/generic/wordsize-32/overflow.h | 69 -----------------
 sysdeps/unix/sysv/linux/i386/kernel_stat.h    | 40 ++++++++++
 sysdeps/unix/sysv/linux/ia64/kernel_stat.h    | 22 ------
 sysdeps/unix/sysv/linux/internal_statvfs.c    | 70 +++++++++++------
 sysdeps/unix/sysv/linux/internal_statvfs.h    |  8 +-
 sysdeps/unix/sysv/linux/internal_statvfs64.c  |  4 -
 sysdeps/unix/sysv/linux/kernel_stat.h         | 58 +++++---------
 sysdeps/unix/sysv/linux/m68k/kernel_stat.h    | 40 ++++++++++
 sysdeps/unix/sysv/linux/mips/kernel_stat.h    |  6 +-
 .../sysv/linux/mips/mips64/n64/fstatfs64.c    |  1 -
 .../sysv/linux/mips/mips64/n64/statfs64.c     |  1 -
 .../sysv/linux/mips/mips64/n64/syscalls.list  |  3 -
 sysdeps/unix/sysv/linux/nios2/bits/statfs.h   | 75 +++++++++++++++++++
 .../linux/{generic => nios2}/kernel_stat.h    | 18 ++---
 .../linux/powerpc/powerpc64/kernel_stat.h     | 22 ------
 .../sysv/linux/s390/s390-32/kernel_stat.h     | 40 ++++++++++
 .../sysv/linux/s390/s390-64/kernel_stat.h     | 22 ------
 sysdeps/unix/sysv/linux/sh/kernel_stat.h      | 40 ++++++++++
 .../sysv/linux/sparc/sparc64/kernel_stat.h    |  7 +-
 sysdeps/unix/sysv/linux/statfs.c              | 61 +++++++++++++++
 sysdeps/unix/sysv/linux/statfs64.c            | 69 ++---------------
 sysdeps/unix/sysv/linux/statvfs.c             | 11 ++-
 sysdeps/unix/sysv/linux/statvfs64.c           | 54 +++++--------
 .../unix/sysv/linux/wordsize-64/fstatfs64.c   |  1 -
 .../unix/sysv/linux/wordsize-64/fstatvfs.c    |  5 --
 .../unix/sysv/linux/wordsize-64/fstatvfs64.c  |  1 -
 .../linux/wordsize-64/internal_statvfs64.c    |  1 -
 .../unix/sysv/linux/wordsize-64/statfs64.c    |  1 -
 sysdeps/unix/sysv/linux/wordsize-64/statvfs.c |  5 --
 .../unix/sysv/linux/wordsize-64/statvfs64.c   |  1 -
 .../unix/sysv/linux/wordsize-64/syscalls.list |  2 -
 sysdeps/unix/sysv/linux/x86_64/kernel_stat.h  | 22 ------
 sysdeps/unix/sysv/linux/xstatconv.c           |  7 +-
 57 files changed, 688 insertions(+), 579 deletions(-)
 rename sysdeps/unix/sysv/linux/{generic/wordsize-32 => alpha}/fstatfs.c (76%)
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/fstatvfs.c
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/fstatvfs64.c
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/internal_statvfs64.c
 rename sysdeps/unix/sysv/linux/{generic/wordsize-32 => alpha}/statfs.c (72%)
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/statvfs.c
 delete mode 100644 sysdeps/unix/sysv/linux/alpha/statvfs64.c
 delete mode 100644 sysdeps/unix/sysv/linux/arc/kernel_stat.h
 create mode 100644 sysdeps/unix/sysv/linux/arm/kernel_stat.h
 rename sysdeps/unix/sysv/linux/{generic => csky}/bits/statfs.h (79%)
 rename sysdeps/unix/sysv/linux/{riscv => csky}/kernel_stat.h (77%)
 create mode 100644 sysdeps/unix/sysv/linux/fstatfs.c
 delete mode 100644 sysdeps/unix/sysv/linux/generic/stat-check.c
 delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h
 create mode 100644 sysdeps/unix/sysv/linux/i386/kernel_stat.h
 delete mode 100644 sysdeps/unix/sysv/linux/ia64/kernel_stat.h
 delete mode 100644 sysdeps/unix/sysv/linux/internal_statvfs64.c
 create mode 100644 sysdeps/unix/sysv/linux/m68k/kernel_stat.h
 delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/fstatfs64.c
 delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/statfs64.c
 create mode 100644 sysdeps/unix/sysv/linux/nios2/bits/statfs.h
 rename sysdeps/unix/sysv/linux/{generic => nios2}/kernel_stat.h (71%)
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h
 create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/kernel_stat.h
 delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h
 create mode 100644 sysdeps/unix/sysv/linux/sh/kernel_stat.h
 create mode 100644 sysdeps/unix/sysv/linux/statfs.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fstatfs64.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fstatvfs.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fstatvfs64.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/internal_statvfs64.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/statfs64.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/statvfs.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/statvfs64.c
 delete mode 100644 sysdeps/unix/sysv/linux/x86_64/kernel_stat.h

Comments

Carlos O'Donell Feb. 11, 2021, 12:37 a.m. UTC | #1
On 2/8/21 4:49 PM, Adhemerval Zanella via Libc-alpha wrote:
> The recent thread from OpenRISC work [1] showed that even through after
> the stat refactor to add y2038 support, the default internals still do
> not set a saner default ABI.
> 
> The 'generic' internal interface still assumes non-LFS support calls
> and sets both the kernel_stat.h and the statfs.h with this assumption.
> This is misleading and requires newer ports to override both definitions
> (as done by arc and riscv32).
> 
> This a refactor set I intended to push and the idea is to make LFS only
> support as default.  It requires to set XSTAT_IS_XSTAT64 to 1 and
> STATFS_IS_STATFS64 to __STATFS_MATCHES_STATFS64 (the STAT_IS_KERNEL_STAT
> is not really required for newer ports, only for older ones with
> non-LFS ABI).
> 
> It allows to consolide the [f]stat[fs,vfs] using the same strategy done
> for stat functions, with alpha being the only outlier (and the hackery
> required to support moved to an alpha specific implementation).
> 
> The final patch also removes a recent addition to the 'generic' folder
> (stat-check.c).  My longer plan is to remove the 'generic' folder
> altogether, by consolidating the implementations, moving the outliers
> to arch-specific implementations, and setting a more saner default abi
> (that assumes LFS and 64-bit time).

Overall I think this goes in the right direction, moving the old defaults
to new defaults and flipping all the flags to match the newer defaults.

I've given each patch a light review, and I think it helps cleanup the
existing mess of code.

> [1] https://sourceware.org/pipermail/libc-alpha/2021-January/122167.html
> 
> Adhemerval Zanella (10):
>   linux: Fix STATFS_IS_STATFS64 definition
>   linux: Set default kernel_stat.h to LFS
>   linux: Set LFS statfs as default
>   linux: Consolidate fstatfs implementations
>   linux: Consolidate statfs implementations
>   linux: Consolidate fstatvfs implementations
>   linux: Consolidate statvfs implementations
>   linux: Consolidate internal_statvfs
>   linux: Remove overflow.h
>   linux: Remove stat-check.c
> 
>  include/sys/statfs.h                          |  7 +-
>  include/sys/statvfs.h                         |  3 +-
>  sysdeps/unix/sysv/linux/Makefile              |  2 +-
>  .../{generic/wordsize-32 => alpha}/fstatfs.c  | 13 +---
>  sysdeps/unix/sysv/linux/alpha/fstatfs64.c     | 52 ++++++++++++-
>  sysdeps/unix/sysv/linux/alpha/fstatvfs.c      |  1 -
>  sysdeps/unix/sysv/linux/alpha/fstatvfs64.c    |  1 -
>  .../sysv/linux/alpha/internal_statvfs64.c     |  1 -
>  .../{generic/wordsize-32 => alpha}/statfs.c   | 16 ++--
>  sysdeps/unix/sysv/linux/alpha/statfs64.c      | 52 ++++++++++++-
>  sysdeps/unix/sysv/linux/alpha/statvfs.c       |  1 -
>  sysdeps/unix/sysv/linux/alpha/statvfs64.c     |  1 -
>  sysdeps/unix/sysv/linux/alpha/syscalls.list   |  4 -
>  sysdeps/unix/sysv/linux/arc/kernel_stat.h     | 27 -------
>  sysdeps/unix/sysv/linux/arm/kernel_stat.h     | 40 ++++++++++
>  .../linux/{generic => csky}/bits/statfs.h     | 11 ---
>  .../sysv/linux/{riscv => csky}/kernel_stat.h  | 12 ++-
>  sysdeps/unix/sysv/linux/fstatat64.c           | 12 +++
>  sysdeps/unix/sysv/linux/fstatfs.c             | 62 +++++++++++++++
>  sysdeps/unix/sysv/linux/fstatfs64.c           | 67 +++--------------
>  sysdeps/unix/sysv/linux/fstatvfs.c            | 11 ++-
>  sysdeps/unix/sysv/linux/fstatvfs64.c          | 53 +++++--------
>  sysdeps/unix/sysv/linux/generic/Makefile      |  2 +-
>  sysdeps/unix/sysv/linux/generic/stat-check.c  | 29 -------
>  .../sysv/linux/generic/wordsize-32/overflow.h | 69 -----------------
>  sysdeps/unix/sysv/linux/i386/kernel_stat.h    | 40 ++++++++++
>  sysdeps/unix/sysv/linux/ia64/kernel_stat.h    | 22 ------
>  sysdeps/unix/sysv/linux/internal_statvfs.c    | 70 +++++++++++------
>  sysdeps/unix/sysv/linux/internal_statvfs.h    |  8 +-
>  sysdeps/unix/sysv/linux/internal_statvfs64.c  |  4 -
>  sysdeps/unix/sysv/linux/kernel_stat.h         | 58 +++++---------
>  sysdeps/unix/sysv/linux/m68k/kernel_stat.h    | 40 ++++++++++
>  sysdeps/unix/sysv/linux/mips/kernel_stat.h    |  6 +-
>  .../sysv/linux/mips/mips64/n64/fstatfs64.c    |  1 -
>  .../sysv/linux/mips/mips64/n64/statfs64.c     |  1 -
>  .../sysv/linux/mips/mips64/n64/syscalls.list  |  3 -
>  sysdeps/unix/sysv/linux/nios2/bits/statfs.h   | 75 +++++++++++++++++++
>  .../linux/{generic => nios2}/kernel_stat.h    | 18 ++---
>  .../linux/powerpc/powerpc64/kernel_stat.h     | 22 ------
>  .../sysv/linux/s390/s390-32/kernel_stat.h     | 40 ++++++++++
>  .../sysv/linux/s390/s390-64/kernel_stat.h     | 22 ------
>  sysdeps/unix/sysv/linux/sh/kernel_stat.h      | 40 ++++++++++
>  .../sysv/linux/sparc/sparc64/kernel_stat.h    |  7 +-
>  sysdeps/unix/sysv/linux/statfs.c              | 61 +++++++++++++++
>  sysdeps/unix/sysv/linux/statfs64.c            | 69 ++---------------
>  sysdeps/unix/sysv/linux/statvfs.c             | 11 ++-
>  sysdeps/unix/sysv/linux/statvfs64.c           | 54 +++++--------
>  .../unix/sysv/linux/wordsize-64/fstatfs64.c   |  1 -
>  .../unix/sysv/linux/wordsize-64/fstatvfs.c    |  5 --
>  .../unix/sysv/linux/wordsize-64/fstatvfs64.c  |  1 -
>  .../linux/wordsize-64/internal_statvfs64.c    |  1 -
>  .../unix/sysv/linux/wordsize-64/statfs64.c    |  1 -
>  sysdeps/unix/sysv/linux/wordsize-64/statvfs.c |  5 --
>  .../unix/sysv/linux/wordsize-64/statvfs64.c   |  1 -
>  .../unix/sysv/linux/wordsize-64/syscalls.list |  2 -
>  sysdeps/unix/sysv/linux/x86_64/kernel_stat.h  | 22 ------
>  sysdeps/unix/sysv/linux/xstatconv.c           |  7 +-
>  57 files changed, 688 insertions(+), 579 deletions(-)
>  rename sysdeps/unix/sysv/linux/{generic/wordsize-32 => alpha}/fstatfs.c (76%)
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/fstatvfs.c
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/fstatvfs64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/internal_statvfs64.c
>  rename sysdeps/unix/sysv/linux/{generic/wordsize-32 => alpha}/statfs.c (72%)
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/statvfs.c
>  delete mode 100644 sysdeps/unix/sysv/linux/alpha/statvfs64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/arc/kernel_stat.h
>  create mode 100644 sysdeps/unix/sysv/linux/arm/kernel_stat.h
>  rename sysdeps/unix/sysv/linux/{generic => csky}/bits/statfs.h (79%)
>  rename sysdeps/unix/sysv/linux/{riscv => csky}/kernel_stat.h (77%)
>  create mode 100644 sysdeps/unix/sysv/linux/fstatfs.c
>  delete mode 100644 sysdeps/unix/sysv/linux/generic/stat-check.c
>  delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/overflow.h
>  create mode 100644 sysdeps/unix/sysv/linux/i386/kernel_stat.h
>  delete mode 100644 sysdeps/unix/sysv/linux/ia64/kernel_stat.h
>  delete mode 100644 sysdeps/unix/sysv/linux/internal_statvfs64.c
>  create mode 100644 sysdeps/unix/sysv/linux/m68k/kernel_stat.h
>  delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/fstatfs64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/statfs64.c
>  create mode 100644 sysdeps/unix/sysv/linux/nios2/bits/statfs.h
>  rename sysdeps/unix/sysv/linux/{generic => nios2}/kernel_stat.h (71%)
>  delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/kernel_stat.h
>  create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/kernel_stat.h
>  delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/kernel_stat.h
>  create mode 100644 sysdeps/unix/sysv/linux/sh/kernel_stat.h
>  create mode 100644 sysdeps/unix/sysv/linux/statfs.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fstatfs64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fstatvfs.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/fstatvfs64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/internal_statvfs64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/statfs64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/statvfs.c
>  delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/statvfs64.c
>  delete mode 100644 sysdeps/unix/sysv/linux/x86_64/kernel_stat.h
>
Joseph Myers Feb. 11, 2021, 8:08 p.m. UTC | #2
There is now a build failure for Hurd that looks like it probably comes 
from one of these changes.

../sysdeps/mach/hurd/fstatfs.c:31:24: error: 'fstatfs' aliased to undefined symbol '__fstatfs'
   31 | weak_alias (__fstatfs, fstatfs)
      |                        ^~~~~~~
./../include/libc-symbols.h:152:26: note: in definition of macro '_weak_alias'
  152 |   extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \
      |                          ^~~~~~~~~
../sysdeps/mach/hurd/fstatfs.c:31:1: note: in expansion of macro 'weak_alias'
   31 | weak_alias (__fstatfs, fstatfs)
      | ^~~~~~~~~~
Carlos O'Donell Feb. 11, 2021, 8:13 p.m. UTC | #3
On 2/11/21 3:08 PM, Joseph Myers wrote:
> There is now a build failure for Hurd that looks like it probably comes 
> from one of these changes.
> 
> ../sysdeps/mach/hurd/fstatfs.c:31:24: error: 'fstatfs' aliased to undefined symbol '__fstatfs'
>    31 | weak_alias (__fstatfs, fstatfs)
>       |                        ^~~~~~~
> ./../include/libc-symbols.h:152:26: note: in definition of macro '_weak_alias'
>   152 |   extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \
>       |                          ^~~~~~~~~
> ../sysdeps/mach/hurd/fstatfs.c:31:1: note: in expansion of macro 'weak_alias'
>    31 | weak_alias (__fstatfs, fstatfs)
>       | ^~~~~~~~~~
> 

I didn't run a full bmg build for reviewing.

I should though just to review such refactoring.

Adhemerval, Are you able to look into this?
Adhemerval Zanella Feb. 11, 2021, 8:17 p.m. UTC | #4
On 11/02/2021 17:13, Carlos O'Donell wrote:
> On 2/11/21 3:08 PM, Joseph Myers wrote:
>> There is now a build failure for Hurd that looks like it probably comes 
>> from one of these changes.
>>
>> ../sysdeps/mach/hurd/fstatfs.c:31:24: error: 'fstatfs' aliased to undefined symbol '__fstatfs'
>>    31 | weak_alias (__fstatfs, fstatfs)
>>       |                        ^~~~~~~
>> ./../include/libc-symbols.h:152:26: note: in definition of macro '_weak_alias'
>>   152 |   extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \
>>       |                          ^~~~~~~~~
>> ../sysdeps/mach/hurd/fstatfs.c:31:1: note: in expansion of macro 'weak_alias'
>>    31 | weak_alias (__fstatfs, fstatfs)
>>       | ^~~~~~~~~~
>>
> 
> I didn't run a full bmg build for reviewing.
> 
> I should though just to review such refactoring.
> 
> Adhemerval, Are you able to look into this?
> 

Working on it, I forgot to fire up a hurd build for this one...
Carlos O'Donell Feb. 11, 2021, 8:30 p.m. UTC | #5
On 2/11/21 3:17 PM, Adhemerval Zanella wrote:
> 
> 
> On 11/02/2021 17:13, Carlos O'Donell wrote:
>> On 2/11/21 3:08 PM, Joseph Myers wrote:
>>> There is now a build failure for Hurd that looks like it probably comes 
>>> from one of these changes.
>>>
>>> ../sysdeps/mach/hurd/fstatfs.c:31:24: error: 'fstatfs' aliased to undefined symbol '__fstatfs'
>>>    31 | weak_alias (__fstatfs, fstatfs)
>>>       |                        ^~~~~~~
>>> ./../include/libc-symbols.h:152:26: note: in definition of macro '_weak_alias'
>>>   152 |   extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))) \
>>>       |                          ^~~~~~~~~
>>> ../sysdeps/mach/hurd/fstatfs.c:31:1: note: in expansion of macro 'weak_alias'
>>>    31 | weak_alias (__fstatfs, fstatfs)
>>>       | ^~~~~~~~~~
>>>
>>
>> I didn't run a full bmg build for reviewing.
>>
>> I should though just to review such refactoring.
>>
>> Adhemerval, Are you able to look into this?
>>
> 
> Working on it, I forgot to fire up a hurd build for this one...

DJ,

/buildon build-many-glibcs ;-)