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