diff options
Diffstat (limited to 'src/syscall/mksyscall.pl')
-rwxr-xr-x | src/syscall/mksyscall.pl | 6 |
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") { |