]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
[BZ 19170]
authorJohn David Anglin <danglin@gcc.gnu.org>
Sun, 23 Jul 2017 16:50:44 +0000 (12:50 -0400)
committerJohn David Anglin <danglin@gcc.gnu.org>
Sun, 23 Jul 2017 16:50:44 +0000 (12:50 -0400)
Revise comment in sysdeps/hppa/dl-trampoline.S

ChangeLog
sysdeps/hppa/dl-trampoline.S

index a0f094bf269266055f62c603c94fef571055d4ed..1033f385b9864c5160713410ac8ff37e8c73feb5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-07-23  John David Anglin  <danglin@gcc.gnu.org>
+
+       [BZ 19170]
+       * sysdeps/hppa/dl-trampoline.S (_dl_runtime_resolve): Revise comment.
+
 2017-07-21  DJ Delorie  <dj@redhat.com>
 
        * nss/tst-nss-test5.c: Correct test configuration.
index f1294a931fa71ab1381c1f946f43259fe47b5ded..3165c6f0e2528696911408ebd597a117c404b1e3 100644 (file)
@@ -82,9 +82,19 @@ _dl_runtime_resolve:
        bl      _dl_fixup,%rp
        copy    %r21,%r19               /* set fixup func ltp */
 
-       /* Sometimes a final executable may attempt to call an undefined
-          weak function (e.g., __gmon_start__).  Return if the function
-          was not resolved by _dl_fixup */
+       /* While the linker will set a function pointer to NULL when it
+          encounters an undefined weak function, we need to dynamically
+          detect removed weak functions.  The issue arises because a weak
+          __gmon_start__ function was added to shared executables to work
+          around issues in _init that are now resolved.  The presence of
+          __gmon_start__ in every shared library breaks the linker
+          `--as-needed' option.  This __gmon_start__ function does nothing
+          but removal is tricky.  Depending on the binding, removal can
+          cause an application using it to fault.  The call to _dl_fixup
+          returns NULL when a function isn't resolved.  In order to help
+          with __gmon_start__ removal, we return directly to the caller
+          when _dl_fixup returns NULL.  This check could be removed when
+          BZ 19170 is fixed.  */
        comib,= 0,%r28,1f
 
        /* Load up the returned func descriptor */