在 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
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