Home | History | Annotate | Line # | Download | only in gdbscripts
      1 # $NetBSD: msgbuf,v 1.5 2008/04/30 13:10:59 martin Exp $
      2 #
      3 # Copyright (c) 2000 The NetBSD Foundation, Inc.
      4 # All rights reserved.
      5 #
      6 # This code is derived from software contributed to The NetBSD Foundation
      7 # by John A. Hawkinson
      8 #
      9 # Redistribution and use in source and binary forms, with or without
     10 # modification, are permitted provided that the following conditions
     11 # are met:
     12 # 1. Redistributions of source code must retain the above copyright
     13 #    notice, this list of conditions and the following disclaimer.
     14 # 2. Redistributions in binary form must reproduce the above copyright
     15 #    notice, this list of conditions and the following disclaimer in the
     16 #    documentation and/or other materials provided with the distribution.
     17 #
     18 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     19 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     20 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     21 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     22 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     23 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     24 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     25 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     26 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     27 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     28 # POSSIBILITY OF SUCH DAMAGE.
     29 #
     30 
     31 define msgbuf
     32   set $bufx=*(long*)((char *)msgbufp+1*sizeof(long))
     33   set $bufr=*(long*)((char *)msgbufp+2*sizeof(long))
     34   set $bufs=*(long*)((char *)msgbufp+3*sizeof(long))
     35 
     36   printf "msgbufp %#x: bufx %d bufr %d bufs %d\n", msgbufp, $bufx, $bufr, $bufs
     37 
     38 # Dump the unread section
     39 #  set $l = $bufx - $bufr
     40 #  if ($l < 0)
     41 #    set $l = $bufs - $bufr
     42 #  end
     43 #  set $p = (long)msgbufp+4*sizeof(long)+$bufr
     44 #  set print elements $l
     45 #  x/s $p
     46 
     47 # Dump the whole thing
     48 # Presume each section is null-terminated. Possibly bad presumption?
     49   set $p = (long)msgbufp+4*sizeof(long)+$bufx
     50   set $l = $bufs - $bufx
     51   set print elements $l
     52   printf "Dumping %#x length %d\n", $p, $l
     53   # XXX (unsupported by gdb): printf "%.*s\n", $l, $p
     54   printf "%s\n", $p
     55   set $p = (long)msgbufp+4*sizeof(long)
     56   set $l = $bufx
     57   set print elements $l
     58   printf "Dumping %#x length %d\n", $p, $l
     59   # XXX (unsupported by gdb): printf "%.*s\n\n", $l, $p
     60   printf "%s\n\n", $p
     61 end
     62 
     63 document msgbuf
     64   Dump the kernel message buffer.
     65 end
     66