aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAndrew Gallatin <gallatin@FreeBSD.org>1999-08-20 14:21:35 +0000
committerAndrew Gallatin <gallatin@FreeBSD.org>1999-08-20 14:21:35 +0000
commitda83f611c3ba625ba3515197af7996a522b39678 (patch)
tree54e3d5865dd3af2fdd7588b743f29eb4344585b0 /sys
parente4fd6edfd80cb3d8a622a1cd11bdad736922d401 (diff)
downloadsrc-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.c3
-rw-r--r--sys/powerpc/powerpc/elf_machdep.c3
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;