public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* Alignment of .text sections in object files
@ 2022-05-23 13:01 LIU Hao
       [not found] ` <CALwydEsLmkC2FpSeXdc4Jkb_X48DjZ=KH6e+QB0nyFUwb79RAg@mail.gmail.com>
  0 siblings, 1 reply; 2+ messages in thread
From: LIU Hao @ 2022-05-23 13:01 UTC (permalink / raw)
  To: cygwin


[-- Attachment #1.1: Type: text/plain, Size: 900 bytes --]

Good evening, cygwin folks.

A few days ago, I had noticed that when targeting Windows and optimizing for size, GAS always output 
object files containing .text sections with an alignment of 16 bytes (which could be increased, but 
not decreased), unlike when targeting Linux where .text sections had an alignment of 1byte.

I then filed a bug report against GAS [1]. The conclusion was 'unfortunately this is required by the 
PE specification, so it cannot be changed.' I expressed by doubt, and got 'I would suggest that you 
ask about this on the cygwin mailing list as there are many PE experts there.' So my question is, is 
it really necessary for .text sections in object files to be aligned to 16-byte boundaries? And 
could you please kindly elaborate it a little? Thanks in advance.


[1] https://sourceware.org/bugzilla/show_bug.cgi?id=29145


-- 
Best regards,
LIU Hao

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Alignment of .text sections in object files
       [not found] ` <CALwydEsLmkC2FpSeXdc4Jkb_X48DjZ=KH6e+QB0nyFUwb79RAg@mail.gmail.com>
@ 2022-05-24  4:33   ` LIU Hao
  0 siblings, 0 replies; 2+ messages in thread
From: LIU Hao @ 2022-05-24  4:33 UTC (permalink / raw)
  To: Richard Campbell, cygwin


[-- Attachment #1.1: Type: text/plain, Size: 2197 bytes --]

在 2022-05-23 23:21, Richard Campbell 写道:
> On Mon, May 23, 2022 at 8:03 AM LIU Hao <lh_mouse@126.com> wrote:
>>
>> So my question is, is
>> it really necessary for .text sections in object files to be aligned to 16-byte boundaries? And
>> could you please kindly elaborate it a little?
> 
> I believe the relevant requirement is found in the "Optional Header
> Windows-Specific Fields (Image Only)" part of the
> https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
> specification.
> 
> This header "contain[s] additional information that is required by the
> linker and loader in Windows," and in particular has a
> "SectionAlignment" field:  "The alignment (in bytes) of sections when
> they are loaded into memory. It must be greater than or equal to
> FileAlignment. The default is the page size for the architecture."
> 
> Turning to FileAlignment:  "The alignment factor (in bytes) that is
> used to align the raw data of sections in the image file. The value
> should be a power of 2 between 512 and 64 K, inclusive. The default is
> 512. If the SectionAlignment is less than the architecture's page
> size, then FileAlignment must match SectionAlignment."
> 
> ...I'd expect you to see the alignment set to 0x200, which is the
> default and the minimum for FileAlignment, so a 16 byte boundary seems
> odd to me.  There's a little more information here:
> https://docs.microsoft.com/en-us/archive/msdn-magazine/2002/february/inside-windows-win32-portable-executable-file-format-in-detail
> 
> Best regards,
> 
> -Richard Campbell

[please keep CC'ing me as I am not subscribed to this list]


The FileAlignment is a totally different thing. Typically the linker (GNU LD for example) is 
responsible for combining all .text sections from object files to create a final .text section for 
the executable output, whose offset (in the output file) is specified by FileAlignment, which cannot 
be below 512.

However we were talking about something before linking: the alignment of .text sections in 
individual object files. They have a default alignment of 16 bytes, shown in objdump as `2**4`.




-- 
Best regards,
LIU Hao

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-05-24  4:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-23 13:01 Alignment of .text sections in object files LIU Hao
     [not found] ` <CALwydEsLmkC2FpSeXdc4Jkb_X48DjZ=KH6e+QB0nyFUwb79RAg@mail.gmail.com>
2022-05-24  4:33   ` LIU Hao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).