char *name;
char *depends;
- char *options;
+ char *opts;
int size;
int usage;
return name;
}
-#if __WORDSIZE == 64
-static int elf_find_section(char *map, const char *section, unsigned int *offset, unsigned int *size)
+static int elf64_find_section(char *map, const char *section, unsigned int *offset, unsigned int *size)
{
const char *secnames;
Elf64_Ehdr *e;
return -1;
}
-#else
-static int elf_find_section(char *map, const char *section, unsigned int *offset, unsigned int *size)
+
+static int elf32_find_section(char *map, const char *section, unsigned int *offset, unsigned int *size)
{
const char *secnames;
Elf32_Ehdr *e;
return -1;
}
-#endif
+
+static int elf_find_section(char *map, const char *section, unsigned int *offset, unsigned int *size)
+{
+ int clazz = map[EI_CLASS];
+
+ if (clazz == ELFCLASS32)
+ return elf32_find_section(map, section, offset, size);
+ else if (clazz == ELFCLASS64)
+ return elf64_find_section(map, section, offset, size);
+
+ LOG("unknown elf format %d\n", clazz);
+
+ return -1;
+}
static struct module *
alloc_module(const char *name, const char *depends, int size)
return NULL;
m->avl.key = m->name = strcpy(_name, name);
+ m->opts = 0;
if (depends) {
m->depends = strcpy(_dep, depends);
todo = 0;
avl_for_each_element(&modules, m, avl) {
if ((m->state == PROBE) && (!deps_available(m, 0))) {
- if (!insert_module(get_module_path(m->name), m->options)) {
+ if (!insert_module(get_module_path(m->name), (m->opts) ? (m->opts) : (""))) {
m->state = LOADED;
m->error = 0;
loaded++;
cur += sprintf(cur, "%s", argv[i]);
}
+ if (get_module_path(argv[1])) {
+ name = argv[1];
+ } else if (!get_module_path(name)) {
+ fprintf(stderr, "Failed to find %s. Maybe it is a built in module ?\n", name);
+ return -1;
+ }
+
ret = insert_module(get_module_path(name), options);
free(options);
if (!m || (m->state == LOADED))
continue;
- m->options = opts;
+ if (opts)
+ m->opts = strdup(opts);
m->state = PROBE;
if (basename(gl.gl_pathv[j])[0] - '0' <= 9)
load_modprobe();