Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jan 2012 19:52:19 -0700
From:      Shawn Webb <lattera@gmail.com>
To:        freebsd-stable@freebsd.org
Subject:   Re: Certain Registers in amd64 Unavailable to Developers
Message-ID:  <CADt0fhx4KRu5e61jghCaXf6gEYCEiRC_chvkHywjufEKxvyTSg@mail.gmail.com>
In-Reply-To: <CADt0fhzK3CiHNuXE%2BbQoUXetkj8J=SDwfqOpvy%2B5OVmpBKDheQ@mail.gmail.com>
References:  <CADt0fhzK3CiHNuXE%2BbQoUXetkj8J=SDwfqOpvy%2B5OVmpBKDheQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Nevermind. It's rdi and rsi that I should use. Sorry for the wasted
bandwidth. ;)

Thanks,

Shawn

On Mon, Jan 16, 2012 at 7:41 PM, Shawn Webb <lattera@gmail.com> wrote:
> Hey stable@,
>
> First off, I'm not too sure if this is the right mailing list (maybe
> freebsd-hackers@?). Sorry if it is. This is just the mailing list I
> subscribe to, so I thought I'd start here.
>
> Anyways, I'm looking at the regs struct (machine/reg.h) on FreeBSD
> 9-stable amd64. It appears that struct doesn't contain registers such
> as edi and esi. However, FreeBSD amd64's syscall calling convention
> mandates their use. I'm using ptrace to get and set the registers.
> Anyone know how to grab those registers?
>
> Sample code that shows using edi, esi on amd64 and calls the exit syscall=
:
>
> [shawn@fbsd-sec ~/tmp]$ uname -a
> FreeBSD fbsd-sec 9.0-PRERELEASE FreeBSD 9.0-PRERELEASE #1: Thu Dec 15
> 06:17:41 MST 2011 =A0 =A0 shawn@fbsd-sec:/usr/obj/usr/src/sys/SEC =A0amd6=
4
> [shawn@fbsd-sec ~/tmp]$ gdb ./test
> GNU gdb 6.1.1 [FreeBSD]
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you =
are
> welcome to change it and/or distribute copies of it under certain conditi=
ons.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. =A0Type "show warranty" for deta=
ils.
> This GDB was configured as "amd64-marcel-freebsd"...(no debugging
> symbols found)...
> (gdb) disass _start
> Dump of assembler code for function _start:
> 0x0000000000400080 <_start+0>: =A0mov =A0 =A0$0x1,%edi
> 0x0000000000400085 <_start+5>: =A0mov =A0 =A0$0x5,%esi
> 0x000000000040008a <_start+10>: syscall
> End of assembler dump.
> (gdb) run
> Starting program: /usr/home/shawn/tmp/test
>
> Program exited with code 05.
> (gdb) exit
> Undefined command: "exit". =A0Try "help".
> (gdb) [shawn@fbsd-sec ~/tmp]$ file test
> test: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD),
> statically linked, not stripped
>
> Thanks,
>
> Shawn



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADt0fhx4KRu5e61jghCaXf6gEYCEiRC_chvkHywjufEKxvyTSg>