diff options
author | peter <peter@FreeBSD.org> | 1999-11-28 12:06:29 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1999-11-28 12:06:29 +0000 |
commit | 6defa5e0424b3a0ce8153a94fd20e3b53bdd74d5 (patch) | |
tree | 3a86c3de13941d2758e0aa17c98468e976810016 /sys/kern | |
parent | 348a0952c02bda458f18c33d2836f297f2979c6a (diff) | |
download | FreeBSD-src-6defa5e0424b3a0ce8153a94fd20e3b53bdd74d5.zip FreeBSD-src-6defa5e0424b3a0ce8153a94fd20e3b53bdd74d5.tar.gz |
Take a shot at implementing the fix for PR 15014 for the a.out kernel
linker as well.
PR: 15014
Submitted by: Vladimir N. Silyaev <vns@delta.odessa.ua>
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/link_aout.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/kern/link_aout.c b/sys/kern/link_aout.c index 50d1e1c..bc46101 100644 --- a/sys/kern/link_aout.c +++ b/sys/kern/link_aout.c @@ -563,19 +563,21 @@ link_aout_search_symbol(linker_file_t lf, caddr_t value, struct nzlist* sp; struct nzlist* ep; struct nzlist* best = 0; + u_long sp_nz_value; for (sp = AOUT_RELOC(af, struct nzlist, LD_SYMBOL(af->dynamic)), ep = (struct nzlist *) ((caddr_t) sp + LD_STABSZ(af->dynamic)); sp < ep; sp++) { if (sp->nz_name == 0) continue; - if (off >= sp->nz_value) { - if (off - sp->nz_value < diff) { - diff = off - sp->nz_value; + sp_nz_value = sp->nz_value + (u_long)af->address; + if (off >= sp_nz_value) { + if (off - sp_nz_value < diff) { + diff = off - sp_nz_value; best = sp; if (diff == 0) break; - } else if (off - sp->nz_value == diff) { + } else if (off - sp_nz_value == diff) { best = sp; } } |