diff options
author | Kaleb S. KEITHLEY <kkeithle@redhat.com> | 2015-10-21 12:00:03 -0400 |
---|---|---|
committer | Jeff Darcy <jdarcy@redhat.com> | 2015-11-17 06:30:35 -0800 |
commit | 052bdb5899bb723b6d375c66ab2ceab028adab06 (patch) | |
tree | 7d55f212f437997b9c234a0c5ca179c8059c32ba | |
parent | dcd1ff344d242f64f3a5c579df97a050736e6633 (diff) |
core: use syscall wrappers instead of direct syscalls - regression test
various xlators and other components are invoking system calls
directly instead of using the libglusterfs/syscall.[ch] wrappers.
If not using the system call wrappers there should be a comment
in the source explaining why the wrapper isn't used.
Change-Id: Id2207deb81a75e1af6f34bf857e74725f8bb532f
BUG: 1267967
Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
Reviewed-on: http://review.gluster.org/12410
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
-rwxr-xr-x | tests/basic/0symbol-check.t | 46 | ||||
-rwxr-xr-x | tests/basic/symbol-check.sh | 81 |
2 files changed, 127 insertions, 0 deletions
diff --git a/tests/basic/0symbol-check.t b/tests/basic/0symbol-check.t new file mode 100755 index 00000000000..d5b2ac4be86 --- /dev/null +++ b/tests/basic/0symbol-check.t @@ -0,0 +1,46 @@ +#!/bin/bash +# + +. $(dirname $0)/../include.rc + +buildscratch="" + +case $OSTYPE in +Linux) + ;; +*) + echo "Skip Linux specific test" >&2 + SKIP_TESTS + exit 0 + ;; +esac + +# look in the usual places for the build tree +if [ -d /build/scratch ]; then + buildscratch="/build/scratch" +else + # might be in developer's tree + if [ -d ./libglusterfs/src/.libs ]; then + buildscratch="." + elif [ -d ../libglusterfs/src/.libs]; then + buildscratch=".." + fi +fi + +if [ -z ${buildscratch} ]; then + echo "could find build tree in /build/scratch, . or .." >&2 + SKIP_TESTS + exit 0 +fi + +# check symbols + +rm -f ./.symbol-check-errors + +TEST find ${buildscratch} -name \*.o -exec ./tests/basic/symbol-check.sh {} \\\; + +TEST [ ! -e ./.symbol-check-errors ] + +rm -f ./.symbol-check-errors + +cleanup diff --git a/tests/basic/symbol-check.sh b/tests/basic/symbol-check.sh new file mode 100755 index 00000000000..10344a9b3e8 --- /dev/null +++ b/tests/basic/symbol-check.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +syscalls=$'access\nchmod\nchown\nclose\nclosedir\ncreat64\n\ +fallocate64\nfchmod\nfchown\nfdatasync\nfgetxattr\nflistxattr\n\ +fremovexattr\nfsetxattr\nfsync\nftruncate64\n__fxstat64\n\ +__fxstatat64\nlchown\nlgetxattr\nlinkat\nllistxattr\nlremovexattr\n\ +lseek64\nlsetxattr\n__lxstat64\nmkdir\nmkdirat\nopenat64\nopendir\n\ +read\nreaddir64\nreadlink\nreadv\nrename\nrmdir\nstatvfs64\nsymlink\n\ +truncate64\nunlink\nutimeswrite\nwritev\n__xmknod\n__xstat64' + +syscalls32=$'creat\n\fallocate\n\ftruncate\n\__fxstat\n\__fxstatat\n\ +lseek\n\__lxstat\n\openat\n\readdir\n\statvfs\n\truncate\n\stat' + +exclude_files=$'/libglusterfs/src/.libs/libglusterfs_la-syscall.o\n\ +/libglusterfs/src/.libs/libglusterfs_la-gen_uuid.o\n\ +/contrib/fuse-util/fusermount.o\n\ +/contrib/fuse-util/mount_util.o\n\ +/contrib/fuse-util/mount-common.o\n\ +/xlators/mount/fuse/src/.libs/mount.o\n\ +/xlators/mount/fuse/src/.libs/mount-common.o\n\ +/xlators/features/qemu-block/src/.libs/block.o\n\ +/xlators/features/qemu-block/src/.libs/cutils.o\n\ +/xlators/features/qemu-block/src/.libs/oslib-posix.o' + +function main() +{ + for exclude_file in ${exclude_files}; do + if [[ ${1} = *${exclude_file} ]]; then + exit 0 + fi + done + + local retval=0 + local t=$(nm ${1} | grep " U " | sed -e "s/ //g" -e "s/ U //g") + + for symy in ${t}; do + + for symx in ${syscalls}; do + + if [[ ${symx} = ${symy} ]]; then + + case ${symx} in + "creat64") sym="creat";; + "fallocate64") sym="fallocate";; + "ftruncate64") sym="ftruncate";; + "lseek64") sym="lseek";; + "openat64") sym="openat";; + "readdir64") sym="readdir";; + "truncate64") sym="truncate";; + "__statvfs64") sym="statvfs";; + "__fxstat64") sym="fstat";; + "__fxstatat64") sym="fstatat";; + "__lxstat64") sym="lstat";; + "__xmknod") sym="mknod";; + "__xstat64") sym="stat";; + *) sym=${symx};; + esac + + echo "${1} should call sys_${sym}, not ${sym}" >&2 + retval=1 + fi + + done + + for symx in ${syscalls32}; do + + if [[ ${symx} = ${symy} ]]; then + + echo "${1} was not compiled with -D_FILE_OFFSET_BITS=64" >&2 + retval=1 + fi + done + done + + if [ ${retval} = 1 ]; then + touch ./.symbol-check-errors + fi + exit ${retval} +} + +main "$@" |