Skip to content
This repository has been archived by the owner on Nov 15, 2022. It is now read-only.

Commit

Permalink
Add unique syscall entry numbers (SENs)
Browse files Browse the repository at this point in the history
* Makefile.am (BUILT_SOURCES, CLEANFILES): Add sen.h.
(syscallent_names, syscallent_patterns, syscallent_files): New variables.
(sen.h): New rule.
* defs.h (struct sysent): Add sen field.
* generate_sen.sh: New file.
* linux/syscall.h: Include "sen.h".
* syscall.c (SEN_NAME): New temporary macro.
(SEN): Use it to prepend syscall entry number.
  • Loading branch information
parport0 authored and ldv-alt committed Jul 12, 2015
1 parent 140ecf8 commit 28e32df
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 3 deletions.
14 changes: 12 additions & 2 deletions Makefile.am
Expand Up @@ -163,6 +163,7 @@ EXTRA_DIST = \
debian/strace64.manpages \
debian/watch \
errnoent.sh \
generate_sen.sh \
ioctlsort.c \
linux/32/ioctls_inc.h \
linux/32/ioctls_inc_align32.h \
Expand Down Expand Up @@ -567,7 +568,7 @@ EXTRA_DIST = \
srpm: dist-xz
rpmbuild --define '%_srcrpmdir .' -ts $(distdir).tar.xz

BUILT_SOURCES = .version sys_func.h
BUILT_SOURCES = .version sys_func.h sen.h

$(srcdir)/.version:
$(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@
Expand All @@ -579,6 +580,15 @@ sys_func.h: $(patsubst %,$(srcdir)/%,$(strace_SOURCES_c))
sed -n 's/^SYS_FUNC(.*/extern &;/p' $$f; \
done | sort -u > $@

syscallent_names = subcall.h syscallent.h syscallent1.h \
syscallent-n32.h syscallent-n64.h syscallent-o32.h
syscallent_patterns = $(patsubst %,\%/%,$(syscallent_names))
syscallent_files = $(filter $(syscallent_patterns),$(EXTRA_DIST))

sen.h: $(patsubst %,$(srcdir)/%,$(syscallent_files))
for f in $^; do cat -- $$f; done | \
$(srcdir)/generate_sen.sh > $@

dist-hook:
$(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version

Expand All @@ -605,7 +615,7 @@ ioctlsort_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_FOR_BUILD)
ioctls_inc_h = $(wildcard $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h)
ioctlent_h = $(patsubst $(srcdir)/$(OS)/$(ARCH)/ioctls_inc%,ioctlent%,$(ioctls_inc_h))
BUILT_SOURCES += $(ioctlent_h)
CLEANFILES = sys_func.h $(ioctlent_h)
CLEANFILES = sys_func.h sen.h $(ioctlent_h)

ioctlent%.h: ioctlsort%
./$< > $@
Expand Down
1 change: 1 addition & 0 deletions defs.h
Expand Up @@ -249,6 +249,7 @@ extern char *stpcpy(char *dst, const char *src);
typedef struct sysent {
unsigned nargs;
int sys_flags;
int sen;
int (*sys_func)();
const char *sys_name;
} struct_sysent;
Expand Down
8 changes: 8 additions & 0 deletions generate_sen.sh
@@ -0,0 +1,8 @@
#!/bin/sh -e

echo 'enum {'
echo 'SEN_printargs = 0,'
sed -n '/printargs/! s/.*SEN(\([^)]*\)).*/\1/p' |
sort -u |
sed 's/.*/SEN_&,/'
echo '};'
1 change: 1 addition & 0 deletions linux/syscall.h
Expand Up @@ -28,6 +28,7 @@

#include "dummy.h"
#include "sys_func.h"
#include "sen.h"

#if NEED_UID16_PARSERS
extern SYS_FUNC(chown16);
Expand Down
4 changes: 3 additions & 1 deletion syscall.c
Expand Up @@ -81,7 +81,8 @@
#define SI STACKTRACE_INVALIDATE_CACHE
#define SE STACKTRACE_CAPTURE_ON_ENTER

#define SEN(syscall_name) SYS_FUNC_NAME(syscall_name)
#define SEN_NAME(syscall_name) SEN_ ## syscall_name
#define SEN(syscall_name) SEN_NAME(syscall_name), SYS_FUNC_NAME(syscall_name)

const struct_sysent sysent0[] = {
#include "syscallent.h"
Expand All @@ -101,6 +102,7 @@ static const struct_sysent sysent2[] = {

/* Now undef them since short defines cause wicked namespace pollution. */
#undef SEN
#undef SEN_NAME
#undef TD
#undef TF
#undef TI
Expand Down

0 comments on commit 28e32df

Please sign in to comment.