]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SourceLevelDebugPkg/Library/PeCoffExtraActionLibDebug/PeCoffExtraActionLib.c
1. DebugAgentLib will install reserved vector table to persist vectors.
[mirror_edk2.git] / SourceLevelDebugPkg / Library / PeCoffExtraActionLibDebug / PeCoffExtraActionLib.c
index c28d7930a30afd3aa662133222f17e8327c946a4..9bf76bfb2219fa294ac0f50522c4c330d89a15d6 100644 (file)
@@ -80,18 +80,21 @@ PeCoffLoaderExtraActionCommon (
   IdtEntryHooked  = FALSE;\r
   LoadImageMethod = PcdGet8 (PcdDebugLoadImageMethod);\r
   AsmReadIdtr (&IdtDescriptor);\r
-  if (!CheckDebugAgentHandler (&IdtDescriptor)) {\r
-    if (LoadImageMethod == DEBUG_LOAD_IMAGE_METHOD_SOFT_INT3) {\r
+  if (LoadImageMethod == DEBUG_LOAD_IMAGE_METHOD_SOFT_INT3) {\r
+    if (!CheckDebugAgentHandler (&IdtDescriptor, SOFT_INT_VECTOR_NUM)) {\r
       //\r
       // Do not trigger INT3 if Debug Agent did not setup IDT entries.\r
       //\r
       return;\r
     }\r
-    //\r
-    // Save and update IDT entry for INT1\r
-    //\r
-    SaveAndUpdateIdtEntry1 (&IdtDescriptor, &OriginalIdtEntry);\r
-    IdtEntryHooked = TRUE;\r
+  } else {\r
+    if (!CheckDebugAgentHandler (&IdtDescriptor, IO_HW_BREAKPOINT_VECTOR_NUM)) {\r
+      //\r
+      // Save and update IDT entry for INT1\r
+      //\r
+      SaveAndUpdateIdtEntry1 (&IdtDescriptor, &OriginalIdtEntry);\r
+      IdtEntryHooked = TRUE;\r
+    }\r
   }\r
   \r
   //\r