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?)
This commit is contained in:
parent
14efdc58ce
commit
90ca6b2878
@ -32,14 +32,14 @@ LIBBB_SRC:= \
|
||||
hash_fd.c herror_msg.c herror_msg_and_die.c \
|
||||
human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \
|
||||
kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \
|
||||
make_directory.c mode_string.c module_syscalls.c mtab.c mtab_file.c \
|
||||
make_directory.c mode_string.c mtab.c mtab_file.c \
|
||||
my_getgrgid.c my_getgrnam.c my_getpwnam.c my_getug.c\
|
||||
my_getpwuid.c obscure.c parse_mode.c parse_number.c perror_msg.c \
|
||||
perror_msg_and_die.c print_file.c get_console.c \
|
||||
process_escape_sequence.c procps.c pwd2spwd.c pw_encrypt.c qmodule.c \
|
||||
read_package_field.c recursive_action.c remove_file.c \
|
||||
restricted_shell.c run_parts.c run_shell.c safe_read.c safe_write.c \
|
||||
safe_strncpy.c setup_environment.c simplify_path.c syscalls.c \
|
||||
safe_strncpy.c setup_environment.c simplify_path.c \
|
||||
trim.c u_signal_names.c vdprintf.c verror_msg.c \
|
||||
vherror_msg.c vperror_msg.c wfopen.c xconnect.c xgetcwd.c \
|
||||
xgethostbyname.c xgethostbyname2.c xreadlink.c xregcomp.c xgetlarg.c \
|
||||
|
@ -1,116 +0,0 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* some system calls possibly missing from libc
|
||||
*
|
||||
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
#include "libbb.h"
|
||||
|
||||
/* uClibc always supplies (possibly ENOSYS) versions of these functions. */
|
||||
#ifndef __UCLIBC__
|
||||
|
||||
/* These syscalls are not included in very old glibc versions */
|
||||
int delete_module(const char *name)
|
||||
{
|
||||
#ifndef __NR_delete_module
|
||||
#warning This kernel does not support the delete_module syscall
|
||||
#warning -> The delete_module system call is being stubbed out...
|
||||
errno=ENOSYS;
|
||||
return -1;
|
||||
#else
|
||||
return(syscall(__NR_delete_module, name));
|
||||
#endif
|
||||
}
|
||||
|
||||
int get_kernel_syms(__ptr_t ks)
|
||||
{
|
||||
#ifndef __NR_get_kernel_syms
|
||||
#warning This kernel does not support the get_kernel_syms syscall
|
||||
#warning -> The get_kernel_syms system call is being stubbed out...
|
||||
errno=ENOSYS;
|
||||
return -1;
|
||||
#else
|
||||
return(syscall(__NR_get_kernel_syms, ks));
|
||||
#endif
|
||||
}
|
||||
|
||||
/* This may have 5 arguments (for old 2.0 kernels) or 2 arguments
|
||||
* (for 2.2 and 2.4 kernels). Use the greatest common denominator,
|
||||
* and let the kernel cope with whatever it gets. Its good at that. */
|
||||
int init_module(void *first, void *second, void *third, void *fourth, void *fifth)
|
||||
{
|
||||
#ifndef __NR_init_module
|
||||
#warning This kernel does not support the init_module syscall
|
||||
#warning -> The init_module system call is being stubbed out...
|
||||
errno=ENOSYS;
|
||||
return -1;
|
||||
#else
|
||||
return(syscall(__NR_init_module, first, second, third, fourth, fifth));
|
||||
#endif
|
||||
}
|
||||
|
||||
int query_module(const char *name, int which, void *buf, size_t bufsize, size_t *ret)
|
||||
{
|
||||
#ifndef __NR_query_module
|
||||
#warning This kernel does not support the query_module syscall
|
||||
#warning -> The query_module system call is being stubbed out...
|
||||
bb_error_msg("\n\nTo make this application work, you will need to recompile\n"
|
||||
"BusyBox with a kernel supporting the query_module system call.\n");
|
||||
errno=ENOSYS;
|
||||
return -1;
|
||||
#else
|
||||
return(syscall(__NR_query_module, name, which, buf, bufsize, ret));
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Jump through hoops to fixup error return codes */
|
||||
unsigned long create_module(const char *name, size_t size)
|
||||
{
|
||||
#ifndef __NR_create_module
|
||||
#warning This kernel does not support the create_module syscall
|
||||
#warning -> The create_module system call is being stubbed out...
|
||||
errno=ENOSYS;
|
||||
return -1;
|
||||
#else
|
||||
long ret = syscall(__NR_create_module, name, size);
|
||||
|
||||
if (ret == -1 && errno > 125) {
|
||||
ret = -errno;
|
||||
errno = 0;
|
||||
}
|
||||
return ret;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#endif /* __UCLIBC__ */
|
||||
|
||||
/* END CODE */
|
||||
/*
|
||||
Local Variables:
|
||||
c-file-style: "linux"
|
||||
c-basic-offset: 4
|
||||
tab-width: 4
|
||||
End:
|
||||
*/
|
||||
|
113
libbb/syscalls.c
113
libbb/syscalls.c
@ -1,113 +0,0 @@
|
||||
/* vi: set sw=4 ts=4: */
|
||||
/*
|
||||
* some system calls possibly missing from libc
|
||||
*
|
||||
* Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
/* Kernel headers before 2.1.mumble need this on the Alpha to get
|
||||
_syscall* defined. */
|
||||
#define __LIBRARY__
|
||||
#include <sys/syscall.h>
|
||||
#include "libbb.h"
|
||||
|
||||
int sysfs(int option, unsigned int fs_index, char * buf)
|
||||
{
|
||||
#ifndef __NR_sysfs
|
||||
#warning "This kernel does not support the sysfs syscall"
|
||||
#warning "-> The sysfs system call is being stubbed out..."
|
||||
bb_error_msg("\n\nTo make this application work, you will need to recompile\n"
|
||||
"BusyBox with a kernel supporting the sysfs system call.\n");
|
||||
errno = ENOSYS;
|
||||
return -1;
|
||||
#else
|
||||
return(syscall(__NR_sysfs, option, fs_index, buf));
|
||||
#endif
|
||||
}
|
||||
|
||||
int pivot_root(const char * new_root,const char * put_old)
|
||||
{
|
||||
#ifndef __NR_pivot_root
|
||||
#warning This kernel does not support the pivot_root syscall
|
||||
#warning -> The pivot_root system call is being stubbed out...
|
||||
/* BusyBox was compiled against a kernel that did not support
|
||||
* the pivot_root system call. To make this application work,
|
||||
* you will need to recompile with a kernel supporting the
|
||||
* pivot_root system call.
|
||||
*/
|
||||
bb_error_msg("\n\nTo make this application work, you will need to recompile\n"
|
||||
"BusyBox with a kernel supporting the pivot_root system call.\n");
|
||||
errno = ENOSYS;
|
||||
return -1;
|
||||
#else
|
||||
return(syscall(__NR_pivot_root, new_root, put_old));
|
||||
#endif /* __NR_pivot_root */
|
||||
}
|
||||
|
||||
|
||||
/* These syscalls are not included in ancient glibc versions,
|
||||
so we have to define them ourselves, whee ! */
|
||||
#if ((__GLIBC__ <= 2) && (__GLIBC_MINOR__ < 1))
|
||||
|
||||
int bdflush(int func, int data)
|
||||
{
|
||||
return(syscall(__NR_bdflush, func, data));
|
||||
}
|
||||
|
||||
#ifndef __alpha__
|
||||
# define __NR_klogctl __NR_syslog
|
||||
int klogctl(int type, char *b, int len)
|
||||
{
|
||||
return(syscall(__NR_klogctl, type, b, len));
|
||||
}
|
||||
#endif /* __alpha__ */
|
||||
|
||||
|
||||
int umount2(const char * special_file, int flags)
|
||||
{
|
||||
#ifndef __NR_umount2
|
||||
#warning "This kernel does not support the umount2 syscall"
|
||||
#warning "-> The umount2 system call is being stubbed out..."
|
||||
/* BusyBox was compiled against a kernel that did not support
|
||||
* the umount2 system call. To make this application work,
|
||||
* you will need to recompile with a kernel supporting the
|
||||
* umount2 system call.
|
||||
*/
|
||||
bb_error_msg("\n\nTo make this application work, you will need to recompile\n"
|
||||
"BusyBox with a kernel supporting the umount2 system call.\n");
|
||||
errno = ENOSYS;
|
||||
return -1;
|
||||
#else
|
||||
return(syscall(__NR_umount2, special_file, flags));
|
||||
#endif /* __NR_umount2 */
|
||||
}
|
||||
|
||||
#endif /* old glibc check */
|
||||
|
||||
|
||||
/* END CODE */
|
||||
/*
|
||||
Local Variables:
|
||||
c-file-style: "linux"
|
||||
c-basic-offset: 4
|
||||
tab-width: 4
|
||||
End:
|
||||
*/
|
Loading…
Reference in New Issue
Block a user