This is the mail archive of the glibc-bugs@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]

[Bug dynamic-link/17354] tile: signed dynamic relocations aren't handled correctly


https://sourceware.org/bugzilla/show_bug.cgi?id=17354

--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  8622092d584962801e4248cd4bb4bef6e71827b0 (commit)
      from  41488498b6d9440ee66ab033808cce8323bba7ac (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8622092d584962801e4248cd4bb4bef6e71827b0

commit 8622092d584962801e4248cd4bb4bef6e71827b0
Author: Chris Metcalf <cmetcalf@tilera.com>
Date:   Fri Sep 5 14:40:23 2014 -0400

    [BZ #17354] tile: Fix up corner cases with signed relocations

    Some types of relocations technically need to be signed rather than
    unsigned: in particular ones that are used with moveli or movei,
    or for jump and branch.  This is almost never a problem.  Jump and
    branch opcodes are pretty much uniformly resolved by the static linker
    (unless you omit -fpic for a shared library, which is not recommended).
    The moveli and movei opcodes that need to be sign-extended generally
    are for positive displacements, like the construction of the address of
    main() from _start().  However, tst-pie1 ends up with main below _start
    (in a different module) and the test failed due to signedness issues in
    relocation handling.

    This commit treats the value as signed when shifting (to preserve the
    high bit) and also sign-extends the value generated from the updated
    bundle when comparing with the desired bundle, which we do to make sure
    no overflow occurred.  As a result, the tst-pie1 test now passes.

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                 |    6 ++++++
 NEWS                      |    2 +-
 sysdeps/tile/dl-machine.h |   41 +++++++++++++++++++++++------------------
 3 files changed, 30 insertions(+), 19 deletions(-)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


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