From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 469993858C41; Sat, 26 Aug 2023 20:49:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 469993858C41 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1693082972; bh=ZOhM6Q5imXlOf+EeYH2XLn5G+6sdw81/BPgoWWCsp+E=; h=From:To:Subject:Date:In-Reply-To:References:From; b=KjdheFbnlN+4JYy+xCBnBqygJ5nL6EiMaMVWCrS6bln/9jLJyNWoO4F6DmrbKH9RT BWdqnU8ayy5m2Y2UDwTCjiyGip9DAWLg09i1Mgmm6V1XweWbT8WD6suuuUStUq/UfZ 5+wz43qWHqm+KP34Ff4Br/sd/H39r0m0Dc3L60QI= From: "tg at mirbsd dot 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 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 13.2.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: tg at mirbsd dot org X-Bugzilla-Status: WAITING X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D111165 --- Comment #6 from Thorsten Glaser --- dietlibc=E2=80=99s strlen is a horrid SSE nightmare that doesn=E2=80=99t ca= ll (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=E2=80=99m at a loss. Changing the line to=E2=80=A6 sp +=3D strlen(sp) + 1; =E2=80=A6 doesn=E2=80=99t make the problem go away, for some reason. Replac= ing it with=E2=80=A6 while (*sp++) ; =E2=80=A6 however *does* make it go away. I=E2=80=99ll paste a screenlog of single-stepping through the valgrind vers= ion of the code below (http://www.mirbsd.org/cvs.cgi/contrib/hosted/tg/.gdbinit?rev=3D= HEAD has the helpful t macro): Breakpoint 1, expand (ccp=3D, wp=3Dwp@entry=3D0xffffcdf0, f= =3Df@entry=3D0) at eval.c:401 401 asm volatile("nop"); //401 (gdb) t =3D> 0x40a63f : nop 402 sp =3D 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 =3D> 0x40a640 : mov ebx,DWORD PTR [rsp+0x48] 0x40a644 : mov rdi,rbx 0x40a647 : call 0x42cc7e (gdb) t =3D> 0x40a640 : mov ebx,DWORD PTR [rsp+0x48] 0x0040a644 402 sp =3D 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 =3D> 0x40a644 : mov rdi,rbx 0x40a647 : call 0x42cc7e 0x40a64c : mov ecx,DWORD PTR [rsp+0x48] (gdb) t =3D> 0x40a644 : mov rdi,rbx 0x0040a647 402 sp =3D 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 =3D> 0x40a647 : call 0x42cc7e 0x40a64c : mov ecx,DWORD PTR [rsp+0x48] 0x40a650 : lea r12d,[rcx+rax*1+0x1] (gdb) t =3D> 0x40a647 : call 0x42cc7e 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 =3D> 0x42cc7e : xor eax,eax 0x42cc80 : or eax,DWORD PTR [rip+0x74ee] # 0x434174 <__valgrind> 0x42cc86 : jne 0x42ccca (gdb) t =3D> 0x42cc7e : 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 =3D> 0x42cc80 : or eax,DWORD PTR [rip+0x74ee] # 0x4341= 74 <__valgrind> 0x42cc86 : jne 0x42ccca 0x42cc88 : mov rax,rdi (gdb) t =3D> 0x42cc80 : or eax,DWORD PTR [rip+0x74ee] # 0x4341= 74 <__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 =3D> 0x42cc86 : jne 0x42ccca 0x42cc88 : mov rax,rdi 0x42cc8b : mov ecx,edi (gdb) t =3D> 0x42cc86 : jne 0x42ccca 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 =3D> 0x42ccca : mov rax,rdi 0x42cccd : cmp BYTE PTR [rax],0x0 0x42ccd0 : je 0x42ccd7 (gdb) t =3D> 0x42ccca : 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 =3D> 0x42cccd : cmp BYTE PTR [rax],0x0 0x42ccd0 : je 0x42ccd7 0x42ccd2 : inc rax (gdb) t =3D> 0x42cccd : 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 =3D> 0x42ccd0 : je 0x42ccd7 0x42ccd2 : inc rax 0x42ccd5 : jmp 0x42cccd (gdb) t =3D> 0x42ccd0 : je 0x42ccd7 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 =3D> 0x42ccd2 : inc rax 0x42ccd5 : jmp 0x42cccd 0x42ccd7 : sub rax,rdi (gdb) t =3D> 0x42ccd2 : 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 =3D> 0x42ccd5 : jmp 0x42cccd 0x42ccd7 : sub rax,rdi 0x42ccda : ret (gdb) t =3D> 0x42ccd5 : jmp 0x42cccd 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 =3D> 0x42cccd : cmp BYTE PTR [rax],0x0 0x42ccd0 : je 0x42ccd7 0x42ccd2 : inc rax (gdb) t =3D> 0x42cccd : 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 =3D> 0x42ccd0 : je 0x42ccd7 0x42ccd2 : inc rax 0x42ccd5 : jmp 0x42cccd (gdb) t =3D> 0x42ccd0 : je 0x42ccd7 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 =3D> 0x42ccd2 : inc rax 0x42ccd5 : jmp 0x42cccd 0x42ccd7 : sub rax,rdi (gdb) t =3D> 0x42ccd2 : 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 =3D> 0x42ccd5 : jmp 0x42cccd 0x42ccd7 : sub rax,rdi 0x42ccda : ret (gdb) t =3D> 0x42ccd5 : jmp 0x42cccd 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 =3D> 0x42cccd : cmp BYTE PTR [rax],0x0 0x42ccd0 : je 0x42ccd7 0x42ccd2 : inc rax (gdb) t =3D> 0x42cccd : 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 =3D> 0x42ccd0 : je 0x42ccd7 0x42ccd2 : inc rax 0x42ccd5 : jmp 0x42cccd (gdb) t =3D> 0x42ccd0 : je 0x42ccd7 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 =3D> 0x42ccd2 : inc rax 0x42ccd5 : jmp 0x42cccd 0x42ccd7 : sub rax,rdi (gdb) t =3D> 0x42ccd2 : 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 =3D> 0x42ccd5 : jmp 0x42cccd 0x42ccd7 : sub rax,rdi 0x42ccda : ret (gdb) t =3D> 0x42ccd5 : jmp 0x42cccd 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 =3D> 0x42cccd : cmp BYTE PTR [rax],0x0 0x42ccd0 : je 0x42ccd7 0x42ccd2 : inc rax (gdb) t =3D> 0x42cccd : 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 =3D> 0x42ccd0 : je 0x42ccd7 0x42ccd2 : inc rax 0x42ccd5 : jmp 0x42cccd (gdb) t =3D> 0x42ccd0 : je 0x42ccd7 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 =3D> 0x42ccd7 : sub rax,rdi 0x42ccda : ret 0x42ccdb : xor ecx,ecx (gdb) t =3D> 0x42ccd7 : 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 =3D> 0x42ccda : ret 0x42ccdb : xor ecx,ecx 0x42ccdd : cmp edx,ecx (gdb) t =3D> 0x42ccda : ret 0x0040a64c in expand (ccp=3D, wp=3Dwp@entry=3D0xffffcdf0, f= =3Df@entry=3D0) at eval.c:402 402 sp =3D 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 =3D> 0x40a64c : mov ecx,DWORD PTR [rsp+0x48] 0x40a650 : lea r12d,[rcx+rax*1+0x1] 0x40a655 : nop (gdb) t =3D> 0x40a64c : mov ecx,DWORD PTR [rsp+0x48] 0x0040a650 402 sp =3D 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 =3D> 0x40a650 : lea r12d,[rcx+rax*1+0x1] 0x40a655 : nop 0x40a656 : movzx ecx,BYTE PTR [ebp+0x2] (gdb) t =3D> 0x40a650 : 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 =3D> 0x40a655 : nop 0x40a656 : movzx ecx,BYTE PTR [ebp+0x2] 0x40a65b : test ecx,ecx=