[llvm-commits] [llvm] r113779 - /llvm/trunk/utils/test_debuginfo.pl
Devang Patel
dpatel at apple.com
Mon Sep 13 13:42:15 PDT 2010
Author: dpatel
Date: Mon Sep 13 15:42:15 2010
New Revision: 113779
URL: http://llvm.org/viewvc/llvm-project?rev=113779&view=rev
Log:
Add little test script to check debug info.
Added:
llvm/trunk/utils/test_debuginfo.pl (with props)
Added: llvm/trunk/utils/test_debuginfo.pl
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/test_debuginfo.pl?rev=113779&view=auto
==============================================================================
--- llvm/trunk/utils/test_debuginfo.pl (added)
+++ llvm/trunk/utils/test_debuginfo.pl Mon Sep 13 15:42:15 2010
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+#
+# This script tests debugging information generated by a compiler.
+# Input arguments
+# - Input source program. Usually this source file is decorated using
+# special comments to communicate debugger commands.
+# - Executable file. This file is generated by the compiler.
+#
+# This perl script extracts debugger commands from input source program
+# comments in a script. A debugger is used to load the executable file
+# and run the script generated from source program comments. Finally,
+# the debugger output is checked, using FileCheck, to validate
+# debugging information.
+
+use File::Basename;
+
+my $testcase_file = $ARGV[0];
+my $executable_file = $ARGV[1];
+
+my $input_filename = basename $testcase_file;
+my $output_dir = dirname $executable_file;
+
+my $debugger_script_file = "$output_dir/$input_filename.gdb.scirpt";
+my $output_file = "$output_dir/$input_filename.gdb.output";
+
+# Extract debugger commands from testcase. They are marked with DEBUGGER:
+# at the beginnign of a comment line.
+open(INPUT, $testcase_file);
+open(OUTPUT, ">$debugger_script_file");
+while(<INPUT>) {
+ my($line) = $_;
+ $i = index($line, "DEBUGGER:");
+ if ( $i >= 0) {
+ $l = length("DEBUGGER:");
+ $s = substr($line, $i + $l);
+ print OUTPUT "$s";
+ }
+}
+print OUTPUT "\n";
+print OUTPUT "quit\n";
+close(INPUT);
+close(OUTPUT);
+
+# setup debugger and debugger options to run a script.
+my $my_debugger = $ENV{'DEBUGGER'};
+if (!$my_debugger) {
+ $my_debugger = "gdb";
+}
+my $debugger_options = "-q -batch -n -x";
+
+# run debugger and capture output.
+system("$my_debugger $debugger_options $debugger_script_file $executable_file >& $output_file");
+
+# validate output.
+system("FileCheck", "-input-file", "$output_file", "$testcase_file");
+if ($?>>8 == 1) {
+ exit 1;
+}
+else {
+ exit 0;
+}
Propchange: llvm/trunk/utils/test_debuginfo.pl
------------------------------------------------------------------------------
svn:executable = *
More information about the llvm-commits
mailing list