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:
Rob Landley 2005-09-07 06:39:02 +00:00
parent 14efdc58ce
commit 90ca6b2878
3 changed files with 2 additions and 231 deletions

View File

@ -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 \

View File

@ -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:
*/

View File

@ -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:
*/