This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 00/58] Hide internal functions in libc.so


On x86,

# readelf -rW libc_pic.a | grep " __" | grep PLT32  | awk '{ print $5 }' | sort | uniq

shows that many internal functions are called via PLT in libc.so.  This
series of patches hides internal functions to allow direct access within
libc.so and libc.a without using GOT nor PLT.

H.J. Lu (58):
  Mark internal functions with attribute_hidden [BZ #18822]
  Mark 3 *_internal functions with attribute_hidden [BZ #18822]
  Mark __internal_statvfs[64] with attribute_hidden [BZ #18822]
  Mark ____wcsto*_l_internal functions with attribute_hidden [BZ #18822]
  Mark internal argp functions with attribute_hidden [BZ #18822]
  Mark internal unistd functions with attribute_hidden [BZ #18822]
  Mark internal grp/pwd/shadow functions with attribute_hidden [BZ
    #18822]
  Mark __dso_handle as hidden [BZ #18822]
  Mark internal wchar functions with attribute_hidden [BZ #18822]
  Mark internal gmp functions with attribute_hidden [BZ #18822]
  Mark internal nscd functions with attribute_hidden [BZ #18822]
  Mark internal time functions with attribute_hidden [BZ #18822]
  Mark internal statfs functions with attribute_hidden [BZ #18822]
  Mark internal gshadow functions with attribute_hidden [BZ #18822]
  Mark internal stdio functions with attribute_hidden [BZ #18822]
  Mark internal getXXXbyYYY functions with attribute_hidden [BZ #18822]
  Mark internal dirent functions with attribute_hidden [BZ #18822]
  Mark internal utmp functions with attribute_hidden [BZ #18822]
  Mark internal stdlib functions with attribute_hidden [BZ #18822]
  Hide internal regex functions [BZ #18822]
  Hide __readv and __writev [BZ #18822]
  Mark internal rpc functions with attribute_hidden [BZ #18822]
  Mark internal netlink functions with attribute_hidden [BZ #18822]
  Hide __chmod and __mkdir [BZ #18822]
  Hide internal sysinfo functions [BZ #18822]
  Mark internal intl functions with attribute_hidden [BZ #18822]
  Hide internal __ioctl function [BZ #18822]
  Hide internal __malloc_check_init function [BZ #18822]
  Hide internal __mremap function [BZ #18822]
  Hide __posix_spawn_file_actions_realloc/__spawni [BZ #18822]
  Hide internal __strsep function [BZ #18822]
  Hide internal signal functions [BZ #18822]
  Hide internal __sysinfo function [BZ #18822]
  Hide internal __assert_fail_base function [BZ #18822]
  Hide internal __tdestroy function [BZ #18822]
  Hide internal __fopen_maybe_mmap function [BZ #18822]
  Hide internal __bsd_getpt function [BZ #18822]
  Move hidden_proto (__dl_iterate_phdr) to include/link.h [BZ #18822]
  Hide internal __get_sol function [BZ #18822]
  Hide internal __gettextparse function [BZ #18822]
  Hide internal idna functions [BZ #18822]
  Hide internal __ifreq function [BZ #18822]
  Hide internal __hasmntopt function [BZ #18822]
  Hide internal __hash_string function [BZ #18822]
  Hide internal __sched_setparam function [BZ #18822]
  Hide internal __vstrfmon_l function [BZ #18822]
  Hide internal __setrlimit function [BZ #18822]
  Hide internal __tcgetattr function [BZ #18822]
  Hide internal __nis_hash function [BZ #18822]
  Hide internal __setfpucw function [BZ #18822]
  Hide internal __init_misc function [BZ #18822]
  Hide internal __libc_print_version function [BZ #18822]
  Hide internal __moncontrol function [BZ #18822]
  Hide internal __new_exitfn function [BZ #18822]
  Hide internal __new_getrlimit function [BZ #18822]
  Hide internal __glob64 function [BZ #18822]
  Hide internal __sched_setaffinity_new function [BZ #18822]
  Hide internal fadvise64/fallocate64 functions [BZ #18822]

 argp/argp-fmtstream.c                              |  2 +-
 argp/argp-fs-xinl.c                                |  2 +-
 argp/argp-help.c                                   |  4 +-
 argp/argp-parse.c                                  |  2 +-
 argp/argp-xinl.c                                   |  2 +-
 csu/version.c                                      |  2 +-
 dlfcn/modatexit.c                                  |  2 -
 dlfcn/modcxaatexit.c                               |  1 -
 dlfcn/tstatexit.c                                  |  8 ---
 dlfcn/tstcxaatexit.c                               |  8 ---
 elf/dl-iteratephdr.c                               |  1 -
 gmon/gmon.c                                        |  2 +
 iconv/gconv_int.h                                  | 43 +++++++++------
 include/aliases.h                                  |  3 +-
 include/argp-fmtstream.h                           | 19 +++++++
 include/argp.h                                     | 10 ++++
 include/assert.h                                   |  2 +-
 include/dirent.h                                   | 13 ++---
 include/dlfcn.h                                    |  3 +-
 include/fpu_control.h                              |  2 +-
 include/glob.h                                     |  1 +
 include/gmp.h                                      | 33 +++++++++---
 include/grp.h                                      |  6 +--
 include/gshadow.h                                  |  6 ++-
 include/idna.h                                     |  8 +++
 include/ifreq.h                                    | 14 +++++
 include/libc-internal.h                            |  2 +-
 include/link.h                                     |  1 +
 include/malloc.h                                   |  2 +
 include/mntent.h                                   |  1 +
 include/monetary.h                                 |  3 +-
 include/netdb.h                                    | 30 +++++++----
 include/plural-exp.h                               |  8 +++
 include/pwd.h                                      |  6 +--
 include/regex.h                                    |  6 ++-
 include/rpc/netdb.h                                |  4 +-
 include/rpc/rpc.h                                  |  8 +--
 include/sched.h                                    |  1 +
 include/search.h                                   |  1 +
 include/shadow.h                                   |  7 +--
 include/signal.h                                   |  4 ++
 include/stdio.h                                    | 20 +++----
 include/stdlib.h                                   | 63 +++++++++++++---------
 include/string.h                                   |  1 +
 include/sys/ioctl.h                                |  1 +
 include/sys/mman.h                                 |  1 +
 include/sys/resource.h                             |  1 +
 include/sys/stat.h                                 |  2 +
 include/sys/statfs.h                               |  9 ++--
 include/sys/statvfs.h                              |  6 ++-
 include/sys/sysinfo.h                              |  6 ++-
 include/sys/uio.h                                  |  2 +
 include/termios.h                                  |  1 +
 include/time.h                                     | 32 ++++++-----
 include/unistd.h                                   | 60 +++++++++++----------
 include/utmp.h                                     | 28 ++++++----
 include/wchar.h                                    | 61 ++++++++++++++++-----
 inet/getnameinfo.c                                 |  4 +-
 intl/gettextP.h                                    | 17 +++---
 intl/hash-string.h                                 |  3 +-
 intl/plural-exp.c                                  |  2 +-
 intl/plural-exp.h                                  |  5 +-
 io/chmod.c                                         |  1 +
 io/mkdir.c                                         |  1 +
 libio/iolibio.h                                    |  5 +-
 locale/coll-lookup.h                               |  6 ++-
 malloc/mtrace.c                                    |  3 +-
 misc/getsysstats.c                                 |  4 ++
 misc/ioctl.c                                       |  1 +
 misc/mntent_r.c                                    |  1 +
 misc/readv.c                                       |  1 +
 misc/tsearch.c                                     |  1 +
 misc/writev.c                                      |  1 +
 nptl/pthread_atfork.c                              |  7 +--
 nptl/tst-atfork2mod.c                              |  1 -
 nscd/nscd-client.h                                 | 12 +++--
 nscd/nscd_helper.c                                 |  5 ++
 nscd/nscd_proto.h                                  | 34 +++++++-----
 nss/getXXbyYY.c                                    |  3 +-
 posix/regcomp.c                                    |  2 +
 posix/regexec.c                                    |  2 +
 posix/sched_setp.c                                 |  1 +
 posix/spawn_int.h                                  |  5 +-
 posix/wordexp-test.c                               |  4 +-
 resolv/gai_misc.h                                  | 15 ++++--
 resource/setrlimit.c                               |  1 +
 signal/kill.c                                      |  1 +
 signal/sigblock.c                                  |  1 +
 signal/sigprocmask.c                               |  1 +
 stdlib/at_quick_exit.c                             |  7 +--
 stdlib/atexit.c                                    |  8 +--
 stdlib/canonicalize.c                              |  1 +
 stdlib/exit.h                                      |  3 +-
 stdlib/gmp-impl.h                                  | 12 +++--
 stdlib/tst-tls-atexit-lib.c                        |  2 -
 string/strsep.c                                    |  1 +
 sysdeps/generic/aio_misc.h                         |  3 +-
 sysdeps/generic/ifreq.h                            | 12 -----
 sysdeps/generic/ldsodefs.h                         |  8 +--
 sysdeps/i386/machine-gmon.h                        |  2 +-
 sysdeps/ieee754/float128/wcstof128.c               |  3 --
 sysdeps/ieee754/float128/wcstof128_l.c             |  3 --
 sysdeps/mach/getsysstats.c                         |  4 ++
 sysdeps/mach/hurd/chmod.c                          |  1 +
 sysdeps/mach/hurd/ifreq.h                          | 12 -----
 sysdeps/mach/hurd/ioctl.c                          |  1 +
 sysdeps/mach/hurd/kill.c                           |  1 +
 sysdeps/mach/hurd/mkdir.c                          |  1 +
 sysdeps/mach/hurd/readdir64.c                      |  1 +
 sysdeps/mach/hurd/setrlimit.c                      |  1 +
 sysdeps/mach/hurd/sigaltstack.c                    |  1 +
 sysdeps/mach/hurd/sigprocmask.c                    |  1 +
 sysdeps/posix/getaddrinfo.c                        |  5 +-
 sysdeps/posix/readv.c                              |  1 +
 sysdeps/posix/sigblock.c                           |  1 +
 sysdeps/posix/writev.c                             |  1 +
 sysdeps/unix/bsd/tcgetattr.c                       |  1 +
 sysdeps/unix/sysv/linux/aarch64/ioctl.S            |  1 +
 sysdeps/unix/sysv/linux/alpha/sigprocmask.c        |  1 +
 sysdeps/unix/sysv/linux/fstatvfs.c                 |  6 +--
 sysdeps/unix/sysv/linux/fstatvfs64.c               |  7 +--
 sysdeps/unix/sysv/linux/generic/chmod.c            |  2 +
 sysdeps/unix/sysv/linux/generic/mkdir.c            |  2 +
 sysdeps/unix/sysv/linux/getpt.c                    |  2 +-
 sysdeps/unix/sysv/linux/getrlimit64.c              |  3 +-
 sysdeps/unix/sysv/linux/getsourcefilter.c          |  1 +
 sysdeps/unix/sysv/linux/getsourcefilter.h          | 20 +++++++
 sysdeps/unix/sysv/linux/getsysstats.c              |  4 ++
 sysdeps/unix/sysv/linux/i386/glob64.c              |  1 +
 sysdeps/unix/sysv/linux/i386/olddirent.h           |  3 +-
 sysdeps/unix/sysv/linux/i386/readdir64.c           |  1 +
 sysdeps/unix/sysv/linux/ia64/sigprocmask.c         |  1 +
 sysdeps/unix/sysv/linux/include/sys/sysinfo.h      |  2 +-
 sysdeps/unix/sysv/linux/internal_statvfs.c         |  2 +-
 sysdeps/unix/sysv/linux/internal_statvfs.h         | 26 +++++++++
 sysdeps/unix/sysv/linux/m68k/mremap.S              |  1 +
 sysdeps/unix/sysv/linux/mips/mips64/n64/ioctl.S    |  1 +
 sysdeps/unix/sysv/linux/netlinkaccess.h            | 10 ++--
 sysdeps/unix/sysv/linux/pathconf.h                 | 12 +++--
 sysdeps/unix/sysv/linux/posix_fadvise64.c          |  2 +
 sysdeps/unix/sysv/linux/posix_fallocate64.c        |  2 +
 sysdeps/unix/sysv/linux/powerpc/ioctl.c            |  1 +
 sysdeps/unix/sysv/linux/readdir64.c                |  1 +
 sysdeps/unix/sysv/linux/readv.c                    |  2 +
 sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c |  1 +
 sysdeps/unix/sysv/linux/sched_setaffinity.c        |  4 ++
 sysdeps/unix/sysv/linux/setrlimit.c                |  1 +
 sysdeps/unix/sysv/linux/setrlimit64.c              |  3 ++
 sysdeps/unix/sysv/linux/setsourcefilter.c          |  5 +-
 sysdeps/unix/sysv/linux/sigprocmask.c              |  1 +
 .../unix/sysv/linux/sparc/sparc64/sigprocmask.c    |  1 +
 sysdeps/unix/sysv/linux/statvfs.c                  |  6 +--
 sysdeps/unix/sysv/linux/statvfs64.c                |  7 +--
 sysdeps/unix/sysv/linux/tcgetattr.c                |  1 +
 sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S        |  1 +
 sysdeps/unix/sysv/linux/wordsize-64/readdir.c      |  1 +
 sysdeps/unix/sysv/linux/writev.c                   |  2 +
 sysdeps/unix/sysv/linux/x86_64/sigprocmask.c       |  1 +
 termios/tcgetattr.c                                |  1 +
 wcsmbs/wcsmbsload.h                                |  9 ++--
 wcsmbs/wcstod.c                                    |  3 --
 wcsmbs/wcstod_l.c                                  |  3 --
 wcsmbs/wcstof.c                                    |  3 --
 wcsmbs/wcstof_l.c                                  |  3 --
 wcsmbs/wcstol_l.c                                  |  3 --
 wcsmbs/wcstold.c                                   |  3 --
 wcsmbs/wcstold_l.c                                 |  3 --
 wcsmbs/wcstoll_l.c                                 |  3 --
 wcsmbs/wcstoul_l.c                                 |  3 --
 wcsmbs/wcstoull_l.c                                |  4 --
 170 files changed, 635 insertions(+), 384 deletions(-)
 create mode 100644 include/argp-fmtstream.h
 create mode 100644 include/idna.h
 create mode 100644 include/ifreq.h
 create mode 100644 include/plural-exp.h
 create mode 100644 sysdeps/unix/sysv/linux/getsourcefilter.h
 create mode 100644 sysdeps/unix/sysv/linux/internal_statvfs.h

-- 
2.13.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]