Module Name: src
Committed By: matt
Date: Wed Aug 7 17:06:22 UTC 2013
Added Files:
src/sys/modules/arch/arm: kmodhide.awk kmodtramp.awk kmodwrap.awk
Log Message:
awk support scripts to generate trampolines in modules.
(adapted from previous LKM method).
<machine/asm.h> now has a KMODTRAMPOLINE macro to generate the trampoline
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 src/sys/modules/arch/arm/kmodhide.awk \
src/sys/modules/arch/arm/kmodtramp.awk \
src/sys/modules/arch/arm/kmodwrap.awk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Added files:
Index: src/sys/modules/arch/arm/kmodhide.awk
diff -u /dev/null src/sys/modules/arch/arm/kmodhide.awk:1.1
--- /dev/null Wed Aug 7 17:06:22 2013
+++ src/sys/modules/arch/arm/kmodhide.awk Wed Aug 7 17:06:22 2013
@@ -0,0 +1,5 @@
+# $NetBSD: kmodhide.awk,v 1.1 2013/08/07 17:06:22 matt Exp $
+
+substr($NF, 1, 7) == "__wrap_" {
+ print " --localize-symbol "$NF;
+}
Index: src/sys/modules/arch/arm/kmodtramp.awk
diff -u /dev/null src/sys/modules/arch/arm/kmodtramp.awk:1.1
--- /dev/null Wed Aug 7 17:06:22 2013
+++ src/sys/modules/arch/arm/kmodtramp.awk Wed Aug 7 17:06:22 2013
@@ -0,0 +1,18 @@
+# $NetBSD: kmodtramp.awk,v 1.1 2013/08/07 17:06:22 matt Exp $
+#
+BEGIN {
+ print "#include <machine/asm.h>"
+}
+
+$2 == "R_ARM_PC24" || $2 == "R_ARM_CALL" || $2 == "R_ARM_JUMP24" {
+ if (x[$3] != "")
+ next;
+ if (index($3, ".text") > 0)
+ next;
+ fn=$3
+ sub("__wrap_", "", fn)
+ if (fn == $3)
+ next;
+ print "KMODTRAMPOLINE("fn")"
+ x[$3]=".";
+}
Index: src/sys/modules/arch/arm/kmodwrap.awk
diff -u /dev/null src/sys/modules/arch/arm/kmodwrap.awk:1.1
--- /dev/null Wed Aug 7 17:06:22 2013
+++ src/sys/modules/arch/arm/kmodwrap.awk Wed Aug 7 17:06:22 2013
@@ -0,0 +1,10 @@
+# $NetBSD: kmodwrap.awk,v 1.1 2013/08/07 17:06:22 matt Exp $
+
+$2 == "R_ARM_PC24" || $2 == "R_ARM_CALL" || $2 == "R_ARM_JUMP24" {
+ if (x[$3] != "")
+ next;
+ if (index($3, ".text") > 0)
+ next
+ printf " --wrap="$3;
+ x[$3]=".";
+}