Page MenuHomeFreeBSD

D58540.diff
No OneTemporary

D58540.diff

diff --git a/stand/common/load_elf.c b/stand/common/load_elf.c
--- a/stand/common/load_elf.c
+++ b/stand/common/load_elf.c
@@ -838,7 +838,6 @@
if (module_verbose > MODULE_VERBOSE_SILENT)
printf("\n");
- ret = lastaddr - firstaddr;
fp->f_addr = firstaddr;
php = NULL;
@@ -901,25 +900,28 @@
break;
}
}
- if (ef->hashtab == NULL || ef->symtab == NULL ||
- ef->strtab == NULL || ef->strsz == 0)
- goto out;
- COPYOUT(ef->hashtab, &ef->nbuckets, sizeof(ef->nbuckets));
- COPYOUT(ef->hashtab + 1, &ef->nchains, sizeof(ef->nchains));
- ef->buckets = ef->hashtab + 2;
- ef->chains = ef->buckets + ef->nbuckets;
-
- if (__elfN(lookup_symbol)(ef, "__start_set_modmetadata_set", &sym,
- STT_NOTYPE) != 0)
- return 0;
- p_start = sym.st_value + ef->off;
- if (__elfN(lookup_symbol)(ef, "__stop_set_modmetadata_set", &sym,
- STT_NOTYPE) != 0)
- return 0;
- p_end = sym.st_value + ef->off;
+ if (ef->hashtab != NULL && ef->symtab != NULL &&
+ ef->strtab != NULL && ef->strsz != 0) {
+ COPYOUT(ef->hashtab, &ef->nbuckets, sizeof(ef->nbuckets));
+ COPYOUT(ef->hashtab + 1, &ef->nchains, sizeof(ef->nchains));
+ ef->buckets = ef->hashtab + 2;
+ ef->chains = ef->buckets + ef->nbuckets;
+ }
- if (__elfN(parse_modmetadata)(fp, ef, p_start, p_end) == 0)
- goto out;
+ /* Don't emit a warning if there is no symbol table. */
+ if (ef->buckets != 0 && __elfN(lookup_symbol)(ef,
+ "__start_set_modmetadata_set", &sym, STT_NOTYPE) == 0) {
+ p_start = sym.st_value + ef->off;
+ if (__elfN(lookup_symbol)(ef, "__stop_set_modmetadata_set",
+ &sym, STT_NOTYPE) != 0)
+ goto out;
+ p_end = sym.st_value + ef->off;
+
+ if (__elfN(parse_modmetadata)(fp, ef, p_start, p_end) != 0)
+ goto out;
+ }
+
+ ret = lastaddr - firstaddr;
out:
if (dp)

File Metadata

Mime Type
text/plain
Expires
Sun, Aug 2, 5:11 AM (2 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35827530
Default Alt Text
D58540.diff (1 KB)

Event Timeline