[ros-diffs] [rharabien] 54613: [RSYM] - Don't strip relocations for some sections. Linker knows better if they are needed. Fixes removed relocations for delayed imports in idata section. Bug traced by me, Timo...

rharabien at svn.reactos.org rharabien at svn.reactos.org
Thu Dec 8 19:02:05 UTC 2011


Author: rharabien
Date: Thu Dec  8 19:02:04 2011
New Revision: 54613

URL: http://svn.reactos.org/svn/reactos?rev=54613&view=rev
Log:
[RSYM]
- Don't strip relocations for some sections. Linker knows better if they are needed. Fixes removed relocations for delayed imports in idata section. Bug traced by me, Timo and Amine.
See issue #6618 for more details.

Modified:
    trunk/reactos/tools/rsym/rsym.c

Modified: trunk/reactos/tools/rsym/rsym.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rsym/rsym.c?rev=54613&r1=54612&r2=54613&view=diff
==============================================================================
--- trunk/reactos/tools/rsym/rsym.c [iso-8859-1] (original)
+++ trunk/reactos/tools/rsym/rsym.c [iso-8859-1] Thu Dec  8 19:02:04 2011
@@ -432,35 +432,6 @@
 }
 
 static int
-IncludeRelocationsForSection(PIMAGE_SECTION_HEADER SectionHeader)
-{
-  static char *BlacklistedSections[] =
-    {
-      ".edata",
-      ".idata",
-      ".reloc"
-    };
-  char SectionName[IMAGE_SIZEOF_SHORT_NAME];
-  unsigned i;
-
-  if (0 != (SectionHeader->Characteristics & IMAGE_SCN_LNK_REMOVE))
-    {
-      return 0;
-    }
-
-  for (i = 0; i < sizeof(BlacklistedSections) / sizeof(BlacklistedSections[0]); i++)
-    {
-      strncpy(SectionName, BlacklistedSections[i], IMAGE_SIZEOF_SHORT_NAME);
-      if (0 == memcmp(SectionName, SectionHeader->Name, IMAGE_SIZEOF_SHORT_NAME))
-        {
-          return 0;
-        }
-    }
-
-  return 1;
-}
-
-static int
 ProcessRelocations(ULONG *ProcessedRelocsLength, void **ProcessedRelocs,
                    void *RawData, PIMAGE_OPTIONAL_HEADER OptHeader,
                    unsigned NumberOfSections, PIMAGE_SECTION_HEADER SectionHeaders)
@@ -505,7 +476,7 @@
     {
       TargetSectionHeader = FindSectionForRVA(BaseReloc->VirtualAddress, NumberOfSections,
                                               SectionHeaders);
-      if (NULL != TargetSectionHeader && IncludeRelocationsForSection(TargetSectionHeader))
+      if (NULL != TargetSectionHeader)
         {
           AcceptedRelocs = *ProcessedRelocs;
           Found = 0;




More information about the Ros-diffs mailing list