locate.pl revision 59874
150659Snsayer#!/usr/bin/perl 259874Speter# $FreeBSD: head/sys/pci/locate.pl 59874 2000-05-01 20:32:07Z peter $ 310641Sse 410641Sse$errpos = hex($ARGV[0])/4; 510641Sse$ofs=0; 610641Sse 710641Sseopen (INPUT, "cc -E ncr.c 2>/dev/null |"); 810641Sse 910641Ssewhile ($_ = <INPUT>) 1010641Sse{ 1110641Sse last if /^struct script \{/; 1210641Sse} 1310641Sse 1410641Ssewhile ($_ = <INPUT>) 1510641Sse{ 1610641Sse last if /^\}\;/; 1710641Sse ($label, $size) = /ncrcmd\s+(\S+)\s+\[([^]]+)/; 1810641Sse $size = eval($size); 1910641Sse if ($label) { 2010641Sse if ($errpos) { 2110641Sse if ($ofs + $size > $errpos) { 2210641Sse printf ("%4x: %s\n", $ofs * 4, $label); 2310641Sse printf ("%4x: %s + %d\n", $errpos * 4, $label, $errpos - $ofs); 2410641Sse last; 2510641Sse } 2610641Sse $ofs += $size; 2710641Sse } else { 2810641Sse printf ("%4x: %s\n", $ofs * 4, $label); 2910641Sse } 3010641Sse } 3110641Sse} 3210641Sse 33