Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Nov 2009 16:25:41 +0000 (UTC)
From:      Rafal Jaworowski <raj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r199534 - head/sys/boot/uboot/common
Message-ID:  <200911191625.nAJGPfx7011864@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: raj
Date: Thu Nov 19 16:25:41 2009
New Revision: 199534
URL: http://svn.freebsd.org/changeset/base/199534

Log:
  Provide an effective (relocated) address when building modules metadata.
  
  This lets modules loaded dynamically in loader(8) work for U-Boot-based
  platforms.
  
  MFC after:	1 week

Modified:
  head/sys/boot/uboot/common/metadata.c

Modified: head/sys/boot/uboot/common/metadata.c
==============================================================================
--- head/sys/boot/uboot/common/metadata.c	Thu Nov 19 16:21:26 2009	(r199533)
+++ head/sys/boot/uboot/common/metadata.c	Thu Nov 19 16:25:41 2009	(r199534)
@@ -231,6 +231,7 @@ md_copymodules(vm_offset_t addr)
 	struct preloaded_file	*fp;
 	struct file_metadata	*md;
 	int			c;
+	vm_offset_t a;
 
 	c = addr != 0;
 	/* start with the first module on the list, should be the kernel */
@@ -240,7 +241,8 @@ md_copymodules(vm_offset_t addr)
 		MOD_TYPE(addr, fp->f_type, c);
 		if (fp->f_args)
 			MOD_ARGS(addr, fp->f_args, c);
-		MOD_ADDR(addr, fp->f_addr, c);
+		a = fp->f_addr - __elfN(relocation_offset);
+		MOD_ADDR(addr, a, c);
 		MOD_SIZE(addr, fp->f_size, c);
 		for (md = fp->f_metadata; md != NULL; md = md->md_next) {
 			if (!(md->md_type & MODINFOMD_NOCOPY))



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911191625.nAJGPfx7011864>