63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/sh
 | |
| #
 | |
| # Check mmap/mmap2, madvise, mlockall, mprotect, mremap, msync, and munmap
 | |
| # syscalls decoding.
 | |
| #
 | |
| # Copyright (c) 2015-2016 Dmitry V. Levin <ldv@altlinux.org>
 | |
| # Copyright (c) 2015-2018 The strace developers.
 | |
| # 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.
 | |
| 
 | |
| . "${srcdir=.}/init.sh"
 | |
| 
 | |
| check_prog grep
 | |
| check_prog sed
 | |
| run_prog > /dev/null
 | |
| 
 | |
| xlat_opt=""
 | |
| [ "$#" -gt 0 ] && xlat_opt="-X$1"
 | |
| align=20
 | |
| [ "$#" -gt 1 ] && align="$2"
 | |
| 
 | |
| syscall=
 | |
| for n in mmap mmap2; do
 | |
| 	$STRACE -e$n -h > /dev/null && syscall=$syscall,$n
 | |
| done
 | |
| run_strace -e$syscall $args > /dev/null
 | |
| 
 | |
| if grep '^mmap(NULL, 0, \(0 /* PROT_NONE */\|0\|PROT_NONE\),' < "$LOG" > /dev/null; then
 | |
| 	mmap=mmap
 | |
| elif grep '^mmap2(NULL, 0, \(0 \/\* PROT_NONE \*\/\|0\|PROT_NONE\),' < "$LOG" > /dev/null; then
 | |
| 	mmap=mmap2
 | |
| else
 | |
| 	dump_log_and_fail_with "mmap/mmap2 not found in $STRACE $args output"
 | |
| fi
 | |
| 
 | |
| syscall=$mmap,madvise,mlockall,mprotect,mremap,msync,munmap
 | |
| 
 | |
| run_prog "../$NAME" $mmap > /dev/null
 | |
| run_strace -a$align -e$syscall $xlat_opt $args > "$EXP"
 | |
| sed -n "/^$mmap(NULL, 0, \(0 \/\* PROT_NONE \*\/\|0\|PROT_NONE\),/,\$p" < "$LOG" > "$OUT"
 | |
| match_diff "$OUT" "$EXP"
 |