Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 01 Dec 2016 02:56:14 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 214972] rtld relies on non-zero _DYNAMIC GOT entry (on !sparc64)
Message-ID:  <bug-214972-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D214972

            Bug ID: 214972
           Summary: rtld relies on non-zero _DYNAMIC GOT entry (on
                    !sparc64)
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: emaste@freebsd.org

Over a decade ago a binutils import broke sparc64 rtld, and it was fixed in
r130661 Quoting from that commit message:

    The rtld code tested &_DYNAMIC against 0 to see whether rtld itself
    was built as PIC or not. While the sparc64 MD code did not rely
    on the preset value of the GOT slot for _DYNAMIC any more due
    to previous binutils changes, it still used to not be 0, so
    that this check did work. The new binutils do however initialize
    this slot with 0. As a consequence, rtld would not properly initialize
    itself and crash.

    Fix that by introducing a new macro, RTLD_IS_DYNAMIC, to take the role
    of this test. For sparc64, it is implemented using the rtld_dynamic()
    code that was already there. If an architecture does not provide its
    own implementation, we default to the old check.

I have been testing LLD as a linker for FreeBSD, and a recent LLD change (t=
heir
r288107) started producing a zeroed GOT on amd64. See http://llvm.org/pr312=
21.

I don't believe the linker is required to populate the GOT with nonzero val=
ues,
so we should probably make a change for all architectures akin to r130661 f=
or
sparc64 .

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-214972-8>