modutils: remove special handling of uClibc

Commit 3a45b87ac3 (modutils: support finit_module syscall) introduced
macro finit_module. But it is not defined for uClibc.

The compilation for busybox fails for MIPS with:
With uClibc, we get following build errors:

  modutils/lib.a(modutils.o): In function `bb_init_module':
  modutils.c:(.text.bb_init_module+0x94): undefined reference to `finit_module'
  modutils.c:(.text.bb_init_module+0xa0): undefined reference to `finit_module'

We can just use syscall() without any need for the
uClibc wrappers.

Newer versions of uClibc-ng (>1.0.20) will remove the
module syscall wrappers.

Found via Buildroot autobuilders:
http://autobuild.buildroot.net/results/556/55655daef23788fb3967f801ec8b79e9bed7122b/build-end.log

function                                             old     new   delta
bb_delete_module                                      26      32      +6
bb_init_module                                        90      95      +5
delete_module                                         37       -     -37
init_module                                           53       -     -53
------------------------------------------------------------------------------
(add/remove: 0/4 grow/shrink: 2/0 up/down: 11/-90)            Total: -79 bytes

Reported-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com>
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Waldemar Brodkorb 2016-12-26 20:07:59 +01:00 committed by Denys Vlasenko
parent 9529115c4c
commit 9c083f599a
2 changed files with 8 additions and 12 deletions

View File

@ -39,8 +39,8 @@
#include <fnmatch.h> #include <fnmatch.h>
#include <sys/syscall.h> #include <sys/syscall.h>
extern int init_module(void *module, unsigned long len, const char *options); #define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts)
extern int delete_module(const char *module, unsigned flags); #define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags)
#ifdef __NR_finit_module #ifdef __NR_finit_module
# define finit_module(fd, uargs, flags) syscall(__NR_finit_module, fd, uargs, flags) # define finit_module(fd, uargs, flags) syscall(__NR_finit_module, fd, uargs, flags)
#endif #endif

View File

@ -7,17 +7,13 @@
*/ */
#include "modutils.h" #include "modutils.h"
#ifdef __UCLIBC__ #include <sys/syscall.h>
extern int init_module(void *module, unsigned long len, const char *options);
extern int delete_module(const char *module, unsigned int flags); #define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts)
#else #if defined(__NR_finit_module)
# include <sys/syscall.h> # define finit_module(fd, uargs, flags) syscall(__NR_finit_module, fd, uargs, flags)
# define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts)
# if defined(__NR_finit_module)
# define finit_module(fd, uargs, flags) syscall(__NR_finit_module, fd, uargs, flags)
# endif
# define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags)
#endif #endif
#define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags)
static module_entry *helper_get_module(module_db *db, const char *module, int create) static module_entry *helper_get_module(module_db *db, const char *module, int create)
{ {