Major coreutils update.

This commit is contained in:
Manuel Novoa III
2003-03-19 09:13:01 +00:00
parent e01f9662a5
commit cad5364599
295 changed files with 6944 additions and 5570 deletions

View File

@ -247,7 +247,7 @@
#ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1;
#ident "$Id: insmod.c,v 1.96 2003/03/13 18:57:08 andersen Exp $"
#ident "$Id: insmod.c,v 1.97 2003/03/19 09:12:33 mjn3 Exp $"
/* This file contains the structures used by the 2.0 and 2.1 kernels.
We do not use the kernel headers directly because we do not wish
@ -468,7 +468,7 @@ int delete_module(const char *);
#ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1;
#ident "$Id: insmod.c,v 1.96 2003/03/13 18:57:08 andersen Exp $"
#ident "$Id: insmod.c,v 1.97 2003/03/19 09:12:33 mjn3 Exp $"
/* The relocatable object is manipulated using elfin types. */
@ -769,12 +769,12 @@ static int check_module_name_match(const char *filename, struct stat *statbuf,
if (fullname[0] == '\0')
return (FALSE);
else {
char *tmp, *tmp1 = xstrdup(filename);
tmp = get_last_path_component(tmp1);
char *tmp, *tmp1 = bb_xstrdup(filename);
tmp = bb_get_last_path_component(tmp1);
if (strcmp(tmp, fullname) == 0) {
free(tmp1);
/* Stop searching if we find a match */
m_filename = xstrdup(filename);
m_filename = bb_xstrdup(filename);
return (TRUE);
}
free(tmp1);
@ -1700,7 +1700,7 @@ obj_add_symbol(struct obj_file *f, const char *name,
/* Don't report an error if the symbol is coming from
the kernel or some external module. */
if (secidx <= SHN_HIRESERVE)
error_msg("%s multiply defined", name);
bb_error_msg("%s multiply defined", name);
return sym;
}
}
@ -1713,7 +1713,7 @@ obj_add_symbol(struct obj_file *f, const char *name,
if (ELFW(ST_BIND)(info) == STB_LOCAL && symidx != -1) {
if (symidx >= f->local_symtab_size)
error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
bb_error_msg("local symbol %s with index %ld exceeds local_symtab_size %ld",
name, (long) symidx, (long) f->local_symtab_size);
else
f->local_symtab[symidx] = sym;
@ -1996,7 +1996,7 @@ old_process_module_arguments(struct obj_file *f, int argc, char **argv)
/* Also check that the parameter was not resolved from the kernel. */
if (sym == NULL || sym->secidx > SHN_HIRESERVE) {
error_msg("symbol for parameter %s not found", p);
bb_error_msg("symbol for parameter %s not found", p);
return 0;
}
@ -2009,7 +2009,7 @@ old_process_module_arguments(struct obj_file *f, int argc, char **argv)
str = alloca(strlen(q));
for (r = str, q++; *q != '"'; ++q, ++r) {
if (*q == '\0') {
error_msg("improperly terminated string argument for %s", p);
bb_error_msg("improperly terminated string argument for %s", p);
return 0;
} else if (*q == '\\')
switch (*++q) {
@ -2139,9 +2139,9 @@ static int old_get_kernel_symbols(const char *m_name)
nks = get_kernel_syms(NULL);
if (nks <= 0) {
if (nks)
perror_msg("get_kernel_syms: %s", m_name);
bb_perror_msg("get_kernel_syms: %s", m_name);
else
error_msg("No kernel symbols");
bb_error_msg("No kernel symbols");
return 0;
}
@ -2322,7 +2322,7 @@ old_init_module(const char *m_name, struct obj_file *f,
m_size | (flag_autoclean ? OLD_MOD_AUTOCLEAN
: 0), &routines, symtab);
if (ret)
perror_msg("init_module: %s", m_name);
bb_perror_msg("init_module: %s", m_name);
free(image);
free(symtab);
@ -2365,7 +2365,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
p = get_modinfo_value(f, key);
key += 5;
if (p == NULL) {
error_msg("invalid parameter %s", key);
bb_error_msg("invalid parameter %s", key);
return 0;
}
@ -2380,7 +2380,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
/* Also check that the parameter was not resolved from the kernel. */
if (sym == NULL || sym->secidx > SHN_HIRESERVE) {
error_msg("symbol for parameter %s not found", key);
bb_error_msg("symbol for parameter %s not found", key);
return 0;
}
@ -2408,7 +2408,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
str = alloca(strlen(q));
for (r = str, q++; *q != '"'; ++q, ++r) {
if (*q == '\0') {
error_msg("improperly terminated string argument for %s",
bb_error_msg("improperly terminated string argument for %s",
key);
return 0;
} else if (*q == '\\')
@ -2502,7 +2502,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
/* Get the size of each member */
/* Probably we should do that outside the loop ? */
if (!isdigit(*(p + 1))) {
error_msg("parameter type 'c' for %s must be followed by"
bb_error_msg("parameter type 'c' for %s must be followed by"
" the maximum size", key);
return 0;
}
@ -2510,7 +2510,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
/* Check length */
if (strlen(str) >= charssize) {
error_msg("string too long for %s (max %ld)", key,
bb_error_msg("string too long for %s (max %ld)", key,
charssize - 1);
return 0;
}
@ -2539,7 +2539,7 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
break;
default:
error_msg("unknown parameter type '%c' for %s", *p, key);
bb_error_msg("unknown parameter type '%c' for %s", *p, key);
return 0;
}
}
@ -2558,21 +2558,21 @@ new_process_module_arguments(struct obj_file *f, int argc, char **argv)
case ',':
if (++n > max) {
error_msg("too many values for %s (max %d)", key, max);
bb_error_msg("too many values for %s (max %d)", key, max);
return 0;
}
++q;
break;
default:
error_msg("invalid argument syntax for %s", key);
bb_error_msg("invalid argument syntax for %s", key);
return 0;
}
}
end_of_arg:
if (n < min) {
error_msg("too few values for %s (min %d)", key, min);
bb_error_msg("too few values for %s (min %d)", key, min);
return 0;
}
@ -2641,7 +2641,7 @@ static int new_get_kernel_symbols(void)
module_names = xrealloc(module_names, bufsize = ret);
goto retry_modules_load;
}
perror_msg("QM_MODULES");
bb_perror_msg("QM_MODULES");
return 0;
}
@ -2661,7 +2661,7 @@ static int new_get_kernel_symbols(void)
/* The module was removed out from underneath us. */
continue;
}
perror_msg("query_module: QM_INFO: %s", mn);
bb_perror_msg("query_module: QM_INFO: %s", mn);
return 0;
}
@ -2676,7 +2676,7 @@ static int new_get_kernel_symbols(void)
/* The module was removed out from underneath us. */
continue;
default:
perror_msg("query_module: QM_SYMBOLS: %s", mn);
bb_perror_msg("query_module: QM_SYMBOLS: %s", mn);
return 0;
}
}
@ -2702,7 +2702,7 @@ static int new_get_kernel_symbols(void)
syms = xrealloc(syms, bufsize = ret);
goto retry_kern_sym_load;
}
perror_msg("kernel: QM_SYMBOLS");
bb_perror_msg("kernel: QM_SYMBOLS");
return 0;
}
nksyms = nsyms = ret;
@ -2863,7 +2863,7 @@ new_init_module(const char *m_name, struct obj_file *f,
sec = obj_find_section(f, ".this");
if (!sec || !sec->contents) {
perror_msg_and_die("corrupt module %s?",m_name);
bb_perror_msg_and_die("corrupt module %s?",m_name);
}
module = (struct new_module *) sec->contents;
m_addr = sec->header.sh_addr;
@ -2927,7 +2927,7 @@ new_init_module(const char *m_name, struct obj_file *f,
ret = new_sys_init_module(m_name, (struct new_module *) image);
if (ret)
perror_msg("init_module: %s", m_name);
bb_perror_msg("init_module: %s", m_name);
free(image);
@ -3008,7 +3008,7 @@ static int obj_check_undefineds(struct obj_file *f)
sym->value = 0;
} else {
if (!flag_quiet) {
error_msg("unresolved symbol %s", sym->name);
bb_error_msg("unresolved symbol %s", sym->name);
}
ret = 0;
}
@ -3236,11 +3236,11 @@ static int obj_relocate(struct obj_file *f, ElfW(Addr) base)
errmsg = "Unhandled relocation";
bad_reloc:
if (extsym) {
error_msg("%s of type %ld for %s", errmsg,
bb_error_msg("%s of type %ld for %s", errmsg,
(long) ELFW(R_TYPE) (rel->r_info),
strtab + extsym->st_name);
} else {
error_msg("%s of type %ld", errmsg,
bb_error_msg("%s of type %ld", errmsg,
(long) ELFW(R_TYPE) (rel->r_info));
}
ret = 0;
@ -3317,7 +3317,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
fseek(fp, 0, SEEK_SET);
if (fread(&f->header, sizeof(f->header), 1, fp) != 1) {
perror_msg("error reading ELF header");
bb_perror_msg("error reading ELF header");
return NULL;
}
@ -3325,25 +3325,25 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
|| f->header.e_ident[EI_MAG1] != ELFMAG1
|| f->header.e_ident[EI_MAG2] != ELFMAG2
|| f->header.e_ident[EI_MAG3] != ELFMAG3) {
error_msg("not an ELF file");
bb_error_msg("not an ELF file");
return NULL;
}
if (f->header.e_ident[EI_CLASS] != ELFCLASSM
|| f->header.e_ident[EI_DATA] != ELFDATAM
|| f->header.e_ident[EI_VERSION] != EV_CURRENT
|| !MATCH_MACHINE(f->header.e_machine)) {
error_msg("ELF file not for this architecture");
bb_error_msg("ELF file not for this architecture");
return NULL;
}
if (f->header.e_type != ET_REL) {
error_msg("ELF file not a relocatable object");
bb_error_msg("ELF file not a relocatable object");
return NULL;
}
/* Read the section headers. */
if (f->header.e_shentsize != sizeof(ElfW(Shdr))) {
error_msg("section header size mismatch: %lu != %lu",
bb_error_msg("section header size mismatch: %lu != %lu",
(unsigned long) f->header.e_shentsize,
(unsigned long) sizeof(ElfW(Shdr)));
return NULL;
@ -3356,7 +3356,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
section_headers = alloca(sizeof(ElfW(Shdr)) * shnum);
fseek(fp, f->header.e_shoff, SEEK_SET);
if (fread(section_headers, sizeof(ElfW(Shdr)), shnum, fp) != shnum) {
perror_msg("error reading ELF section headers");
bb_perror_msg("error reading ELF section headers");
return NULL;
}
@ -3392,7 +3392,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
sec->contents = xmalloc(sec->header.sh_size);
fseek(fp, sec->header.sh_offset, SEEK_SET);
if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) {
perror_msg("error reading ELF section data");
bb_perror_msg("error reading ELF section data");
return NULL;
}
} else {
@ -3402,11 +3402,11 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
#if SHT_RELM == SHT_REL
case SHT_RELA:
error_msg("RELA relocations not supported on this architecture");
bb_error_msg("RELA relocations not supported on this architecture");
return NULL;
#else
case SHT_REL:
error_msg("REL relocations not supported on this architecture");
bb_error_msg("REL relocations not supported on this architecture");
return NULL;
#endif
@ -3419,7 +3419,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
break;
}
error_msg("can't handle sections of type %ld",
bb_error_msg("can't handle sections of type %ld",
(long) sec->header.sh_type);
return NULL;
}
@ -3454,7 +3454,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
ElfW(Sym) * sym;
if (sec->header.sh_entsize != sizeof(ElfW(Sym))) {
error_msg("symbol size mismatch: %lu != %lu",
bb_error_msg("symbol size mismatch: %lu != %lu",
(unsigned long) sec->header.sh_entsize,
(unsigned long) sizeof(ElfW(Sym)));
return NULL;
@ -3484,7 +3484,7 @@ static struct obj_file *obj_load(FILE * fp, int loadprogbits)
case SHT_RELM:
if (sec->header.sh_entsize != sizeof(ElfW(RelM))) {
error_msg("relocation entry size mismatch: %lu != %lu",
bb_error_msg("relocation entry size mismatch: %lu != %lu",
(unsigned long) sec->header.sh_entsize,
(unsigned long) sizeof(ElfW(RelM)));
return NULL;
@ -3523,7 +3523,7 @@ static int obj_load_progbits(FILE * fp, struct obj_file* f, char* imagebase)
sec->contents = imagebase + (sec->header.sh_addr - base);
fseek(fp, sec->header.sh_offset, SEEK_SET);
if (fread(sec->contents, sec->header.sh_size, 1, fp) != 1) {
error_msg("error reading ELF section data: %s\n", strerror(errno));
bb_error_msg("error reading ELF section data: %s\n", strerror(errno));
return 0;
}
@ -3710,14 +3710,14 @@ add_ksymoops_symbols(struct obj_file *f, const char *filename,
};
if (realpath(filename, real)) {
absolute_filename = xstrdup(real);
absolute_filename = bb_xstrdup(real);
}
else {
int save_errno = errno;
error_msg("cannot get realpath for %s", filename);
bb_error_msg("cannot get realpath for %s", filename);
errno = save_errno;
perror("");
absolute_filename = xstrdup(filename);
absolute_filename = bb_xstrdup(filename);
}
lm_name = strlen(m_name);
@ -3953,7 +3953,7 @@ extern int insmod_main( int argc, char **argv)
break;
case 'o': /* name the output module */
free(m_name);
m_name = xstrdup(optarg);
m_name = bb_xstrdup(optarg);
break;
case 'L': /* Stub warning */
/* This is needed for compatibility with modprobe.
@ -3967,16 +3967,16 @@ extern int insmod_main( int argc, char **argv)
break;
#endif
default:
show_usage();
bb_show_usage();
}
}
if (argv[optind] == NULL) {
show_usage();
bb_show_usage();
}
/* Grab the module name */
tmp1 = xstrdup(argv[optind]);
tmp1 = bb_xstrdup(argv[optind]);
tmp = basename(tmp1);
len = strlen(tmp);
@ -3985,7 +3985,7 @@ extern int insmod_main( int argc, char **argv)
tmp[len] = '\0';
}
bb_asprintf(&m_fullName, "%s.o", tmp);
bb_xasprintf(&m_fullName, "%s.o", tmp);
if (!m_name) {
m_name = tmp;
@ -4038,19 +4038,19 @@ extern int insmod_main( int argc, char **argv)
if (m_filename == 0
|| ((fp = fopen(m_filename, "r")) == NULL))
{
error_msg("%s: no module by that name found", m_fullName);
bb_error_msg("%s: no module by that name found", m_fullName);
goto out;
}
} else
error_msg_and_die("%s: no module by that name found", m_fullName);
bb_error_msg_and_die("%s: no module by that name found", m_fullName);
}
} else
m_filename = xstrdup(argv[optind]);
m_filename = bb_xstrdup(argv[optind]);
printf("Using %s\n", m_filename);
if ((f = obj_load(fp, LOADBITS)) == NULL)
perror_msg_and_die("Could not load the module");
bb_perror_msg_and_die("Could not load the module");
if (get_modinfo_value(f, "kernel_version") == NULL)
m_has_modinfo = 0;
@ -4067,7 +4067,7 @@ extern int insmod_main( int argc, char **argv)
} else {
m_version = old_get_module_version(f, m_strversion);
if (m_version == -1) {
error_msg("couldn't find the kernel version the module was "
bb_error_msg("couldn't find the kernel version the module was "
"compiled for");
goto out;
}
@ -4075,12 +4075,12 @@ extern int insmod_main( int argc, char **argv)
if (strncmp(uts_info.release, m_strversion, STRVERSIONLEN) != 0) {
if (flag_force_load) {
error_msg("Warning: kernel-module version mismatch\n"
bb_error_msg("Warning: kernel-module version mismatch\n"
"\t%s was compiled for kernel version %s\n"
"\twhile this kernel is version %s",
m_filename, m_strversion, uts_info.release);
} else {
error_msg("kernel-module version mismatch\n"
bb_error_msg("kernel-module version mismatch\n"
"\t%s was compiled for kernel version %s\n"
"\twhile this kernel is version %s.",
m_filename, m_strversion, uts_info.release);
@ -4099,7 +4099,7 @@ extern int insmod_main( int argc, char **argv)
goto out;
k_crcs = new_is_kernel_checksummed();
#else
error_msg("Not configured to support new kernels");
bb_error_msg("Not configured to support new kernels");
goto out;
#endif
} else {
@ -4108,7 +4108,7 @@ extern int insmod_main( int argc, char **argv)
goto out;
k_crcs = old_is_kernel_checksummed();
#else
error_msg("Not configured to support old kernels");
bb_error_msg("Not configured to support old kernels");
goto out;
#endif
}
@ -4170,14 +4170,14 @@ extern int insmod_main( int argc, char **argv)
m_addr = create_module(m_name, m_size);
if (m_addr == -1) switch (errno) {
case EEXIST:
error_msg("A module named %s already exists", m_name);
bb_error_msg("A module named %s already exists", m_name);
goto out;
case ENOMEM:
error_msg("Can't allocate kernel memory for module; needed %lu bytes",
bb_error_msg("Can't allocate kernel memory for module; needed %lu bytes",
m_size);
goto out;
default:
perror_msg("create_module: %s", m_name);
bb_perror_msg("create_module: %s", m_name);
goto out;
}