sysgen: Cope with non-inline kernel build

When regenerating system call tables, cope with a local kernel tree where
the kernel has been built into a separate directory (with `make O=...`) rather
than inline.

So:
 - LINUX makefile var / -linux command line option give location of source tree
 - LINUXBLD makefile var / -linuxbld command line option gives location of
   built kernel
This commit is contained in:
David Drysdale 2016-03-10 14:24:26 +00:00
parent 98cd0cc66d
commit 064e1a65a5
3 changed files with 11 additions and 6 deletions

View File

@ -44,7 +44,7 @@ SYSCALL_FILES=sys/sys.txt sys/socket.txt sys/tty.txt sys/perf.txt \
sys/kvm.txt sys/sndseq.txt sys/sndtimer.txt sys/sndcontrol.txt sys/input.txt \
sys/netlink.txt sys/tun.txt sys/random.txt
generate: bin/syz-sysgen $(SYSCALL_FILES)
bin/syz-sysgen -linux=$(LINUX) $(SYSCALL_FILES)
bin/syz-sysgen -linux=$(LINUX) -linuxbld=$(LINUXBLD) $(SYSCALL_FILES)
bin/syz-sysgen: sysgen/*.go
go build -o $@ sysgen/*.go

View File

@ -43,13 +43,14 @@ func fetchValues(arch string, vals []string, includes []string, defines map[stri
"-D__KERNEL__",
"-DKBUILD_MODNAME=\"-\"",
"-I" + *flagLinux + "/arch/" + arch + "/include",
"-I" + *flagLinux + "/arch/" + arch + "/include/generated/uapi",
"-I" + *flagLinux + "/arch/" + arch + "/include/generated",
"-I" + *flagLinuxBld + "/arch/" + arch + "/include/generated/uapi",
"-I" + *flagLinuxBld + "/arch/" + arch + "/include/generated",
"-I" + *flagLinuxBld + "/include",
"-I" + *flagLinux + "/include",
"-I" + *flagLinux + "/arch/" + arch + "/include/uapi",
"-I" + *flagLinux + "/arch/" + arch + "/include/generated/uapi",
"-I" + *flagLinuxBld + "/arch/" + arch + "/include/generated/uapi",
"-I" + *flagLinux + "/include/uapi",
"-I" + *flagLinux + "/include/generated/uapi",
"-I" + *flagLinuxBld + "/include/generated/uapi",
"-I" + *flagLinux,
"-include", *flagLinux + "/include/linux/kconfig.h",
}...)

View File

@ -17,7 +17,8 @@ import (
)
var (
flagLinux = flag.String("linux", "", "path to linux kernel checkout")
flagLinux = flag.String("linux", "", "path to linux kernel source checkout")
flagLinuxBld = flag.String("linuxbld", "", "path to linux kernel build directory")
)
func main() {
@ -25,6 +26,9 @@ func main() {
if *flagLinux == "" {
failf("provide path to linux kernel checkout via -linux flag (or make generate LINUX= flag)")
}
if *flagLinuxBld == "" {
flagLinuxBld = flagLinux
}
if len(flag.Args()) == 0 {
failf("usage: sysgen -linux=linux_checkout input_file")
}