aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2005-09-07 06:39:02 +0000
committerlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2005-09-07 06:39:02 +0000
commit3d4804857a8a66b5b6d2666e977bcf3aebffd43f (patch)
treef3af342196b9349f130bff3c640c7d1404a2e103
parent86a128c54e2c214ac1b645d8fc678e2137b14913 (diff)
downloadbusybox-w32-3d4804857a8a66b5b6d2666e977bcf3aebffd43f.tar.gz
busybox-w32-3d4804857a8a66b5b6d2666e977bcf3aebffd43f.tar.bz2
busybox-w32-3d4804857a8a66b5b6d2666e977bcf3aebffd43f.zip
This code exists to compensate for ancient broken build environments which,
as far as I can tell, are no longer relevant. Modern busybox refuses to build under libc5 (there's a specific test and #error for that), and I'm not sure building against 2.1 kernel headers on Alpha was ever relevant. I'm happy to put any of this back if anybody can point to a real need for it, but if so we need to specifically document what environment is being compensated for. (And we should quarrantine the build environment code into one place, anyway. Maybe "quirks.h" for known compiler and libc quirks?) git-svn-id: svn://busybox.net/trunk/busybox@11348 69ca8d6d-28ef-0310-b511-8ec308f3f277
-rw-r--r--libbb/Makefile.in4
-rw-r--r--libbb/module_syscalls.c116
-rw-r--r--libbb/syscalls.c113
3 files changed, 2 insertions, 231 deletions
diff --git a/libbb/Makefile.in b/libbb/Makefile.in
index 44c7a9858..dae3c1213 100644
--- a/libbb/Makefile.in
+++ b/libbb/Makefile.in
@@ -32,14 +32,14 @@ LIBBB_SRC:= \
32 hash_fd.c herror_msg.c herror_msg_and_die.c \ 32 hash_fd.c herror_msg.c herror_msg_and_die.c \
33 human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \ 33 human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \
34 kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \ 34 kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \
35 make_directory.c mode_string.c module_syscalls.c mtab.c mtab_file.c \ 35 make_directory.c mode_string.c mtab.c mtab_file.c \
36 my_getgrgid.c my_getgrnam.c my_getpwnam.c my_getug.c\ 36 my_getgrgid.c my_getgrnam.c my_getpwnam.c my_getug.c\
37 my_getpwuid.c obscure.c parse_mode.c parse_number.c perror_msg.c \ 37 my_getpwuid.c obscure.c parse_mode.c parse_number.c perror_msg.c \
38 perror_msg_and_die.c print_file.c get_console.c \ 38 perror_msg_and_die.c print_file.c get_console.c \
39 process_escape_sequence.c procps.c pwd2spwd.c pw_encrypt.c qmodule.c \ 39 process_escape_sequence.c procps.c pwd2spwd.c pw_encrypt.c qmodule.c \
40 read_package_field.c recursive_action.c remove_file.c \ 40 read_package_field.c recursive_action.c remove_file.c \
41 restricted_shell.c run_parts.c run_shell.c safe_read.c safe_write.c \ 41 restricted_shell.c run_parts.c run_shell.c safe_read.c safe_write.c \
42 safe_strncpy.c setup_environment.c simplify_path.c syscalls.c \ 42 safe_strncpy.c setup_environment.c simplify_path.c \
43 trim.c u_signal_names.c vdprintf.c verror_msg.c \ 43 trim.c u_signal_names.c vdprintf.c verror_msg.c \
44 vherror_msg.c vperror_msg.c wfopen.c xconnect.c xgetcwd.c \ 44 vherror_msg.c vperror_msg.c wfopen.c xconnect.c xgetcwd.c \
45 xgethostbyname.c xgethostbyname2.c xreadlink.c xregcomp.c xgetlarg.c \ 45 xgethostbyname.c xgethostbyname2.c xreadlink.c xregcomp.c xgetlarg.c \
diff --git a/libbb/module_syscalls.c b/libbb/module_syscalls.c
deleted file mode 100644
index a2ff5284a..000000000
--- a/libbb/module_syscalls.c
+++ /dev/null
@@ -1,116 +0,0 @@
1/* vi: set sw=4 ts=4: */
2/*
3 * some system calls possibly missing from libc
4 *
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#include <stdio.h>
24#include <errno.h>
25#include <unistd.h>
26#include <sys/syscall.h>
27#include "libbb.h"
28
29/* uClibc always supplies (possibly ENOSYS) versions of these functions. */
30#ifndef __UCLIBC__
31
32/* These syscalls are not included in very old glibc versions */
33int delete_module(const char *name)
34{
35#ifndef __NR_delete_module
36#warning This kernel does not support the delete_module syscall
37#warning -> The delete_module system call is being stubbed out...
38 errno=ENOSYS;
39 return -1;
40#else
41 return(syscall(__NR_delete_module, name));
42#endif
43}
44
45int get_kernel_syms(__ptr_t ks)
46{
47#ifndef __NR_get_kernel_syms
48#warning This kernel does not support the get_kernel_syms syscall
49#warning -> The get_kernel_syms system call is being stubbed out...
50 errno=ENOSYS;
51 return -1;
52#else
53 return(syscall(__NR_get_kernel_syms, ks));
54#endif
55}
56
57/* This may have 5 arguments (for old 2.0 kernels) or 2 arguments
58 * (for 2.2 and 2.4 kernels). Use the greatest common denominator,
59 * and let the kernel cope with whatever it gets. Its good at that. */
60int init_module(void *first, void *second, void *third, void *fourth, void *fifth)
61{
62#ifndef __NR_init_module
63#warning This kernel does not support the init_module syscall
64#warning -> The init_module system call is being stubbed out...
65 errno=ENOSYS;
66 return -1;
67#else
68 return(syscall(__NR_init_module, first, second, third, fourth, fifth));
69#endif
70}
71
72int query_module(const char *name, int which, void *buf, size_t bufsize, size_t *ret)
73{
74#ifndef __NR_query_module
75#warning This kernel does not support the query_module syscall
76#warning -> The query_module system call is being stubbed out...
77 bb_error_msg("\n\nTo make this application work, you will need to recompile\n"
78 "BusyBox with a kernel supporting the query_module system call.\n");
79 errno=ENOSYS;
80 return -1;
81#else
82 return(syscall(__NR_query_module, name, which, buf, bufsize, ret));
83#endif
84}
85
86/* Jump through hoops to fixup error return codes */
87unsigned long create_module(const char *name, size_t size)
88{
89#ifndef __NR_create_module
90#warning This kernel does not support the create_module syscall
91#warning -> The create_module system call is being stubbed out...
92 errno=ENOSYS;
93 return -1;
94#else
95 long ret = syscall(__NR_create_module, name, size);
96
97 if (ret == -1 && errno > 125) {
98 ret = -errno;
99 errno = 0;
100 }
101 return ret;
102#endif
103}
104
105
106#endif /* __UCLIBC__ */
107
108/* END CODE */
109/*
110Local Variables:
111c-file-style: "linux"
112c-basic-offset: 4
113tab-width: 4
114End:
115*/
116
diff --git a/libbb/syscalls.c b/libbb/syscalls.c
deleted file mode 100644
index a90f5de2b..000000000
--- a/libbb/syscalls.c
+++ /dev/null
@@ -1,113 +0,0 @@
1/* vi: set sw=4 ts=4: */
2/*
3 * some system calls possibly missing from libc
4 *
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
23#include <stdio.h>
24#include <errno.h>
25#include <unistd.h>
26/* Kernel headers before 2.1.mumble need this on the Alpha to get
27 _syscall* defined. */
28#define __LIBRARY__
29#include <sys/syscall.h>
30#include "libbb.h"
31
32int sysfs(int option, unsigned int fs_index, char * buf)
33{
34#ifndef __NR_sysfs
35#warning "This kernel does not support the sysfs syscall"
36#warning "-> The sysfs system call is being stubbed out..."
37 bb_error_msg("\n\nTo make this application work, you will need to recompile\n"
38 "BusyBox with a kernel supporting the sysfs system call.\n");
39 errno = ENOSYS;
40 return -1;
41#else
42 return(syscall(__NR_sysfs, option, fs_index, buf));
43#endif
44}
45
46int pivot_root(const char * new_root,const char * put_old)
47{
48#ifndef __NR_pivot_root
49#warning This kernel does not support the pivot_root syscall
50#warning -> The pivot_root system call is being stubbed out...
51 /* BusyBox was compiled against a kernel that did not support
52 * the pivot_root system call. To make this application work,
53 * you will need to recompile with a kernel supporting the
54 * pivot_root system call.
55 */
56 bb_error_msg("\n\nTo make this application work, you will need to recompile\n"
57 "BusyBox with a kernel supporting the pivot_root system call.\n");
58 errno = ENOSYS;
59 return -1;
60#else
61 return(syscall(__NR_pivot_root, new_root, put_old));
62#endif /* __NR_pivot_root */
63}
64
65
66/* These syscalls are not included in ancient glibc versions,
67 so we have to define them ourselves, whee ! */
68#if ((__GLIBC__ <= 2) && (__GLIBC_MINOR__ < 1))
69
70int bdflush(int func, int data)
71{
72 return(syscall(__NR_bdflush, func, data));
73}
74
75#ifndef __alpha__
76# define __NR_klogctl __NR_syslog
77int klogctl(int type, char *b, int len)
78{
79 return(syscall(__NR_klogctl, type, b, len));
80}
81#endif /* __alpha__ */
82
83
84int umount2(const char * special_file, int flags)
85{
86#ifndef __NR_umount2
87#warning "This kernel does not support the umount2 syscall"
88#warning "-> The umount2 system call is being stubbed out..."
89 /* BusyBox was compiled against a kernel that did not support
90 * the umount2 system call. To make this application work,
91 * you will need to recompile with a kernel supporting the
92 * umount2 system call.
93 */
94 bb_error_msg("\n\nTo make this application work, you will need to recompile\n"
95 "BusyBox with a kernel supporting the umount2 system call.\n");
96 errno = ENOSYS;
97 return -1;
98#else
99 return(syscall(__NR_umount2, special_file, flags));
100#endif /* __NR_umount2 */
101}
102
103#endif /* old glibc check */
104
105
106/* END CODE */
107/*
108Local Variables:
109c-file-style: "linux"
110c-basic-offset: 4
111tab-width: 4
112End:
113*/