Dmitry V. Levin
d70a3112a0
Also do not include them into release tarballs. These files are intended for developers who are expected to use a git repository. * errnoent.sh: Move to maint subdirectory. * signalent.sh: Likewise. * syscallent.sh: Likewise. * HACKING-scripts: Update. * Makefile.am (EXTRA_DIST): Remove errnoent.sh, signalent.sh, and syscallent.sh.
59 lines
2.8 KiB
Plaintext
59 lines
2.8 KiB
Plaintext
Each strace port relies heavily on port-specific headers:
|
|
- errnoent.h - map error number to error name like strerror()
|
|
- ioctlent.h - map ioctl number to symbolic define
|
|
- signalent.h - map signal number to signal name like strsignal()
|
|
- syscallent.h - map syscall number to name and function signature
|
|
|
|
Since generating these headers from scratch (or even just updating them) can be
|
|
a big pain, there are a few scripts to help automate the process. Since each
|
|
port organizes their kernel sources differently, there may be a specific script
|
|
for your kernel.
|
|
|
|
We will use the Linux kernel (2.6.20+) as an example below (the Blackfin
|
|
architecture to be specific). Hopefully, it'll be obvious how to swap out a
|
|
different system or architecture as your circumstances apply.
|
|
|
|
ksrc=/usr/src/linux
|
|
asrc=$ksrc/arch/blackfin/include
|
|
|
|
To use the errnoent.sh script, give it all the headers that might contain
|
|
appropriate errno values. Excessive headers are not a problem. The resulting
|
|
output should be directly usable without modification.
|
|
sh ./maint/errnoent.sh \
|
|
$ksrc/include/linux/*errno*.h \
|
|
$ksrc/include/asm-generic/*errno*.h \
|
|
$asrc/asm/*errno*.h \
|
|
> errnoent.h
|
|
|
|
To use the ioctls_gen.sh script, give it all the base include directories. The
|
|
script will crawl all the headers and try to discover appropriate ioctls.
|
|
Unlike the other scripts, this one creates files for further processing. This
|
|
is because ioctls tend to have a lot of define indirection, and the ioctlent0.h
|
|
header needs to be fully expanded into numeric form and sorted properly. So
|
|
first we process all of the ioctls with the ioctls_gen.sh into ioctls_inc.h and
|
|
ioctls_arch.h, and then we compile them into ioctlsort.c. The resulting
|
|
output, while directly usable, only contains definitions that match exactly the
|
|
current kernel version that the script ran against. That means older/newer
|
|
ioctl defines that might be present in the existing ioctlent0.h header will be
|
|
lost if things are copied directly. A little creative use of `diff` and manual
|
|
merging should be used to produce the final ioctlent0.h header.
|
|
sh ./maint/ioctls_gen.sh $ksrc/include $asrc
|
|
gcc -Wall -I. ioctlsort.c -o ioctlsort
|
|
./ioctlsort > ioctlent0.h
|
|
|
|
To use the signalent.sh script, give it all the headers that might contain
|
|
appropriate signal values. Excessive headers are not a problem. The resulting
|
|
output should be directly usable without modification.
|
|
sh ./maint/signalent.sh \
|
|
$asrc/asm/signal.h \
|
|
> signalent.h
|
|
|
|
To use the syscallent.sh script, give it the header with the list of your
|
|
system call numbers. The resulting output is useful as a template for creating
|
|
a proper header as it can really only detect the system call number and its
|
|
name. It has no way of knowing the number of arguments or strace flags for
|
|
decoding them (yet?).
|
|
sh ./maint/syscallent.sh \
|
|
$asrc/asm/unistd.h \
|
|
> syscallent.h
|