[ros-bugs] [Bug 5618] New: PATCH: pefixup: IMAGE_SCN_MEM_NOT_PAGED not set for .rdata WDM section

ReactOS.Bugzilla at reactos.org ReactOS.Bugzilla at reactos.org
Sat Sep 18 11:40:01 UTC 2010


http://www.reactos.org/bugzilla/show_bug.cgi?id=5618

           Summary: PATCH: pefixup: IMAGE_SCN_MEM_NOT_PAGED not set for
                    .rdata WDM section
           Product: ReactOS
           Version: TRUNK
          Platform: x86 Hardware
        OS/Version: ReactOS
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: Tools
        AssignedTo: ros-bugs at reactos.org
        ReportedBy: olaf_siejka at o2.pl


I have noticed, that pxefixup does not set IMAGE_SCN_MEM_NOT_PAGED flag
for read-only data section ".rdata". May it be, that it is problem
for my own build of tools

586-mingw32-gcc (GCC) 4.4.2 and
GNU ld (GNU Binutils) 2.20.51.20100608

I have fixed the problem by preparing modified LD script version
which collect object files .rdata section into .text section
for my driver build.

But .rdata is legitimate section and it is automatically
generated by GCC. I have not found information in Wiki
or list archives, that there is some way/patch to deal
with this situation. But if it is allowed, that WDM
driver binaries contains readonly section then data paging
could lead to horrible consequences. Possible fix


diff --git a/reactos/tools/pefixup.c b/reactos/tools/pefixup.c
index f908a9a..d6ec1f4 100644
--- a/reactos/tools/pefixup.c
+++ b/reactos/tools/pefixup.c
@@ -381,6 +381,7 @@ int main(int argc, char **argv)
         if (!strcmp((char*)section_header->Name, ".text") ||
             !strcmp((char*)section_header->Name, ".data") ||
             !strcmp((char*)section_header->Name, ".idata") ||
+             !strcmp((char*)section_header->Name, ".rdata") ||
             !strcmp((char*)section_header->Name, ".bss"))
         {
            section_header->Characteristics |= htodl(IMAGE_SCN_MEM_NOT_PAGED);

If .rdata are not allowed or should be used only for pseudo_reloc,
then the ldscript for kernel code should be provided.


Missing flag for .rdata section in objdump ouput

$ i586-mingw32-objdump --headers ul_wdm.sys
BFD: ul_wdm.sys: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in
section .text
BFD: ul_wdm.sys: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in
section .data
BFD: ul_wdm.sys: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in
section .bss
BFD: ul_wdm.sys: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in
section .idata

ul_wdm.sys:     file format pei-i386

Sections:
Idx Name          Size      VMA        LMA     File off  Algn
 0 .text         0000cabc  00011000  00011000  00001000  2**2
                 CONTENTS, ALLOC, LOAD, READONLY, CODE
 1 .data         000000e8  0001e000  0001e000  0000e000  2**2
                 CONTENTS, ALLOC, LOAD, DATA
 2 .rdata        00003c20  0001f000  0001f000  0000f000  2**2
                 CONTENTS, ALLOC, LOAD, READONLY, DATA
 3 .bss          00000050  00023000  00023000  00000000  2**2
                 ALLOC
 4 .edata        00000033  00024000  00024000  00013000  2**2
                 CONTENTS, ALLOC, LOAD, READONLY, DATA
 5 .idata        000008c4  00025000  00025000  00014000  2**2
                 CONTENTS, ALLOC, LOAD, DATA
 6 .rsrc         0000035c  00026000  00026000  00015000  2**2
                 CONTENTS, ALLOC, LOAD, DATA
 7 .reloc        00000cd4  00027000  00027000  00016000  2**2
                 CONTENTS, ALLOC, LOAD, READONLY, DATA
 8 .rossym       0001576d  00028000  00028000  00017000  2**2
                 CONTENTS, READONLY, NEVER_LOAD, EXCLUDE


-- 
Configure bugmail: http://www.reactos.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the Ros-bugs mailing list