public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "tg at mirbsd dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/111165] [13 regression] builtin strchr miscompiles on Debian/x32 with dietlibc
Date: Sat, 26 Aug 2023 20:49:31 +0000	[thread overview]
Message-ID: <bug-111165-4-Y2bg4RNJXo@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-111165-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #6 from Thorsten Glaser <tg at mirbsd dot org> ---
dietlibc’s strlen is a horrid SSE nightmare that doesn’t call (f)emms, but it
has a switch global variable __valgrind, if setting that to 1 it uses a very
traditional loop instead, and the registers before/after strlen also match
(only rax has changed), so I’m at a loss.

Changing the line to…

sp += strlen(sp) + 1;

… doesn’t make the problem go away, for some reason. Replacing it with…

while (*sp++) ;

… however *does* make it go away.

I’ll paste a screenlog of single-stepping through the valgrind version of the
code below (http://www.mirbsd.org/cvs.cgi/contrib/hosted/tg/.gdbinit?rev=HEAD
has the helpful t macro):

Breakpoint 1, expand (ccp=<optimized out>, wp=wp@entry=0xffffcdf0, f=f@entry=0)
at eval.c:401
401     asm volatile("nop"); //401
(gdb) t
=> 0x40a63f <expand+1875>:      nop

402                                     sp = cstrchr(sp, '\0') + 1;
rax            0xf7ff790e          4160715022
rbx            0x0                 0
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xffffcd5c          4294954332
rbp            0xf7ff790c          4160715020
rsp            0xffffcc90          4294954128
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x40a640            4236864
eflags         0x287               [ CF PF SF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x40a640 <expand+1876>:      mov    ebx,DWORD PTR [rsp+0x48]
   0x40a644 <expand+1880>:      mov    rdi,rbx
   0x40a647 <expand+1883>:      call   0x42cc7e <strlen>
(gdb) t
=> 0x40a640 <expand+1876>:      mov    ebx,DWORD PTR [rsp+0x48]

0x0040a644      402                                     sp = cstrchr(sp, '\0')
+ 1;
rax            0xf7ff790e          4160715022
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xffffcd5c          4294954332
rbp            0xf7ff790c          4160715020
rsp            0xffffcc90          4294954128
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x40a644            4236868
eflags         0x287               [ CF PF SF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x40a644 <expand+1880>:      mov    rdi,rbx
   0x40a647 <expand+1883>:      call   0x42cc7e <strlen>
   0x40a64c <expand+1888>:      mov    ecx,DWORD PTR [rsp+0x48]
(gdb) t
=> 0x40a644 <expand+1880>:      mov    rdi,rbx

0x0040a647      402                                     sp = cstrchr(sp, '\0')
+ 1;
rax            0xf7ff790e          4160715022
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc90          4294954128
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x40a647            4236871
eflags         0x287               [ CF PF SF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x40a647 <expand+1883>:      call   0x42cc7e <strlen>
   0x40a64c <expand+1888>:      mov    ecx,DWORD PTR [rsp+0x48]
   0x40a650 <expand+1892>:      lea    r12d,[rcx+rax*1+0x1]
(gdb) t
=> 0x40a647 <expand+1883>:      call   0x42cc7e <strlen>

0x0042cc7e in strlen ()
rax            0xf7ff790e          4160715022
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42cc7e            4377726
eflags         0x287               [ CF PF SF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42cc7e <strlen>:   xor    eax,eax
   0x42cc80 <strlen+2>: or     eax,DWORD PTR [rip+0x74ee]        # 0x434174
<__valgrind>
   0x42cc86 <strlen+8>: jne    0x42ccca <strlen+76>
(gdb) t
=> 0x42cc7e <strlen>:   xor    eax,eax

0x0042cc80 in strlen ()
rax            0x0                 0
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42cc80            4377728
eflags         0x246               [ PF ZF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42cc80 <strlen+2>: or     eax,DWORD PTR [rip+0x74ee]        # 0x434174
<__valgrind>
   0x42cc86 <strlen+8>: jne    0x42ccca <strlen+76>
   0x42cc88 <strlen+10>:        mov    rax,rdi
(gdb) t
=> 0x42cc80 <strlen+2>: or     eax,DWORD PTR [rip+0x74ee]        # 0x434174
<__valgrind>

0x0042cc86 in strlen ()
rax            0x1                 1
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42cc86            4377734
eflags         0x202               [ IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42cc86 <strlen+8>: jne    0x42ccca <strlen+76>
   0x42cc88 <strlen+10>:        mov    rax,rdi
   0x42cc8b <strlen+13>:        mov    ecx,edi
(gdb) t
=> 0x42cc86 <strlen+8>: jne    0x42ccca <strlen+76>

0x0042ccca in strlen ()
rax            0x1                 1
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccca            4377802
eflags         0x202               [ IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccca <strlen+76>:        mov    rax,rdi
   0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0
   0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
(gdb) t
=> 0x42ccca <strlen+76>:        mov    rax,rdi

0x0042cccd in strlen ()
rax            0xf7ff790e          4160715022
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42cccd            4377805
eflags         0x202               [ IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0
   0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
   0x42ccd2 <strlen+84>:        inc    rax
(gdb) t
=> 0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0

0x0042ccd0 in strlen ()
rax            0xf7ff790e          4160715022
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd0            4377808
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
   0x42ccd2 <strlen+84>:        inc    rax
   0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
(gdb) t
=> 0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>

0x0042ccd2 in strlen ()
rax            0xf7ff790e          4160715022
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd2            4377810
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd2 <strlen+84>:        inc    rax
   0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
   0x42ccd7 <strlen+89>:        sub    rax,rdi
(gdb) t
=> 0x42ccd2 <strlen+84>:        inc    rax

0x0042ccd5 in strlen ()
rax            0xf7ff790f          4160715023
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd5            4377813
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
   0x42ccd7 <strlen+89>:        sub    rax,rdi
   0x42ccda <strlen+92>:        ret
(gdb) t
=> 0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>

0x0042cccd in strlen ()
rax            0xf7ff790f          4160715023
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42cccd            4377805
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0
   0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
   0x42ccd2 <strlen+84>:        inc    rax
(gdb) t
=> 0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0

0x0042ccd0 in strlen ()
rax            0xf7ff790f          4160715023
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd0            4377808
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
   0x42ccd2 <strlen+84>:        inc    rax
   0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
(gdb) t
=> 0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>

0x0042ccd2 in strlen ()
rax            0xf7ff790f          4160715023
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd2            4377810
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd2 <strlen+84>:        inc    rax
   0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
   0x42ccd7 <strlen+89>:        sub    rax,rdi
(gdb) t
=> 0x42ccd2 <strlen+84>:        inc    rax

0x0042ccd5 in strlen ()
rax            0xf7ff7910          4160715024
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd5            4377813
eflags         0x212               [ AF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
   0x42ccd7 <strlen+89>:        sub    rax,rdi
   0x42ccda <strlen+92>:        ret
(gdb) t
=> 0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>

0x0042cccd in strlen ()
rax            0xf7ff7910          4160715024
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42cccd            4377805
eflags         0x212               [ AF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0
   0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
   0x42ccd2 <strlen+84>:        inc    rax
(gdb) t
=> 0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0

0x0042ccd0 in strlen ()
rax            0xf7ff7910          4160715024
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd0            4377808
eflags         0x202               [ IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
   0x42ccd2 <strlen+84>:        inc    rax
   0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
(gdb) t
=> 0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>

0x0042ccd2 in strlen ()
rax            0xf7ff7910          4160715024
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd2            4377810
eflags         0x202               [ IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd2 <strlen+84>:        inc    rax
   0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
   0x42ccd7 <strlen+89>:        sub    rax,rdi
(gdb) t
=> 0x42ccd2 <strlen+84>:        inc    rax

0x0042ccd5 in strlen ()
rax            0xf7ff7911          4160715025
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd5            4377813
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
   0x42ccd7 <strlen+89>:        sub    rax,rdi
   0x42ccda <strlen+92>:        ret
(gdb) t
=> 0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>

0x0042cccd in strlen ()
rax            0xf7ff7911          4160715025
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42cccd            4377805
eflags         0x206               [ PF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0
   0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
   0x42ccd2 <strlen+84>:        inc    rax
(gdb) t
=> 0x42cccd <strlen+79>:        cmp    BYTE PTR [rax],0x0

0x0042ccd0 in strlen ()
rax            0xf7ff7911          4160715025
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd0            4377808
eflags         0x246               [ PF ZF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>
   0x42ccd2 <strlen+84>:        inc    rax
   0x42ccd5 <strlen+87>:        jmp    0x42cccd <strlen+79>
(gdb) t
=> 0x42ccd0 <strlen+82>:        je     0x42ccd7 <strlen+89>

0x0042ccd7 in strlen ()
rax            0xf7ff7911          4160715025
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccd7            4377815
eflags         0x246               [ PF ZF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccd7 <strlen+89>:        sub    rax,rdi
   0x42ccda <strlen+92>:        ret
   0x42ccdb <strncmp>:  xor    ecx,ecx
(gdb) t
=> 0x42ccd7 <strlen+89>:        sub    rax,rdi

0x0042ccda in strlen ()
rax            0x3                 3
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc88          4294954120
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x42ccda            4377818
eflags         0x216               [ PF AF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x42ccda <strlen+92>:        ret
   0x42ccdb <strncmp>:  xor    ecx,ecx
   0x42ccdd <strncmp+2>:        cmp    edx,ecx
(gdb) t
=> 0x42ccda <strlen+92>:        ret

0x0040a64c in expand (ccp=<optimized out>, wp=wp@entry=0xffffcdf0, f=f@entry=0)
at eval.c:402
402                                     sp = cstrchr(sp, '\0') + 1;
rax            0x3                 3
rbx            0xf7ff790e          4160715022
rcx            0x0                 0
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc90          4294954128
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x40a64c            4236876
eflags         0x216               [ PF AF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x40a64c <expand+1888>:      mov    ecx,DWORD PTR [rsp+0x48]
   0x40a650 <expand+1892>:      lea    r12d,[rcx+rax*1+0x1]
   0x40a655 <expand+1897>:      nop
(gdb) t
=> 0x40a64c <expand+1888>:      mov    ecx,DWORD PTR [rsp+0x48]

0x0040a650      402                                     sp = cstrchr(sp, '\0')
+ 1;
rax            0x3                 3
rbx            0xf7ff790e          4160715022
rcx            0xf7ff790e          4160715022
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc90          4294954128
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0x2                 2
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x40a650            4236880
eflags         0x216               [ PF AF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x40a650 <expand+1892>:      lea    r12d,[rcx+rax*1+0x1]
   0x40a655 <expand+1897>:      nop
   0x40a656 <expand+1898>:      movzx  ecx,BYTE PTR [ebp+0x2]
(gdb) t
=> 0x40a650 <expand+1892>:      lea    r12d,[rcx+rax*1+0x1]

405     asm volatile("nop"); //403
rax            0x3                 3
rbx            0xf7ff790e          4160715022
rcx            0xf7ff790e          4160715022
rdx            0xffffff81          4294967169
rsi            0x98                152
rdi            0xf7ff790e          4160715022
rbp            0xf7ff790c          4160715020
rsp            0xffffcc90          4294954128
r8             0xa0                160
r9             0x3                 3
r10            0x0                 0
r11            0x206               518
r12            0xf7ff7912          4160715026
r13            0xffffd1b4          4294955444
r14            0xf7ff510c          4160704780
r15            0x0                 0
rip            0x40a655            4236885
eflags         0x216               [ PF AF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x2b                43
es             0x2b                43
fs             0x0                 0
gs             0x0                 0

=> 0x40a655 <expand+1897>:      nop
   0x40a656 <expand+1898>:      movzx  ecx,BYTE PTR [ebp+0x2]
   0x40a65b <expand+1903>:      test   ecx,ecx

  parent reply	other threads:[~2023-08-26 20:49 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-26 18:17 [Bug target/111165] New: " tg at mirbsd dot org
2023-08-26 18:20 ` [Bug target/111165] " pinskia at gcc dot gnu.org
2023-08-26 18:21 ` pinskia at gcc dot gnu.org
2023-08-26 19:36 ` tg at mirbsd dot org
2023-08-26 20:03 ` tg at mirbsd dot org
2023-08-26 20:21 ` tg at mirbsd dot org
2023-08-26 20:49 ` tg at mirbsd dot org [this message]
2023-08-26 21:18 ` tg at mirbsd dot org
2023-08-28  7:25 ` rguenth at gcc dot gnu.org
2023-08-28 14:22 ` tg at mirbsd dot org
2023-08-28 14:41 ` tg at mirbsd dot org
2023-08-28 14:46 ` tg at mirbsd dot org
2023-08-28 14:57 ` tg at mirbsd dot org
2023-08-28 15:02 ` tg at mirbsd dot org
2023-08-28 15:26 ` ubizjak at gmail dot com
2023-08-28 15:44 ` hjl.tools at gmail dot com
2023-08-28 16:08 ` tg at mirbsd dot org
2023-08-28 16:09 ` tg at mirbsd dot org
2023-08-28 16:38 ` tg at mirbsd dot org
2024-05-21  9:16 ` jakub at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-111165-4-Y2bg4RNJXo@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).