[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