Package: sg-utils
Version: 1.02-3
Severity: serious
Tags: patch
sg-utils fails to build from source using linux-kernel-headers >=
2.6.18.
> gcc -g -O2 -Wall -D_REENTRANT -c -o llseek.o llseek.c
> llseek.c:44: error: expected declaration specifiers or ‘...’ before ‘_llseek’
> llseek.c:44: error: expected declaration specifiers or ‘...’ before ‘fd’
> llseek.c:44: error: expected declaration specifiers or ‘...’ before
> ‘offset_high
This is due to new syscall usage. A patch is attached.
-Ted
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/dash
Kernel: Linux 2.6.17-2-k7
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
diff -ru sg-utils-1.02/llseek.c sg-utils-1.02-new/llseek.c
--- sg-utils-1.02/llseek.c 2000-12-09 09:50:02.000000000 +1000
+++ sg-utils-1.02-new/llseek.c 2006-10-23 22:04:07.000000000 +1000
@@ -24,30 +24,21 @@
#ifdef __linux__
-#ifdef HAVE_LLSEEK
-#include <syscall.h>
-
-#else /* HAVE_LLSEEK */
-
#if defined(__alpha__) || defined(__ia64__)
#define my_llseek lseek
#else
-#include <linux/unistd.h> /* for __NR__llseek */
+#include <sys/syscall.h> /* for SYS__llseek */
-static int _llseek (unsigned int, unsigned long,
- unsigned long, llse_loff_t *, unsigned int);
+#ifdef SYS__llseek
-#ifdef __NR__llseek
-
-static _syscall5(int,_llseek,unsigned int,fd,unsigned long,offset_high,
- unsigned long, offset_low,llse_loff_t *,result,
- unsigned int, origin)
+#define _llseek(fd, offset_high, offset_low, result, origin) \
+ syscall(SYS__llseek, fd, offset_high, offset_low, result, origin)
#else
-/* no __NR__llseek on compilation machine - might give it explicitly */
+/* no SYS__llseek on compilation machine - might give it explicitly */
static int _llseek (unsigned int fd, unsigned long oh,
unsigned long ol, llse_loff_t *result,
unsigned int origin) {
@@ -71,8 +62,6 @@
#endif /* __alpha__ */
-#endif /* HAVE_LLSEEK */
-
llse_loff_t llse_llseek (unsigned int fd, llse_loff_t offset,
unsigned int origin)
{