LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
123
返回列表 发新帖
楼主: unixnovice

glibc 头文件中存在BUG?(gcc 4.1)

[复制链接]
发表于 2008-1-29 17:36:47 | 显示全部楼层
这个问题的原因是sysdeputil.c 文件出错,解决方法是给其打补丁:
# patch sysdeputil.c attachment.bin
# make

attachment.bin 的位置在:http://linuxfromscratch.org/pipe ... 9f56/attachment.bin
回复 支持 反对

使用道具 举报

发表于 2008-1-29 17:38:40 | 显示全部楼层
attachment.bin:


diff -pNur vsftpd-2.0.5.orig/sysdeputil.c vsftpd-2.0.5/sysdeputil.c
--- vsftpd-2.0.5.orig/sysdeputil.c        2006-07-02 15:14:10.000000000 -0700
+++ vsftpd-2.0.5/sysdeputil.c        2006-10-19 23:41:58.000000000 -0700
@@ -155,14 +155,15 @@
#include <sys/capability.h>

#if defined(VSF_SYSDEP_HAVE_CAPABILITIES) && !defined(VSF_SYSDEP_HAVE_LIBCAP)
-#include <linux/unistd.h>
#include <linux/capability.h>
#include <errno.h>
-#include <syscall.h>
-_syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data)
-/* Gross HACK to avoid warnings - linux headers overlap glibc headers */
-#undef __NFDBITS
-#undef __FDMASK
+#include <sys/syscall.h>
+#include <unistd.h>
+int capset(cap_user_header_t header,
+           cap_user_data_t data)
+{
+  return syscall(SYS_capset, header, data);
+}
#endif /* VSF_SYSDEP_HAVE_CAPABILITIES */

#if defined(VSF_SYSDEP_HAVE_LINUX_SENDFILE) || \
回复 支持 反对

使用道具 举报

发表于 2008-1-29 18:58:24 | 显示全部楼层
这个证实是 2.6.22 及其後的内核去掉了 syscall 函数引起的,已有补丁解决了

http://www.linuxsir.cn/bbs/showthread.php?t=315354
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表