- DebugEntry->TimeDateStamp = 0;\r
- mImageTimeStamp = 0;\r
- if (ZeroDebugFlag) {\r
- memset (FileBuffer + DebugEntry->FileOffset, 0, DebugEntry->SizeOfData);\r
- memset (DebugEntry, 0, sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY));\r
+ Index = 0;\r
+ for (Index=0; Index < DebugDirectoryEntrySize / sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY); Index ++, DebugEntry ++) {\r
+ DebugEntry->TimeDateStamp = 0;\r
+ if (ZeroDebugFlag || DebugEntry->Type != EFI_IMAGE_DEBUG_TYPE_CODEVIEW) {\r
+ memset (FileBuffer + DebugEntry->FileOffset, 0, DebugEntry->SizeOfData);\r
+ memset (DebugEntry, 0, sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY));\r
+ }\r
+ if (DebugEntry->Type == EFI_IMAGE_DEBUG_TYPE_CODEVIEW) {\r
+ RsdsEntry = (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY *) (FileBuffer + DebugEntry->FileOffset);\r
+ if (RsdsEntry->Signature == CODEVIEW_SIGNATURE_RSDS) {\r
+ RsdsEntry->Unknown = 0;\r
+ RsdsEntry->Unknown2 = 0;\r
+ RsdsEntry->Unknown3 = 0;\r
+ RsdsEntry->Unknown4 = 0;\r
+ RsdsEntry->Unknown5 = 0;\r
+ } else if (RsdsEntry->Signature == CODEVIEW_SIGNATURE_MTOC) {\r
+ // MTOC sets DebugDirectoryEntrySize to size of the .debug section, so fix it.\r
+ if (!ZeroDebugFlag) {\r
+ if (Optional32Hdr->Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {\r
+ Optional32Hdr->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG].Size = sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY);\r
+ } else {\r
+ Optional64Hdr->DataDirectory[EFI_IMAGE_DIRECTORY_ENTRY_DEBUG].Size = sizeof (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY);\r
+ }\r
+ }\r
+ break;\r
+ }\r
+ }\r