ARM: guard masked symbol tables by default
authorDam Sunwoo <dam.sunwoo@arm.com>
Thu, 10 May 2012 23:04:27 +0000 (18:04 -0500)
committerDam Sunwoo <dam.sunwoo@arm.com>
Thu, 10 May 2012 23:04:27 +0000 (18:04 -0500)
Symbol tables masked with the loadAddrMask create redundant entries
that could conflict with kernel function events that rely on the
original addresses.  This patch guards the creation of those masked
symbol tables by default, with an option to enable them when needed
(for early-stage kernel debugging, etc.)

src/arch/arm/ArmSystem.py
src/arch/arm/linux/system.cc

index f4aedaf9800313300e93aabb660675339a83a3cc..a86fc88221f64d9e1d4738c3886f7b2014701a8f 100644 (file)
@@ -65,3 +65,4 @@ class LinuxArmSystem(ArmSystem):
     machine_type = Param.ArmMachineType('RealView_PBX',
         "Machine id from http://www.arm.linux.org.uk/developer/machines/")
     atags_addr = Param.Addr(0x100, "Address where default atags structure should be written")
+    early_kernel_symbols = Param.Bool(False, "enable early kernel symbol tables before MMU")
index 0d9e73a53a7fccd2d52e502db79693095a544859..d537717ec09101c803ca9e901676430b7dc5ebd6 100644 (file)
@@ -114,10 +114,12 @@ LinuxArmSystem::initState()
     ArmSystem::initState();
 
     // Load symbols at physical address, we might not want
-    // to do this perminately, for but early bootup work
-    // it is helpfulp.
-    kernel->loadGlobalSymbols(kernelSymtab, loadAddrMask);
-    kernel->loadGlobalSymbols(debugSymbolTable, loadAddrMask);
+    // to do this permanently, for but early bootup work
+    // it is helpful.
+    if (params()->early_kernel_symbols) {
+        kernel->loadGlobalSymbols(kernelSymtab, loadAddrMask);
+        kernel->loadGlobalSymbols(debugSymbolTable, loadAddrMask);
+    }
 
     // Setup boot data structure
     AtagCore *ac = new AtagCore;