diff options
-rw-r--r-- | package/busybox/patches/009-modutils.patch | 75 |
1 files changed, 65 insertions, 10 deletions
diff --git a/package/busybox/patches/009-modutils.patch b/package/busybox/patches/009-modutils.patch index 3d0dbf951..49ccb8ff4 100644 --- a/package/busybox/patches/009-modutils.patch +++ b/package/busybox/patches/009-modutils.patch @@ -1,6 +1,53 @@ -diff -Nur busybox-1.26.0.orig/modutils/modutils.c busybox-1.26.0/modutils/modutils.c ---- busybox-1.26.0.orig/modutils/modutils.c 2016-10-03 23:16:44.000000000 +0200 -+++ busybox-1.26.0/modutils/modutils.c 2016-12-23 06:15:16.694563841 +0100 +From 7cf41b6e281c42fb7f2117927a8ff7f476103e76 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb <wbx@openadk.org> +Date: Sun, 25 Dec 2016 16:53:32 +0100 +Subject: [PATCH] modutils: remove special handling of uClibc + +Commit 3a45b87ac36f (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 + +Reported-by: Rahul Bedarkar <rahul.bedarkar@imgtec.com> +Signed-off-by: Waldemar Brodkorb <wbx@openadk.org> +--- + modutils/modprobe-small.c | 4 ++-- + modutils/modutils.c | 15 +++++---------- + 2 files changed, 7 insertions(+), 12 deletions(-) + +diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c +index 652ff4d..0fc9ea4 100644 +--- a/modutils/modprobe-small.c ++++ b/modutils/modprobe-small.c +@@ -39,8 +39,8 @@ + #include <fnmatch.h> + #include <sys/syscall.h> + +-extern int init_module(void *module, unsigned long len, const char *options); +-extern int delete_module(const char *module, unsigned flags); ++#define init_module(mod, len, opts) syscall(__NR_init_module, mod, len, opts) ++#define delete_module(mod, flags) syscall(__NR_delete_module, mod, flags) + #ifdef __NR_finit_module + # define finit_module(fd, uargs, flags) syscall(__NR_finit_module, fd, uargs, flags) + #endif +diff --git a/modutils/modutils.c b/modutils/modutils.c +index d36caaf..d56bfc8 100644 +--- a/modutils/modutils.c ++++ b/modutils/modutils.c @@ -7,17 +7,12 @@ */ #include "modutils.h" @@ -9,13 +56,21 @@ diff -Nur busybox-1.26.0.orig/modutils/modutils.c busybox-1.26.0/modutils/moduti -extern int init_module(void *module, unsigned long len, const char *options); -extern int delete_module(const char *module, unsigned int flags); -#else - # include <sys/syscall.h> - # 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 +-# include <sys/syscall.h> +-# 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) ++#include <sys/syscall.h> ++#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) static module_entry *helper_get_module(module_db *db, const char *module, int create) { +-- +2.1.4 + |