Move parsers of sync_file_range and sync_file_range2 syscalls to libstrace

For each given architecture only one of these two syscalls has a
syscallent entry.  When each parser is placed into a separate file,
moving to libstrace ensures that only one of them that is need
is linked into strace executable.

* sync_file_range.c (SYS_FUNC(sync_file_range2)): Move ...
* sync_file_range2.c: ... here.
* Makefile.am (strace_SOURCES): Move sync_file_range.c ...
(libstrace_a_SOURCES): ... here.  Add sync_file_range2.c.
(strace_SOURCES_c): Add filtered libstrace_a_SOURCES.
This commit is contained in:
Дмитрий Левин 2016-04-22 04:17:06 +00:00
parent a9540e72c7
commit a7501f6adb
3 changed files with 49 additions and 18 deletions

View File

@ -64,6 +64,8 @@ noinst_LIBRARIES = libstrace.a
libstrace_a_CPPFLAGS = $(strace_CPPFLAGS)
libstrace_a_CFLAGS = $(strace_CFLAGS)
libstrace_a_SOURCES = \
sync_file_range.c \
sync_file_range2.c \
upeek.c \
# end of libstrace_a_SOURCES
@ -190,7 +192,6 @@ strace_SOURCES = \
statfs.c \
strace.c \
swapon.c \
sync_file_range.c \
syscall.c \
sysctl.c \
sysinfo.c \
@ -641,7 +642,8 @@ srpm: dist-xz
$(srcdir)/.version:
$(AM_V_GEN)echo $(VERSION) > $@-t && mv $@-t $@
strace_SOURCES_c = $(filter %.c,$(strace_SOURCES))
strace_SOURCES_c = \
$(filter %.c,$(strace_SOURCES)) $(filter %.c,$(libstrace_a_SOURCES))
sys_func.h: $(patsubst %,$(srcdir)/%,$(strace_SOURCES_c))
for f in $^; do \

View File

@ -27,9 +27,7 @@
*/
#include "defs.h"
#include <fcntl.h>
#include "xlat/sync_file_range_flags.h"
SYS_FUNC(sync_file_range)
@ -44,17 +42,3 @@ SYS_FUNC(sync_file_range)
return RVAL_DECODED;
}
SYS_FUNC(sync_file_range2)
{
int argn;
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
printflags(sync_file_range_flags, tcp->u_arg[1],
"SYNC_FILE_RANGE_???");
argn = printllval(tcp, ", %lld, ", 2);
argn = printllval(tcp, "%lld", argn);
return RVAL_DECODED;
}

45
sync_file_range2.c Normal file
View File

@ -0,0 +1,45 @@
/*
* Copyright (c) 2013 William Manley <william.manley@youview.com>
* Copyright (c) 2014-2015 Dmitry V. Levin <ldv@altlinux.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "defs.h"
#include <fcntl.h>
#include "xlat/sync_file_range_flags.h"
SYS_FUNC(sync_file_range2)
{
int argn;
printfd(tcp, tcp->u_arg[0]);
tprints(", ");
printflags(sync_file_range_flags, tcp->u_arg[1],
"SYNC_FILE_RANGE_???");
argn = printllval(tcp, ", %lld, ", 2);
argn = printllval(tcp, "%lld", argn);
return RVAL_DECODED;
}