From owner-freebsd-hackers@FreeBSD.ORG Thu Apr 5 09:03:00 2007 Return-Path: X-Original-To: freebsd-hackers@FreeBSD.org Delivered-To: freebsd-hackers@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A857B16A402 for ; Thu, 5 Apr 2007 09:03:00 +0000 (UTC) (envelope-from nkoch@demig.de) Received: from server.absolute-media.de (server.absolute-media.de [213.239.231.9]) by mx1.freebsd.org (Postfix) with ESMTP id 6846113C44C for ; Thu, 5 Apr 2007 09:03:00 +0000 (UTC) (envelope-from nkoch@demig.de) Received: from localhost (unknown [127.0.0.1]) by server.absolute-media.de (Postfix) with ESMTP id 947BB13C185 for ; Thu, 5 Apr 2007 11:02:56 +0200 (CEST) Received: from server.absolute-media.de ([127.0.0.1]) by localhost (server [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15988-03 for ; Thu, 5 Apr 2007 11:02:50 +0200 (CEST) Received: from firewall.demig (p5083975F.dip0.t-ipconnect.de [80.131.151.95]) by server.absolute-media.de (Postfix) with ESMTP id 092D9133883 for ; Thu, 5 Apr 2007 11:02:49 +0200 (CEST) Received: from [192.168.1.72] (ws-ew-3.demig.intra [192.168.1.72]) by firewall.demig (8.14.0/8.14.0) with ESMTP id l358wfV5053373 for ; Thu, 5 Apr 2007 10:58:41 +0200 (CEST) (envelope-from nkoch@demig.de) Message-ID: <4614BA41.7080902@demig.de> Date: Thu, 05 Apr 2007 08:58:41 +0000 From: Norbert Koch Organization: demig Prozessautomatisierung GmbH User-Agent: Thunderbird 1.5.0.10 (Windows/20070221) MIME-Version: 1.0 To: freebsd-hackers@FreeBSD.org Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at absolute-media.de Cc: Subject: gdb macros xp and xxp X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Apr 2007 09:03:00 -0000 Hello, for learning about gdb macros I looked through gdbinit-1.i386. ( or is there some secret gdb manual that *explains* macros? :-) The macros xp and xxp calculate the number of possible arguments as: ((*(int*)$ebp)-(int)$ebp)/4-4 Let's see (assuming "char* ebp"): *ebp : saved ebp from previous frame *(ebp+4) : saved eip *(ebp+8): first parameter (if any) *((*ebp)-4): saved register or local variable from previous frame Right? What I do not understand is the subtraction of 4 (I expected 2). When disassembling through different portions of the kernel code and userland programs, I found pushing of none up to three extra register (ebx, esi, ebp). But that depends heavyly on compiler options, doesn't it? So, is it just a guess that there are two register variables or am I missing something? Any comments? Norbert