在 2022-05-23 23:21, Richard Campbell 写道:
On Mon, May 23, 2022 at 8:03 AM LIU Hao <lh_mo...@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: OpenPGP_signature
Description: OpenPGP digital signature

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to