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/19679] gcc-4.9.3 C++ exception handling broken due to unaligned stack


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

--- Comment #3 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, hjl/pr19679/2.23 has been created
        at  2fe5d64028a6ac13fa2293dd834086255e1525ea (commit)

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

commit 2fe5d64028a6ac13fa2293dd834086255e1525ea
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Feb 19 15:43:45 2016 -0800

    [x86_64] Set DL_RUNTIME_UNALIGNED_VEC_SIZE to 8

    Due to GCC bug:

       https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58066

    __tls_get_addr may be called with 8-byte stack alignment.  Although
    this bug has been fixed in GCC 4.9.4, 5.3 and 6, we can't assume
    that stack will be always aligned at 16 bytes.  Since SSE optimized
    memory/string functions with aligned SSE register load and store are
    used in the dynamic linker, we must set DL_RUNTIME_UNALIGNED_VEC_SIZE
    to 8 so that _dl_runtime_resolve_sse will align the stack before
    calling _dl_fixup:

    Dump of assembler code for function _dl_runtime_resolve_sse:
       0x00007ffff7deea90 <+0>: push   %rbx
       0x00007ffff7deea91 <+1>: mov    %rsp,%rbx
       0x00007ffff7deea94 <+4>: and    $0xfffffffffffffff0,%rsp
                                    ^^^^^^^^^^^ Align stack to 16 bytes
       0x00007ffff7deea98 <+8>: sub    $0x100,%rsp
       0x00007ffff7deea9f <+15>:        mov    %rax,0xc0(%rsp)
       0x00007ffff7deeaa7 <+23>:        mov    %rcx,0xc8(%rsp)
       0x00007ffff7deeaaf <+31>:        mov    %rdx,0xd0(%rsp)
       0x00007ffff7deeab7 <+39>:        mov    %rsi,0xd8(%rsp)
       0x00007ffff7deeabf <+47>:        mov    %rdi,0xe0(%rsp)
       0x00007ffff7deeac7 <+55>:        mov    %r8,0xe8(%rsp)
       0x00007ffff7deeacf <+63>:        mov    %r9,0xf0(%rsp)
       0x00007ffff7deead7 <+71>:        movaps %xmm0,(%rsp)
       0x00007ffff7deeadb <+75>:        movaps %xmm1,0x10(%rsp)
       0x00007ffff7deeae0 <+80>:        movaps %xmm2,0x20(%rsp)
       0x00007ffff7deeae5 <+85>:        movaps %xmm3,0x30(%rsp)
       0x00007ffff7deeaea <+90>:        movaps %xmm4,0x40(%rsp)
       0x00007ffff7deeaef <+95>:        movaps %xmm5,0x50(%rsp)
       0x00007ffff7deeaf4 <+100>:       movaps %xmm6,0x60(%rsp)
       0x00007ffff7deeaf9 <+105>:       movaps %xmm7,0x70(%rsp)

        [BZ #19679]
        * sysdeps/x86_64/dl-trampoline.S (DL_RUNIME_UNALIGNED_VEC_SIZE):
        Renamed to ...
        (DL_RUNTIME_UNALIGNED_VEC_SIZE): This.  Set to 8.
        (DL_RUNIME_RESOLVE_REALIGN_STACK): Renamed to ...
        (DL_RUNTIME_RESOLVE_REALIGN_STACK): This.  Updated.
        (DL_RUNIME_RESOLVE_REALIGN_STACK): Renamed to ...
        (DL_RUNTIME_RESOLVE_REALIGN_STACK): This.
        * sysdeps/x86_64/dl-trampoline.h
        (DL_RUNIME_RESOLVE_REALIGN_STACK): Renamed to ...
        (DL_RUNTIME_RESOLVE_REALIGN_STACK): This.

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

-- 
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]