1 /*
2 * Copyright (c) 2015-2018 Dmitry V. Levin <ldv@strace.io>
3 * Copyright (c) 2015-2021 The strace developers.
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9 #include "tests.h"
10 #include "scno.h"
11
12 #ifdef __NR_lseek
13
14 # include <stdio.h>
15 # include <unistd.h>
16
17 int
18 main(void)
19 {
20 const kernel_ulong_t offset = (kernel_ulong_t) 0xfacefeeddeadbeefULL;
21
22 if (sizeof(offset) > sizeof(long)) {
23 /*
24 * Cannot use syscall because it takes long arguments.
25 * Let's call lseek with hope it will invoke lseek syscall.
26 */
27 long long rc = lseek(-1, offset, SEEK_SET);
28 printf("lseek(-1, %lld, SEEK_SET) = %lld %s (%m)\n",
29 (long long) offset, rc, errno2name());
30 } else {
31 long rc = syscall(__NR_lseek, -1L, offset, SEEK_SET);
32 printf("lseek(-1, %ld, SEEK_SET) = %ld %s (%m)\n",
33 (long) offset, rc, errno2name());
34 }
35
36 puts("+++ exited with 0 +++");
37 return 0;
38 }
39
40 #else
41
42 SKIP_MAIN_UNDEFINED("__NR_lseek")
43
44 #endif