Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux...
[linux-2.6] / scripts / makelst
1 #!/bin/sh
2 # A script to dump mixed source code & assembly
3 # with correct relocations from System.map
4 # Requires the following lines in makefile:
5 #%.lst: %.c
6 #       $(CC) $(c_flags) -g -c -o $*.o $< &&
7 #       $(srctree)/scripts/makelst $*.o System.map $(OBJDUMP) > $@
8 #
9 # Copyright (C) 2000 IBM Corporation
10 # Author(s): DJ Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
11 #            William Stearns <wstearns@pobox.com>
12 #
13
14 # awk style field access
15 field() {
16   shift $1 ; echo $1
17 }
18
19 t1=`$3 --syms $1 | grep .text | grep -m1 " F "`
20 if [ -n "$t1" ]; then
21   t2=`field 6 $t1`
22   if [ ! -r $2 ]; then
23     echo "No System.map" >&2
24   else
25     t3=`grep $t2 $2`
26     t4=`field 1 $t3`
27     t5=`field 1 $t1`
28     t6=`printf "%lu" $((0x$t4 - 0x$t5))`
29   fi
30 fi
31 $3 -r --source --adjust-vma=${t6:-0} $1