git-NO_HIDDEN
authorGNU Libc Maintainers <debian-glibc@lists.debian.org>
Sun, 14 Jan 2018 10:24:48 +0000 (10:24 +0000)
committerAurelien Jarno <aurel32@debian.org>
Sun, 14 Jan 2018 10:24:48 +0000 (10:24 +0000)
commitcb26796eb8adabfcea8ae846d60e885a178c99b0
tree54072471a74d2d2a17ecd76edbd2395529d0ccdb
parentb9316fdc88e4054598c2a1817f7caab3f442ea78
git-NO_HIDDEN

commit 3d1870fa3301c5cd00d5fdab0014c4e22b71fef2
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Tue Oct 3 01:26:58 2017 +0200

    Introduce NO_RTLD_HIDDEN, make hurd use it instead of NO_HIDDEN

    On the Hurd, the rtld needs to see its own dumb versions of a few functions
    (defined in sysdeps/mach/hurd/dl-sysdep.c) overridden by libc's versions once
    loaded. rtld should thus not have hidden attribute for these.  To achieve this,
    the Hurd port used to just define NO_HIDDEN, which disables it completely. For
    now, this changes that to disabling it for all rtld functions, for simplicity.

    See Roland's comment on https://sourceware.org/bugzilla/show_bug.cgi?id=15605#c5

    The ld.so numbers remain at

      8 .rel.plt      000000c8  00000c24  00000c24  00000c24  2**2
                      CONTENTS, ALLOC, LOAD, READONLY, DATA
      9 .plt          000001a0  00000cf0  00000cf0  00000cf0  2**4
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
     10 .plt.got      00000010  00000e90  00000e90  00000e90  2**3
                      CONTENTS, ALLOC, LOAD, READONLY, CODE
     18 .got.plt      00000070  0002d000  0002d000  0002c000  2**2
                      CONTENTS, ALLOC, LOAD, DATA

    which is about 3 times as much as on Linux.

    The libc.so numbers get divided by 3 (the remainings are mostly RPC stub calls)

            * include/libc-symbols.h [NO_RTLD_HIDDEN] (rtld_hidden_proto,
            rtld_hidden_tls_proto, rtld_hidden_def, rtld_hidden_weak,
            rtld_hidden_rtld_hidden_ver, data_def, rtld_hidden_data_weak,
            rtld_hidden_data_ver): Define to empty.
            * include/assert.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__assert_fail,
            __assert_perror_fail): Likewise.
            * include/dirent.h [IS_IN(rtld) && NO_RTLD_HIDDEN]
            (__rewinddir): Likewise.
            * include/libc-internal.h [IS_IN(rtld) && NO_RTLD_HIDDEN]
            (__profile_frequency): Likewise.
            * include/setjmp.h (__sigsetjmp): Likewise.
            * include/signal.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__sigaction,
            __libc_sigaction): Likewise.
            * include/stdlib.h [NO_RTLD_HIDDEN] (unsetenv, __strtoul_internal): Do
            not set hidden attribute.
            * include/string.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__stpcpy, __strdup,
            __strerror_t, __strsep_g, memchr, memcmp, memcpy, memmove, memset,
            rawmemchr, stpcpy, strchr, strcmp, strlen, strnlen, strsep): Likewise.
            * include/sys/stat.h [IS_IN(rtld) && NO_RTLD_HIDDEN] (__fxstat,
            __fxstat64, __lxstat, __lxstat64, __xstat, __xstat64,
            __fxstatat64): Likewise.
            * include/sys/utsname.h [IS_IN(rtld) && NO_RTLD_HIDDEN]
            (__uname): Likewise.
            * include/sysdeps/generic/_itoa.h [IS_IN(rtld) && NO_RTLD_HIDDEN]
            (_itoa_upper_digits, _itoa_lower_digits): Likewise.
            * sysdeps/mach/hurd/configure.ac (NO_HIDDEN): Do not set.
            (NO_RTLD_HIDDEN): Set.
            * sysdeps/mach/hurd/configure: Refresh.
            * config.h.in: Refresh.

Gbp-Pq: Topic hurd-i386
Gbp-Pq: Name git-NO_HIDDEN.diff
14 files changed:
config.h.in
include/assert.h
include/dirent.h
include/libc-internal.h
include/libc-symbols.h
include/setjmp.h
include/signal.h
include/stdlib.h
include/string.h
include/sys/stat.h
include/sys/utsname.h
sysdeps/generic/_itoa.h
sysdeps/mach/hurd/configure
sysdeps/mach/hurd/configure.ac