From: jont@harlequin.co.uk (Jon Thackray)
Subject: Re: Section attributes from ld
16 Jul 1997 08:33:19 -0700
Approved: cygnus.gnu-win32@cygnus.com
Distribution: cygnus
Message-ID: <199707161317.OAA27491.cygnus.gnu-win32@zaphod.long.harlequin.co.uk>
References: <199707151105.MAA14711@zaphod.long.harlequin.co.uk>
	<199707152216.SAA07402@tweedledumb.cygnus.com>
	<199707161156.MAA27248@zaphod.long.harlequin.co.uk>
Original-To: ian@cygnus.com, gnu-win32@cygnus.com
In-Reply-To: <199707161156.MAA27248@zaphod.long.harlequin.co.uk>
Original-Sender: owner-gnu-win32@cygnus.com

Jon Thackray writes:
 > ian@cygnus.com writes:
 >  > >How does ld determine which attributes sections are to have? By
 >  > >attributes, I mean things like:-
 >  > 
 >  > >Contains code, contains initialised data, should be laoded with
 >  > >execute permission, should be loaded with read permission, should be
 >  > >loaded with write permission etc.
 >  > 
 >  > The attributes are based on the attributes of the input sections which
 >  > are mapped into the output sections.  Take a look at
 >  > gas/config/obj-coff.c to see how to use the .section directive in an
 >  > assembler file.
 > 
 > As far as I can see, this allows me no control over the flags I'm
 > talking about. The ones I mean are documented in MSDN as:-
 > 
 > IMAGE_SCN_MEM_DISCARDABLE	0x02000000
 > IMAGE_SCN_MEM_NOT_CACHED	0x04000000
 > IMAGE_SCN_MEM_NOT_PAGED		0x08000000
 > IMAGE_SCN_MEM_SHARED		0x10000000
 > IMAGE_SCN_MEM_EXECUTE		0x20000000
 > IMAGE_SCN_MEM_READ		0x40000000
 > IMAGE_SCN_MEM_WRITE		0x80000000
 > 
 > It would appear that as automatcially puts MEM_READ and MEM_EXECUTE on
 > the .text section, MEM_READ and MEM_WRITE on the .data section and the
 > same on the .bss section. For sections it doesn't know about (eg I
 > have one called .dyfix), it outs none of these. However, my compiler,
 > when generating these sections, does add attributes such as MEM_READ
 > and MEM_WRITE, but then ld appears to throw them away (at least binary
 > editing the resulting executable or looking at it with any of the
 > tools available shows them to have gone away).

As an experiment, I made an object file without the MEM_EXECUTE flag
for the .text section, and then linked it (with nothing else at all).
ld put the MEM_EXECUTE flag back on the .text section, which suggests
that the attributes aren't entirely based on those incoming.
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".
