Movatterモバイル変換


[0]ホーム

URL:


This is the mail archive of thelibc-alpha@sourceware.orgmailing list for theglibc 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]

Re: [PATCH] Add hidden visibility to internal function prototypes


On Thu, Aug 17, 2017 at 5:40 AM, H.J. Lu <hjl.tools@gmail.com> wrote:> On Thu, Aug 17, 2017 at 5:34 AM, Florian Weimer <fweimer@redhat.com> wrote:>> On 08/17/2017 02:22 PM, H.J. Lu wrote:>>> Add hidden visibility to internal function prototypes to allow direct>>> access to internal functions within libc.a without using GOT when the>>> compiler defaults to -fPIE.>>>>>> Size comparison of elf/ldconfig when the compiler defaults to -fPIE:>>>> This is for static linking, right?>>>> Is there a reason to restrict this to PIE builds?  Why not use hidden>> visibility unconditionally?>>>> Yes, there is only used for static PIE build and we can replace> BUILD_PIE_DEFAULT with !defined SHARED.  But it makes> no difference for non-PIE static build.>Here is the updated patch to add hidden visibility to internal functionprototypes used within libc.a.Tested on x86-64 and i686 with and without GCC defaulting to PIE.OK for master?-- H.J.
From 236f3b88f74d408d3ab925809da3bd6d8a995730 Mon Sep 17 00:00:00 2001From: "H.J. Lu" <hjl.tools@gmail.com>Date: Sun, 13 Aug 2017 07:37:34 -0700Subject: [PATCH] Add hidden visibility to internal function prototypesAdd hidden visibility to internal function prototypes to allow directaccess to internal functions within libc.a without using GOT when thecompiler defaults to -fPIE.Size comparison of elf/ldconfig when the compiler defaults to -fPIE:On x86-64:        text   data    bss    dec    hexBefore: 619646  20132   5488 645266  9d892After : 619502  20132   5488 645122  9d802On i686:        text   data    bss    dec    hexBefore: 550333  10748   3060 564141  89badAfter : 546453  10732   3060 560245  88c75* include/libc-symbols.h (__hidden_proto_hiddenattr): New forbuilding libc.a.(hidden_proto): Likewise.(hidden_tls_proto): Likewise.(__hidden_proto): Likewise.--- include/libc-symbols.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)diff --git a/include/libc-symbols.h b/include/libc-symbols.hindex d6a1c260f6..fe3571af52 100644--- a/include/libc-symbols.h+++ b/include/libc-symbols.h@@ -513,8 +513,20 @@ for linking") # endif #else # ifndef __ASSEMBLER__-#  define hidden_proto(name, attrs...)-#  define hidden_tls_proto(name, attrs...)+#  if !defined SHARED && IS_IN (libc) && !defined LIBC_NONSHARED \+      && !defined NO_HIDDEN+#   define __hidden_proto_hiddenattr(attrs...) \+  __attribute__ ((visibility ("hidden"), ##attrs))+#   define hidden_proto(name, attrs...) \+  __hidden_proto (name, , name, ##attrs)+#   define hidden_tls_proto(name, attrs...) \+  __hidden_proto (name, __thread, name, ##attrs)+#  define __hidden_proto(name, thread, internal, attrs...)     \+  extern thread __typeof (name) name __hidden_proto_hiddenattr (attrs);+# else+#   define hidden_proto(name, attrs...)+#   define hidden_tls_proto(name, attrs...)+# endif # else #  define HIDDEN_JUMPTARGET(name) JUMPTARGET(name) # endif /* Not  __ASSEMBLER__ */-- 2.13.5

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

[8]ページ先頭

©2009-2026 Movatter.jp