This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch PE-COFF]: Some minor nits


2009/3/18 Dave Korn <dave.korn.cygwin@googlemail.com>:
> Kai Tietz wrote:
>> Dave Korn <dave.korn.cygwin@googlemail.com> wrote on 17.03.2009 00:15:12:
>
>>> ? Can you point us at a reference for this? ?And have you run the GDB
>>> testsuite to see if it causes any changes?
>
>> Well, see pe-coff-v8 specification in section "46 Special Sections". Here
>> are the used section flags given.
>
> ?Right, thank you. ?That looks like the correct mapping of bits, but I think
> I spotted something inconsistent:
>
> + ?if ((sec_flags & SEC_COFF_NOREAD) == 0)
> + ? ?styp_flags |= IMAGE_SCN_MEM_READ; ? ? /* Invert NOREAD for read. ?*/
>
> ?Set IMAGE_SCN_MEM_READ if *NOT* COFF_NOREAD.
>
> + ?/* If section disallows read, then set the NOREAD flag. */
> + ?if ((styp_flags & IMAGE_SCN_MEM_READ) == 0)
> + ? ?sec_flags |= SEC_COFF_NOREAD;
>
> ?Set COFF_NOREAD if *NOT* IMAGE_SCN_MEM_READ.
>
> ? ? ? ?case IMAGE_SCN_MEM_READ:
> - ? ? ? ? /* Ignored, assume it always to be true. ?*/
> + ? ? ? ? sec_flags |= SEC_COFF_NOREAD;
>
> ?Set COFF_NOREAD if IMAGE_SCN_MEM_READ. ?This looks like the wrong way round,
> the bit should be set by default and cleared if IMAGE_SCN_MEM_READ is found?
>
> ?I also see that in both these two hunks it would be possible for a section
> that has neither IMAGE_SCN_MEM_READ nor IMAGE_SCN_MEM_WRITE to end up setting
> SEC_READONLY and SEC_COFF_NOREAD simultaneously, because SEC_READONLY gets set
> by default. ?That seems inconsistent to me, could it be a problem? ?I think it
> will lead to the section in memory being writeable but not readable, rather
> than neither.
>
>> I tested it with gdb for w64 and found no regression here. Other platforms
>> I didn't tested with gdb, just by binutil's testsuite.
>
> ?I'm sure just one platform is enough for the GDB testsuite, I was just
> hoping to make sure you'd done a smoke test that it didn't all break.
>
> ? ?cheers,
> ? ? ?DaveK
>
>

Thanks Dave for reviewing it. Here the adjusted patch as discussed.

ChangeLog
2009-03-18  Kai Tietz  <kai.tietz@onevision.com>

       * bfd-in2.h: Regenerated.
       * coffcode.h (sec_to_styp_flags): For pe-coff add SEC_READONLY
       for debugging sections and map memory read/write dependent on
       SEC_COFF_NOREAD.
       (styp_to_sec_flags): Set SEC_COFF_NOREAD for sections
       without memory read flags set.
       * section.c: Add SEC_COFF_NOREAD to section flags.


Tested on mingw-w64 and cygwin without any new regressions.

Ok for apply?

Cheers,
Kai

-- 
|  (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

Attachment: noread.diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]