From: Alexander Bluhm Subject: Re: ddb disassembler call To: Philip Guenther Cc: tech@openbsd.org Date: Thu, 6 Jun 2024 02:54:39 +0200 On Wed, Jun 05, 2024 at 12:00:27PM -0700, Philip Guenther wrote: > On Wed, Jun 5, 2024 at 8:37???AM Alexander Bluhm 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 },