From 8528e918e24c22779e6bf802794e99f1418ec4ba Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Tue, 31 Mar 2009 21:39:16 -0400 Subject: libsandbox: enable tracing for multiple personalities Initial support for tracing non-default personalities. For example, tracing a 32bit binary from a 64bit environment. URL: http://bugs.gentoo.org/264399 Signed-off-by: Mike Frysinger Reported-by: Patrick Lauer --- scripts/gen_trace_header.awk | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) (limited to 'scripts') diff --git a/scripts/gen_trace_header.awk b/scripts/gen_trace_header.awk index 6b99966..75f4f02 100644 --- a/scripts/gen_trace_header.awk +++ b/scripts/gen_trace_header.awk @@ -1,28 +1,47 @@ BEGIN { COUNT = split(" " SYMBOLS_LIST, SYMBOLS); + + if (MODE == "gen") { + for (x in SYMBOLS) { + s = SYMBOLS[x] + print "SB_" s " = SYS_" s + } + exit(0); + } } +function out(name, val) { - if ($1 != "#define" || $2 !~ /^SYS_/) + name = toupper(name) + print "#define SB_SYS" syscall_prefix "_" name " " val; + print "S(" name ")"; +} + +{ + # found: SB_func = # + # not found: SB_func = SYS_func + if ($1 !~ /^SB_/) + next; + if ($3 ~ /^SYS_/) next; - sub(/^SYS_/, "", $2); + sub(/^SB_/, "", $1); for (i = 1; i <= COUNT; ++i) - if (SYMBOLS[i] == $2) { + if (SYMBOLS[i] == $1) { SYMBOLS[i] = ""; break; } - print "S(" $2 ")"; + out($1, $3); } END { - for (x in SYMBOLS) { - s = SYMBOLS[x]; - if (s != "") { - print "#define SYS_" s " SB_NR_UNDEF"; - print "S(" s ")"; + if (MODE != "gen") { + for (x in SYMBOLS) { + s = SYMBOLS[x]; + if (s != "") + out(s, "SB_NR_UNDEF"); } } } -- cgit v1.2.3-65-gdbad