- Fix broken testsuites on 32bit systems.
add: fix-32bits.diff OBS-URL: https://build.opensuse.org/package/show/Base:System/kmod?expand=0&rev=32
This commit is contained in:
parent
87a9c849bd
commit
4c5553e792
@ -1,15 +0,0 @@
|
||||
Index: kmod-9/testsuite/init_module.c
|
||||
===================================================================
|
||||
--- kmod-9.orig/testsuite/init_module.c
|
||||
+++ kmod-9/testsuite/init_module.c
|
||||
@@ -147,7 +147,9 @@ static int create_sysfs_files(const char
|
||||
strcpy(buf + len, modname);
|
||||
len += strlen(modname);
|
||||
|
||||
- assert(mkdir_p(buf, 0755) >= 0);
|
||||
+ // This fails on 32bit systems, we can't use assert
|
||||
+ // assert(mkdir_p(buf, 0755) >= 0);
|
||||
+ mkdir_p(buf, 0755);
|
||||
|
||||
strcpy(buf + len, "/initstate");
|
||||
return write_one_line_file(buf, "live\n", strlen("live\n"));
|
79
fix-32bits.diff
Normal file
79
fix-32bits.diff
Normal file
@ -0,0 +1,79 @@
|
||||
diff --git a/testsuite/init_module.c b/testsuite/init_module.c
|
||||
index 814998a..ed8b9fc 100644
|
||||
--- a/testsuite/init_module.c
|
||||
+++ b/testsuite/init_module.c
|
||||
@@ -16,6 +16,7 @@
|
||||
*/
|
||||
|
||||
#include <assert.h>
|
||||
+#include <elf.h>
|
||||
#include <errno.h>
|
||||
#include <dirent.h>
|
||||
#include <fcntl.h>
|
||||
@@ -206,6 +207,12 @@ static inline bool module_is_inkernel(const char *modname)
|
||||
return ret;
|
||||
}
|
||||
|
||||
+static uint8_t elf_identify(void *mem)
|
||||
+{
|
||||
+ uint8_t *p = mem;
|
||||
+ return p[EI_CLASS];
|
||||
+}
|
||||
+
|
||||
TS_EXPORT long init_module(void *mem, unsigned long len, const char *args);
|
||||
|
||||
/*
|
||||
@@ -225,6 +232,8 @@ long init_module(void *mem, unsigned long len, const char *args)
|
||||
const void *buf;
|
||||
uint64_t bufsize;
|
||||
int err;
|
||||
+ uint8_t class;
|
||||
+ off_t offset;
|
||||
|
||||
init_retcodes();
|
||||
|
||||
@@ -237,13 +246,20 @@ long init_module(void *mem, unsigned long len, const char *args)
|
||||
kmod_elf_unref(elf);
|
||||
|
||||
/*
|
||||
- * We couldn't find the module's name inside the ELF file. Just exit
|
||||
- * as if it was successful
|
||||
+ * We couldn't find the parse the ELF file. Just exit as if it was
|
||||
+ * successful
|
||||
*/
|
||||
if (err < 0)
|
||||
return 0;
|
||||
|
||||
- modname = (char *)buf + offsetof(struct module, name);
|
||||
+ /* We need to open both 32 and 64 bits module - hack! */
|
||||
+ class = elf_identify(mem);
|
||||
+ if (class == ELFCLASS64)
|
||||
+ offset = MODULE_NAME_OFFSET_64;
|
||||
+ else
|
||||
+ offset = MODULE_NAME_OFFSET_32;
|
||||
+
|
||||
+ modname = (char *)buf + offset;
|
||||
mod = find_module(modules, modname);
|
||||
if (mod != NULL) {
|
||||
errno = mod->errcode;
|
||||
diff --git a/testsuite/stripped-module.h b/testsuite/stripped-module.h
|
||||
index 9f97dae..19862f3 100644
|
||||
--- a/testsuite/stripped-module.h
|
||||
+++ b/testsuite/stripped-module.h
|
||||
@@ -13,6 +13,7 @@ struct list_head {
|
||||
};
|
||||
|
||||
#define MODULE_NAME_LEN (64 - sizeof(unsigned long))
|
||||
+
|
||||
struct module
|
||||
{
|
||||
enum module_state state;
|
||||
@@ -24,4 +25,8 @@ struct module
|
||||
char name[MODULE_NAME_LEN];
|
||||
};
|
||||
|
||||
+/* padding */
|
||||
+#define MODULE_NAME_OFFSET_64 4 + 4 + 2 * 8
|
||||
+#define MODULE_NAME_OFFSET_32 4 + 2 * 4
|
||||
+
|
||||
#endif
|
@ -11,8 +11,8 @@ Wed Jun 20 08:41:03 UTC 2012 - rmilasan@suse.com
|
||||
* depmod: don't return error if modules.builtin don't exist
|
||||
* libkmod-util: split function for usec conversion
|
||||
* libkmod-util: add missing stdbool.h include
|
||||
- Don't assert mkdir_p, it fails on 32bit systems.
|
||||
add: dont-assert-mkdir_p.patch
|
||||
- Fix broken testsuites on 32bit systems.
|
||||
add: fix-32bits.diff
|
||||
-------------------------------------------------------------------
|
||||
Sat Apr 21 01:55:30 UTC 2012 - jengelh@medozas.de
|
||||
|
||||
|
@ -30,7 +30,7 @@ Url: http://www.politreco.com/2011/12/announce-kmod-2/
|
||||
Source: %name-%version.tar.xz
|
||||
Source2: %name-%version.tar.sign
|
||||
Patch1: kmod-so-version.diff
|
||||
Patch2: dont-assert-mkdir_p.patch
|
||||
Patch2: fix-32bits.diff
|
||||
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildRequires: autoconf
|
||||
|
Loading…
Reference in New Issue
Block a user