summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/ld
diff options
context:
space:
mode:
authoritohy <itohy@NetBSD.org>1999-01-05 10:02:20 +0000
committeritohy <itohy@NetBSD.org>1999-01-05 10:02:20 +0000
commit85da239ef8ed87de75fa466e694b13bbd4c9639a (patch)
tree31f33b3e1d510a880867c876013ab0e9a3d9d2e1 /gnu/usr.bin/ld
parent56d26266a5e6adf28141dc6e39c329157d14895d (diff)
Fix byte order swapping for cross linker.
Diffstat (limited to 'gnu/usr.bin/ld')
-rw-r--r--gnu/usr.bin/ld/ld/rrs.c4
-rw-r--r--gnu/usr.bin/ld/ld/xbits.c19
2 files changed, 8 insertions, 15 deletions
diff --git a/gnu/usr.bin/ld/ld/rrs.c b/gnu/usr.bin/ld/ld/rrs.c
index 51270810350..2089aa6e17d 100644
--- a/gnu/usr.bin/ld/ld/rrs.c
+++ b/gnu/usr.bin/ld/ld/rrs.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rrs.c,v 1.27 1998/12/17 14:34:51 pk Exp $ */
+/* $NetBSD: rrs.c,v 1.28 1999/01/05 10:02:20 itohy Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -1189,7 +1189,7 @@ write_rrs_text()
/* Write the symbol table */
if (rrs_symbol_size == sizeof(struct nlist))
- md_swapout_symbols(rrs_symbols, number_of_rrs_symbols);
+ md_swapout_symbols((struct nlist *) rrs_symbols, number_of_rrs_symbols);
else
md_swapout_zsymbols(rrs_symbols, number_of_rrs_symbols);
mywrite(rrs_symbols, symsize, 1, outstream);
diff --git a/gnu/usr.bin/ld/ld/xbits.c b/gnu/usr.bin/ld/ld/xbits.c
index 7cea2fbc6ed..ca824408351 100644
--- a/gnu/usr.bin/ld/ld/xbits.c
+++ b/gnu/usr.bin/ld/ld/xbits.c
@@ -1,4 +1,4 @@
-/* $NetBSD: xbits.c,v 1.7 1998/12/17 14:34:52 pk Exp $ */
+/* $NetBSD: xbits.c,v 1.8 1999/01/05 10:02:21 itohy Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -133,8 +133,10 @@ swapin_sod(sodp, n)
sodp->sod_major = md_swap_short(sodp->sod_major);
sodp->sod_minor = md_swap_short(sodp->sod_minor);
sodp->sod_next = md_swap_long(sodp->sod_next);
- bits = ((unsigned long *)sodp)[1];
- sodp->sod_library = ((bits >> 24) & 1);
+ /* swap sod_library flag */
+ bits = ((unsigned char *)sodp)[4];
+ ((u_int *)sodp)[1] = 0; /* clear reserved bits */
+ ((unsigned char *)sodp)[4] = ((bits & 1) << 7) | (bits>>7 & 1);
}
}
@@ -143,16 +145,7 @@ swapout_sod(sodp, n)
struct sod *sodp;
int n;
{
- unsigned long bits;
-
- for (; n; n--, sodp++) {
- sodp->sod_name = md_swap_long(sodp->sod_name);
- sodp->sod_major = md_swap_short(sodp->sod_major);
- sodp->sod_minor = md_swap_short(sodp->sod_minor);
- sodp->sod_next = md_swap_long(sodp->sod_next);
- bits = (unsigned long)(sodp->sod_library) << 24;
- ((unsigned long *)sodp)[1] = bits;
- }
+ swapin_sod(sodp, n);
}
void