syscall: fix build problem caused by stale tab.h
Recently the script which generates tab.h and the code including it got incompatibly changed. People reported problems involving syntax errors when trying to rebuild the system following a sysupdate. The problem was with the script being embedded within a mkfile rule, meaning that mk didn't notice it changing and therefore didn't rebuild the target file. For people who were rebuilding the system this meant that the old tab.h got included, causing syntax errors. This patch moves the codegen script into a file and tells mk about this new dependency, so that tab.h will get rebuilt for everyone. I also took an opportunity to rewrite the script, hopefuly making it easier to follow.
This commit is contained in:
parent
23de6808f7
commit
2968225196
2 changed files with 16 additions and 19 deletions
|
@ -16,25 +16,8 @@ UPDATE=\
|
|||
|
||||
SYSCALL=/sys/src/libc/9syscall/sys.h
|
||||
|
||||
tab.h: $SYSCALL
|
||||
awk '
|
||||
BEGIN{ print "enum{" }
|
||||
{ printf "%s, ", $2 }
|
||||
END{
|
||||
print "READ, WRITE, NTAB"
|
||||
print "};"
|
||||
}' <$SYSCALL >$target
|
||||
awk '
|
||||
BEGIN{ print "struct Call tab[] = {" }
|
||||
{ printf "[%s] \"%s\", (int(*)(...))%s,\n",
|
||||
$2, tolower($2), tolower($2)
|
||||
}
|
||||
END{
|
||||
print "[READ] \"read\", (int(*)(...))read,"
|
||||
print "[WRITE] \"write\", (int(*)(...))write,"
|
||||
print "[NTAB] nil, 0"
|
||||
print "};"
|
||||
}' <$SYSCALL >>$target
|
||||
tab.h: $SYSCALL mktab.awk
|
||||
mktab.awk $SYSCALL >$target
|
||||
|
||||
clean:V:
|
||||
rm -f *.[$OS] [$OS].out $TARG $HFILES
|
||||
|
|
14
sys/src/cmd/syscall/mktab.awk
Executable file
14
sys/src/cmd/syscall/mktab.awk
Executable file
|
@ -0,0 +1,14 @@
|
|||
#!/bin/awk -f
|
||||
{ e = e $2 ", "
|
||||
s = s sprintf("[%s] \"%s\", (int(*)(...))%s,\n",
|
||||
$2, tolower($2), tolower($2))
|
||||
}
|
||||
END{
|
||||
e = e "READ, WRITE, NTAB"
|
||||
s = s "[READ] \"read\", (int(*)(...))read,\n"
|
||||
s = s "[WRITE] \"write\", (int(*)(...))write,\n"
|
||||
s = s "[NTAB] nil, 0\n"
|
||||
|
||||
print "enum{", e, "};"
|
||||
print "struct Call tab[] = {\n", s, "};"
|
||||
}
|
Loading…
Reference in a new issue