binutils >= 2.41 makes .rsrc section read-only

Corinna Vinschen corinna-cygwin@cygwin.com
Wed Feb 21 13:45:10 GMT 2024


On Feb 21 09:27, Corinna Vinschen via Cygwin wrote:
> On Feb 20 21:39, Jeremy Drake via Cygwin wrote:
> > On Tue, 20 Feb 2024, Corinna Vinschen wrote:
> > 
> > > On Feb 19 21:41, Jeremy Drake via Cygwin wrote:
> > > > 1) is there actually a good reason that _cygheap_start is in the .rsrc and
> > > > not the .cygheap section?
> > >
> > > As you know we got rid of this way to define the cygheap, but
> > > _cygheap_start was just defined this way so it's the address marking
> > > the start address of the cygheap.
> > >
> > > It was just the way it was.  It's probably just as well to move
> > >
> > >   _SYM (_cygheap_start) = .;
> > >
> > > to the begining of the .cygheap section.  Did you try?
> > 
> > I hadn't; I have now and it seems to work fine.
> 
> I'm glad to read that.
> 
> > I basically assumed there
> > was some reason I wasn't aware of for putting it in the .rsrc section, so
> > focused more on trying to figure out how to get binutils to clear the
> > readonly section flag.  When I couldn't figure that out, I figured I'd ask
> > here both about the "institutional knowledge" if there was a known reason
> > why it needed to be in the .rsrc section and because I figured some people
> > knowledgable in binutils pe stuff might also read this and be able to give
> > me another idea on making the .rsrc section read/write again if it did
> > need to stay in that section.
> 
> I think there was some historical reason to put in .rsrc, or rather,
> into the section preceeding .cygheap, but I don't remember what it was.
> Might have had something to do with stripping the cygwin DLL or some
> such...

Actually, searching the history shows commit ce95c6407ef6a from
2005-06-01, which moves the definition of __cygheap_start from
the .cygheap section to the .idata section.  However, the commit
message only contains the hint "cygwin.sc: Modernize. [...]"
There's no other reason given ¯\_(ツ)_/¯


Corinna


More information about the Cygwin mailing list