summaryrefslogtreecommitdiffstats
path: root/sys/kern/link_aout.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1999-11-28 12:06:29 +0000
committerpeter <peter@FreeBSD.org>1999-11-28 12:06:29 +0000
commit6defa5e0424b3a0ce8153a94fd20e3b53bdd74d5 (patch)
tree3a86c3de13941d2758e0aa17c98468e976810016 /sys/kern/link_aout.c
parent348a0952c02bda458f18c33d2836f297f2979c6a (diff)
downloadFreeBSD-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/link_aout.c')
-rw-r--r--sys/kern/link_aout.c10
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;
}
}
OpenPOWER on IntegriCloud