From owner-freebsd-stable@FreeBSD.ORG Tue Jan 17 02:41:33 2012 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DB8B4106564A for ; Tue, 17 Jan 2012 02:41:33 +0000 (UTC) (envelope-from lattera@gmail.com) Received: from mail-tul01m020-f182.google.com (mail-tul01m020-f182.google.com [209.85.214.182]) by mx1.freebsd.org (Postfix) with ESMTP id A73938FC0C for ; Tue, 17 Jan 2012 02:41:33 +0000 (UTC) Received: by obcwo16 with SMTP id wo16so2435198obc.13 for ; Mon, 16 Jan 2012 18:41:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=Tk+myG+mfKIX1Mr/k6E5Qur0wxMEVN7sI64T9oUYY4A=; b=s1MEVLgz151ArW5Ea6SzrjECI38RCDzPbBv27yqbo6AJqy8pLzPY3cL9JeEW4/WKFn ZGgwLBFJttUofH4alvQ0B7fOh2Lfjtg6tPJyn5MLCBAZjZHVTMV2u16clrj8bZygYBhG oFTNACRyLHeQHPQdE/2QOGdH9i1+SC5FXHCIk= MIME-Version: 1.0 Received: by 10.182.134.71 with SMTP id pi7mr13191602obb.77.1326768093118; Mon, 16 Jan 2012 18:41:33 -0800 (PST) Received: by 10.182.33.233 with HTTP; Mon, 16 Jan 2012 18:41:33 -0800 (PST) Date: Mon, 16 Jan 2012 19:41:33 -0700 Message-ID: From: Shawn Webb To: freebsd-stable@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 Subject: Certain Registers in amd64 Unavailable to Developers X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Jan 2012 02:41:33 -0000 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 shawn@fbsd-sec:/usr/obj/usr/src/sys/SEC amd64 [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 conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. 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>: mov $0x1,%edi 0x0000000000400085 <_start+5>: mov $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". Try "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