Index | Thread | Search

From:
Alexander Bluhm <bluhm@openbsd.org>
Subject:
Re: ddb disassembler call
To:
Philip Guenther <guenther@gmail.com>
Cc:
tech@openbsd.org
Date:
Thu, 6 Jun 2024 02:54:39 +0200

Download raw body.

Thread
On Wed, Jun 05, 2024 at 12:00:27PM -0700, Philip Guenther wrote:
> On Wed, Jun 5, 2024 at 8:37???AM Alexander Bluhm <bluhm@openbsd.org> wrote:
> > -/*e8*/ { "call",  0, QUAD,  op1(Dl),     0 },
> > +/*e8*/ { "call",  0, LONG,  op1(Dl),     0 },
> >  /*e9*/ { "jmp",   0, NONE,  op1(Dl),     0 },
> 
> Shouldn't it be NONE like jmp?  Or maybe
>    "callq", 0, NONE
> to look better...

NONE also works

ddb>  x/i explicit_bzero+0x14,8
explicit_bzero+0x14:    xorl    %esi,%esi
explicit_bzero+0x16:    movq    %r14,%rdx
explicit_bzero+0x19:    call    memset
explicit_bzero+0x1e:    movq    %r15,%rdi
explicit_bzero+0x21:    movq    %r14,%rsi
explicit_bzero+0x24:    popq    %r14
explicit_bzero+0x26:    popq    %r15
explicit_bzero+0x28:    leave

objdump calls it callq, but the operand is only 4 bytes.
Why should there be a 'q' ?

Index: arch/amd64/amd64/db_disasm.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/arch/amd64/amd64/db_disasm.c,v
diff -u -p -r1.24 db_disasm.c
--- arch/amd64/amd64/db_disasm.c	22 Apr 2023 18:26:17 -0000	1.24
+++ arch/amd64/amd64/db_disasm.c	6 Jun 2024 00:38:32 -0000
@@ -793,7 +793,7 @@ struct inst db_inst_table[256] = {
 /*e6*/	{ "out",   0, BYTE,  op2(A, Ib),  0 },
 /*e7*/	{ "out",   0, LONG,  op2(A, Ib) , 0 },
 
-/*e8*/	{ "call",  0, QUAD,  op1(Dl),     0 },
+/*e8*/	{ "call",  0, NONE,  op1(Dl),     0 },
 /*e9*/	{ "jmp",   0, NONE,  op1(Dl),     0 },
 /*ea*/	{ "",      0, NONE,  op1(OS),     0 },
 /*eb*/	{ "jmp",   0, NONE,  op1(Db),     0 },