diff options
author | Timothy B. Terriberry <tterribe@xiph.org> | 2011-07-19 12:13:18 -0700 |
---|---|---|
committer | Timothy B. Terriberry <tterribe@xiph.org> | 2011-07-21 11:46:14 -0700 |
commit | 1647f00c2941b47b624fcb330aa63a933b3324ed (patch) | |
tree | 2d28b130aace6b01e6f0d208362adb0e88453574 /build/make/ads2gas.pl | |
parent | b2d9700f5313770957878fa36f9971c367f479df (diff) | |
download | libvpx-1647f00c2941b47b624fcb330aa63a933b3324ed.tar.gz |
Add .size directive to ARM asm functions.
This makes them show up properly in debugging tools like gdb and
valgrind.
Change-Id: I0c72548a1090de88ba226314e5efe63360b7e07f
Diffstat (limited to 'build/make/ads2gas.pl')
-rwxr-xr-x | build/make/ads2gas.pl | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/build/make/ads2gas.pl b/build/make/ads2gas.pl index be4658253..a9532d319 100755 --- a/build/make/ads2gas.pl +++ b/build/make/ads2gas.pl @@ -21,6 +21,9 @@ print "@ This file was created from a .asm file\n"; print "@ using the ads2gas.pl script.\n"; print "\t.equ DO1STROUNDING, 0\n"; +# Stack of procedure names. +@proc_stack = (); + while (<STDIN>) { # Load and store alignment @@ -133,9 +136,23 @@ while (<STDIN>) # Strip PRESERVE8 s/\sPRESERVE8/@ PRESERVE8/g; - # Strip PROC and ENDPROC - s/\sPROC/@/g; - s/\sENDP/@/g; + # Use PROC and ENDP to give the symbols a .size directive. + # This makes them show up properly in debugging tools like gdb and valgrind. + if (/\bPROC\b/) + { + my $proc; + /^_([\.0-9A-Z_a-z]\w+)\b/; + $proc = $1; + push(@proc_stack, $proc) if ($proc); + s/\bPROC\b/@ $&/; + } + if (/\bENDP\b/) + { + my $proc; + s/\bENDP\b/@ $&/; + $proc = pop(@proc_stack); + $_ = "\t.size $proc, .-$proc".$_ if ($proc); + } # EQU directive s/(.*)EQU(.*)/.equ $1, $2/; |