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]="."; +}