Author: ian
Date: Wed Feb 28 21:51:51 2018
New Revision: 330131
URL: https://svnweb.freebsd.org/changeset/base/330131

Log:
  Fix module loading on arm after the metadata.c unification in r329190.
  Arm modules need an additional address fixup not needed by other platforms.

Modified:
  head/stand/common/metadata.c

Modified: head/stand/common/metadata.c
==============================================================================
--- head/stand/common/metadata.c        Wed Feb 28 21:49:44 2018        
(r330130)
+++ head/stand/common/metadata.c        Wed Feb 28 21:51:51 2018        
(r330131)
@@ -265,6 +265,7 @@ md_copymodules(vm_offset_t addr, int kern64)
     struct preloaded_file      *fp;
     struct file_metadata       *md;
     uint64_t                   scratch64;
+    uint32_t                   scratch32;
     int                                c;
 
     c = addr != 0;
@@ -281,7 +282,11 @@ md_copymodules(vm_offset_t addr, int kern64)
                scratch64 = fp->f_size;
                MOD_SIZE(addr, scratch64, c);
        } else {
-               MOD_ADDR(addr, fp->f_addr, c);
+               scratch32 = fp->f_addr;
+#ifdef __arm__
+               scratch32 -= __elfN(relocation_offset);
+#endif
+               MOD_ADDR(addr, scratch32, c);
                MOD_SIZE(addr, fp->f_size, c);
        }
        for (md = fp->f_metadata; md != NULL; md = md->md_next) {
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to