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

Reply via email to