summaryrefslogtreecommitdiff
path: root/src/syscall/mksyscall.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/syscall/mksyscall.pl')
-rwxr-xr-xsrc/syscall/mksyscall.pl6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/syscall/mksyscall.pl b/src/syscall/mksyscall.pl
index 6d35fa689..dff913838 100755
--- a/src/syscall/mksyscall.pl
+++ b/src/syscall/mksyscall.pl
@@ -132,6 +132,7 @@ while(<>) {
# Prepare arguments to Syscall.
my @args = ();
+ my @uses = ();
my $n = 0;
foreach my $p (@in) {
my ($name, $type) = parseparam($p);
@@ -142,12 +143,14 @@ while(<>) {
$text .= "\t_p$n, $errvar = BytePtrFromString($name)\n";
$text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
push @args, "uintptr(unsafe.Pointer(_p$n))";
+ push @uses, "use(unsafe.Pointer(_p$n))";
$n++;
} elsif($type eq "string") {
print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
$text .= "\tvar _p$n *byte\n";
$text .= "\t_p$n, _ = BytePtrFromString($name)\n";
push @args, "uintptr(unsafe.Pointer(_p$n))";
+ push @uses, "use(unsafe.Pointer(_p$n))";
$n++;
} elsif($type =~ /^\[\](.*)/) {
# Convert slice into pointer, length.
@@ -278,6 +281,9 @@ while(<>) {
} else {
$text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
}
+ foreach my $use (@uses) {
+ $text .= "\t$use\n";
+ }
$text .= $body;
if ($plan9 && $ret[2] eq "e1") {