1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
/* COVERAGE: uname olduname oldolduname newuname */
/* Sigh. In the i386 syscall table you'll see this:
*
* ===
* # The format is:
* # <number> <abi> <name> <entry point> <compat entry point>
* 59 i386 oldolduname sys_olduname
* 109 i386 olduname sys_uname
* 122 i386 uname sys_newuname
* ===
*
* So, we have to try to test all the ones that exist on this system.
*/
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <linux/utsname.h>
/* We'll need to define our own syscall wrappers, so we know which
* syscall we are calling.
*/
#ifdef __NR_uname
static inline int __uname(struct new_utsname *buf)
{
return syscall(__NR_uname, buf);
}
#endif
#ifdef __NR_olduname
static inline int __olduname(struct old_utsname *buf)
{
return syscall(__NR_olduname, buf);
}
#endif
#ifdef __NR_oldolduname
static inline int __oldolduname(struct oldold_utsname *buf)
{
return syscall(__NR_oldolduname, buf);
}
#endif
int main()
{
struct oldold_utsname oldold_uts;
#ifdef __NR_uname
{
struct new_utsname new_uts;
__uname(&new_uts);
//staptest// uname (XXXX) = 0
__uname((struct new_utsname *)-1);
#ifdef __s390__
//staptest// uname (0x[7]?[f]+) = -NNNN
#else
//staptest// uname (0x[f]+) = -NNNN
#endif
}
#endif
#ifdef __NR_olduname
{
struct old_utsname old_uts;
__olduname(&old_uts);
//staptest// [[[[uname (XXXX)!!!!ni_syscall ()]]]] = NNNN
__olduname((struct old_utsname *)-1);
#ifdef __s390__
//staptest// [[[[uname (0x[7]?[f]+)!!!!ni_syscall ()]]]] = -NNNN
#else
//staptest// [[[[uname (0x[f]+)!!!!ni_syscall ()]]]] = -NNNN
#endif
}
#endif
#ifdef __NR_oldolduname
{
struct oldold_utsname oldold_uts;
__oldolduname(&oldold_uts);
//staptest// [[[[uname (XXXX)!!!!ni_syscall ()]]]] = NNNN
__oldolduname((struct oldold_utsname *)-1);
#ifdef __s390__
//staptest// [[[[uname (0x[7]?[f]+)!!!!ni_syscall ()]]]] = -NNNN
#else
//staptest// [[[[uname (0x[f]+)!!!!ni_syscall ()]]]] = -NNNN
#endif
}
#endif
return 0;
}
|