summaryrefslogtreecommitdiff
path: root/devtools/bin/check_gcc_compile.pl
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/bin/check_gcc_compile.pl')
-rw-r--r--devtools/bin/check_gcc_compile.pl23
1 files changed, 23 insertions, 0 deletions
diff --git a/devtools/bin/check_gcc_compile.pl b/devtools/bin/check_gcc_compile.pl
new file mode 100644
index 0000000..4d70637
--- /dev/null
+++ b/devtools/bin/check_gcc_compile.pl
@@ -0,0 +1,23 @@
+#! perl
+
+# scan all .o files for illegal instructions from passing aggregates to varargs functions.
+
+use File::Find;
+
+find( \&CheckFile, "." );
+
+sub CheckFile
+ {
+ return unless (/\.o$/ );
+ open( DIS, "objdump --disassemble -C $_|" ) || die "can't process $_";
+ while( <DIS> )
+ {
+ $symbol = $1 if ( /^[0-9]+ \<(.*)\>:/ );
+ if ( /\s+ud2a/ )
+ {
+ print "Illegal instruction in $symbol in ", $File::Find::name, "\n";
+ }
+
+ }
+
+ }