summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authordzwdz2022-06-30 17:37:15 +0200
committerdzwdz2022-06-30 17:37:15 +0200
commit0b152c926f3dc27ed736898b19d4653bc1a016fe (patch)
tree3511a377b8dda2d84d71afc010ee72a2215d9280 /tools
parent63c28bf42033972c0471cb9843581d4e1814140c (diff)
syscall_wrappers: generate casts so the compiler doesn't complain
Diffstat (limited to 'tools')
-rw-r--r--tools/syscall_wrappers.awk10
1 files changed, 8 insertions, 2 deletions
diff --git a/tools/syscall_wrappers.awk b/tools/syscall_wrappers.awk
index c1f980e..12cc233 100644
--- a/tools/syscall_wrappers.awk
+++ b/tools/syscall_wrappers.awk
@@ -14,7 +14,10 @@ BEGIN {
sub(/;/, " {");
print $0;
- name = substr($0, match($0, /_syscall_[^(]+/), RLENGTH);
+ name = substr($0, match($0, /_syscall_[^(]+/), RLENGTH);
+ rets = substr($0, 0, RSTART - 1);
+ sub(/ *$/, "", rets)
+
params = substr($0, match($0, /\(.+\)/) + 1, RLENGTH - 2);
if (params == "void") params = ""
@@ -36,7 +39,10 @@ BEGIN {
}
printf "\t";
- if (!index($0, "_Noreturn")) printf "return ";
+ if (!index($0, "_Noreturn")) {
+ printf "return ";
+ if (rets != "int") printf "(%s)", rets;
+ }
printf "_syscall(%s, %s, %s, %s, %s);\n", toupper(name), p[1], p[2], p[3], p[4];
if (index($0, "_Noreturn")) print "\t__builtin_unreachable();";