(root)/
strace-6.5/
tests-mx32/
lseek.c
       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