mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			47 lines
		
	
	
		
			1022 B
		
	
	
	
		
			Awk
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1022 B
		
	
	
	
		
			Awk
		
	
	
		
			Executable File
		
	
	
#!/bin/awk -f
 | 
						|
 | 
						|
# Copyright (C) 2000  Free Software Foundation
 | 
						|
 | 
						|
#    This file is part of libgcj.
 | 
						|
 | 
						|
# This software is copyrighted work licensed under the terms of the
 | 
						|
# Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
 | 
						|
# details.
 | 
						|
 | 
						|
# This script emulates a little of the functionality of addr2line for
 | 
						|
# those systems that don't have it.  The only command line argument is
 | 
						|
# an executable name.  The script reads hexadecimal addresses from
 | 
						|
# stdin and prints the corresponding symbol names to stdout.  The
 | 
						|
# addresses must begin with "0x" and be fully zero filled or this
 | 
						|
# won't work.
 | 
						|
 | 
						|
BEGIN {
 | 
						|
  object = ARGV[1];
 | 
						|
  ARGV[1] = "";
 | 
						|
 | 
						|
  while ("nm " object "| sort" | getline) {
 | 
						|
    if ($2 == "t" || $2 == "T") {
 | 
						|
      address[i] = "0x" $1; name[i] = $3;
 | 
						|
      i++;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  syms = i;
 | 
						|
}
 | 
						|
 | 
						|
{
 | 
						|
  lo = 0;
 | 
						|
  hi = syms - 1;
 | 
						|
 | 
						|
  while ((hi-1) > lo)
 | 
						|
    {
 | 
						|
      try = int ((hi + lo) / 2);
 | 
						|
      if ($0 < address[try])
 | 
						|
	hi = try;
 | 
						|
      else if ($0 >= address[try])
 | 
						|
	lo = try;
 | 
						|
    }
 | 
						|
  print name[lo] "\n"; fflush();
 | 
						|
}
 | 
						|
 | 
						|
    
 |