public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug dynamic-link/27004] New: ld.so is miscompiled by GCC 11
@ 2020-12-02 23:06 hjl.tools at gmail dot com
  2020-12-02 23:51 ` [Bug dynamic-link/27004] " hjl.tools at gmail dot com
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: hjl.tools at gmail dot com @ 2020-12-02 23:06 UTC (permalink / raw)
  To: glibc-bugs

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

            Bug ID: 27004
           Summary: ld.so is miscompiled by GCC 11
           Product: glibc
           Version: 2.33
            Status: NEW
          Severity: normal
          Priority: P2
         Component: dynamic-link
          Assignee: unassigned at sourceware dot org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---
            Target: x86-64

GCC 11 with

commit d5ac0401eb128bf3dadec943741dfde7c499e49a
Author: Haochen Gui <guihaoc@gcc.gnu.org>
Date:   Tue Nov 17 13:52:15 2020 -0600

    Relocatable read-only section support for absolute jump table

compiles _dl_lookup_symbol_x into

(gdb) r --direct
Starting program:
/export/build/gnu/tools-build/glibc-gitlab/build-x86_64-linux/sunrpc/tst-getmyaddr
--direct

Program received signal SIGSEGV, Segmentation fault.
_dl_lookup_symbol_x (undef_name=0x7ffff7ff416a "__vdso_clock_gettime", 
    undef_map=0x7ffff7ffe7b0, ref=0x7fffffffda98, symbol_scope=0x7ffff7ffeb48, 
    version=0x7fffffffdac0, type_class=0, flags=0, skip_map=0x0)
    at dl-lookup.c:929
929           && add_dependency (undef_map, current_value.m, flags) < 0)
(gdb) disass
Dump of assembler code for function _dl_lookup_symbol_x:
   0x00007ffff7fdb8c0 <+0>:     push   %r15
   0x00007ffff7fdb8c2 <+2>:     push   %r14
   0x00007ffff7fdb8c4 <+4>:     push   %r13
   0x00007ffff7fdb8c6 <+6>:     push   %r12
   0x00007ffff7fdb8c8 <+8>:     mov    %rdi,%r12
   0x00007ffff7fdb8cb <+11>:    push   %rbp
   0x00007ffff7fdb8cc <+12>:    mov    %rdx,%rbp
   0x00007ffff7fdb8cf <+15>:    push   %rbx
=> 0x00007ffff7fdb8d0 <+16>:    mov    %fs:0x10,%rax
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ %fs isn't initialized yet.
   0x00007ffff7fdb8d9 <+25>:    sub    $0xa8,%rsp
   0x00007ffff7fdb8e0 <+32>:    mov    %rsi,0x10(%rsp)
   0x00007ffff7fdb8e5 <+37>:    mov    %rcx,0x20(%rsp)
   0x00007ffff7fdb8ea <+42>:    mov    %r8,0x8(%rsp)
   0x00007ffff7fdb8ef <+47>:    mov    %r9d,0x1c(%rsp)
   0x00007ffff7fdb8f4 <+52>:    mov    %rax,0x30(%rsp)
   0x00007ffff7fdb8f9 <+57>:    movzbl (%r12),%edx
   0x00007ffff7fdb8fe <+62>:    test   %dl,%dl
   0x00007ffff7fdb900 <+64>:    je     0x7ffff7fdbb40 <_dl_lookup_symbol_x+640>
   0x00007ffff7fdb906 <+70>:    mov    %r12,%rcx
   0x00007ffff7fdb909 <+73>:    mov    $0x1505,%ebx
   0x00007ffff7fdb90e <+78>:    xchg   %ax,%ax
   0x00007ffff7fdb910 <+80>:    mov    %rbx,%rax
--Type <RET> for more, q to quit, c to continue without paging--q
Quit
(gdb) b main
Breakpoint 1 at 0x4022f0: file ../support/test-driver.c, line 110.
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program:
/export/build/gnu/tools-build/glibc-gitlab/build-x86_64-linux/sunrpc/tst-getmyaddr
--direct

Program received signal SIGSEGV, Segmentation fault.
_dl_lookup_symbol_x (undef_name=0x7ffff7ff416a "__vdso_clock_gettime", 
    undef_map=0x7ffff7ffe7b0, ref=0x7fffffffda98, symbol_scope=0x7ffff7ffeb48, 
    version=0x7fffffffdac0, type_class=0, flags=0, skip_map=0x0)
    at dl-lookup.c:929
929           && add_dependency (undef_map, current_value.m, flags) < 0)
(gdb) bt
#0  _dl_lookup_symbol_x (undef_name=0x7ffff7ff416a "__vdso_clock_gettime", 
    undef_map=0x7ffff7ffe7b0, ref=0x7fffffffda98, symbol_scope=0x7ffff7ffeb48, 
    version=0x7fffffffdac0, type_class=0, flags=0, skip_map=0x0)
    at dl-lookup.c:929
#1  0x00007ffff7fd400f in dl_vdso_vsym (
    name=0x7ffff7ff416a "__vdso_clock_gettime")
    at ../sysdeps/unix/sysv/linux/dl-vdso.h:52
#2  setup_vdso_pointers () at ../sysdeps/unix/sysv/linux/dl-vdso-setup.h:30
#3  dl_main (phdr=<optimized out>, phnum=13, user_entry=<optimized out>, 
    auxv=0x7fffffffdfe8) at rtld.c:1620
#4  0x00007ffff7feac47 in _dl_sysdep_start (
    start_argptr=start_argptr@entry=0x7fffffffddf0, 
    dl_main=dl_main@entry=0x7ffff7fd2eb0 <dl_main>) at ../elf/dl-sysdep.c:252
#5  0x00007ffff7ff1fd5 in _dl_start_final (arg=0x7fffffffddf0) at rtld.c:485
#6  _dl_start (arg=0x7fffffffddf0) at rtld.c:578
#7  0x00007ffff7fd2058 in _start () at rtld.c:12
#8  0x0000000000000002 in ?? ()
#9  0x00007fffffffe145 in ?? ()
#10 0x00007fffffffe198 in ?? ()
#11 0x0000000000000000 in ?? ()
(gdb)

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

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2020-12-08  0:46 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-02 23:06 [Bug dynamic-link/27004] New: ld.so is miscompiled by GCC 11 hjl.tools at gmail dot com
2020-12-02 23:51 ` [Bug dynamic-link/27004] " hjl.tools at gmail dot com
2020-12-03  3:47 ` carlos at redhat dot com
2020-12-03 10:16 ` fweimer at redhat dot com
2020-12-03 11:24 ` jakub at redhat dot com
2020-12-03 12:37 ` hjl.tools at gmail dot com
2020-12-03 12:43 ` fweimer at redhat dot com
2020-12-03 12:51 ` jakub at redhat dot com
2020-12-03 12:51 ` hjl.tools at gmail dot com
2020-12-03 12:52 ` fweimer at redhat dot com
2020-12-03 12:53 ` fweimer at redhat dot com
2020-12-08  0:46 ` hjl.tools at gmail dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).