delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1997/07/16/08:33:19

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

Jon Thackray writes:
 > ian AT cygnus DOT 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 AT cygnus DOT com" with one line of text: "help".

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019