diff options
author | Andrew Gallatin <gallatin@FreeBSD.org> | 1999-08-20 14:21:35 +0000 |
---|---|---|
committer | Andrew Gallatin <gallatin@FreeBSD.org> | 1999-08-20 14:21:35 +0000 |
commit | da83f611c3ba625ba3515197af7996a522b39678 (patch) | |
tree | 54e3d5865dd3af2fdd7588b743f29eb4344585b0 /sys | |
parent | e4fd6edfd80cb3d8a622a1cd11bdad736922d401 (diff) | |
download | src-da83f611c3ba625ba3515197af7996a522b39678.tar.gz src-da83f611c3ba625ba3515197af7996a522b39678.zip |
Fix a nasty kld bug where modules with objects of type GLOB_DAT which had
non-zero addends were being loaded incorrectly
Notes
Notes:
svn path=/head/; revision=50085
Diffstat (limited to 'sys')
-rw-r--r-- | sys/alpha/alpha/elf_machdep.c | 3 | ||||
-rw-r--r-- | sys/powerpc/powerpc/elf_machdep.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/sys/alpha/alpha/elf_machdep.c b/sys/alpha/alpha/elf_machdep.c index 2c559a54b3be..646e3536573e 100644 --- a/sys/alpha/alpha/elf_machdep.c +++ b/sys/alpha/alpha/elf_machdep.c @@ -22,7 +22,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: elf_machdep.c,v 1.4 1999/04/23 19:53:37 dt Exp $ + * $Id: elf_machdep.c,v 1.5 1999/07/16 09:16:11 dfr Exp $ */ #include <sys/param.h> @@ -85,6 +85,7 @@ elf_reloc(linker_file_t lf, const void *data, int type, const char *sym) linker_file_lookup_symbol(lf, sym, 1); if (addr == NULL) return -1; + addr += addend; if (*where != addr) *where = addr; break; diff --git a/sys/powerpc/powerpc/elf_machdep.c b/sys/powerpc/powerpc/elf_machdep.c index 2c559a54b3be..646e3536573e 100644 --- a/sys/powerpc/powerpc/elf_machdep.c +++ b/sys/powerpc/powerpc/elf_machdep.c @@ -22,7 +22,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id: elf_machdep.c,v 1.4 1999/04/23 19:53:37 dt Exp $ + * $Id: elf_machdep.c,v 1.5 1999/07/16 09:16:11 dfr Exp $ */ #include <sys/param.h> @@ -85,6 +85,7 @@ elf_reloc(linker_file_t lf, const void *data, int type, const char *sym) linker_file_lookup_symbol(lf, sym, 1); if (addr == NULL) return -1; + addr += addend; if (*where != addr) *where = addr; break; |