This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: glibc 2.21 - Machine maintainers, please test your machines.


On Mon, Jan 26, 2015 at 5:58 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Mon, Jan 26, 2015 at 5:51 AM, Torvald Riegel <triegel@redhat.com> wrote:
>> On Mon, 2015-01-26 at 05:50 -0800, H.J. Lu wrote:
>>> On Mon, Jan 26, 2015 at 5:48 AM, Andreas Schwab <schwab@suse.de> wrote:
>>> > "H.J. Lu" <hjl.tools@gmail.com> writes:
>>> >
>>> >> On Mon, Jan 26, 2015 at 1:24 AM, Andreas Schwab <schwab@suse.de> wrote:
>>> >>> "H.J. Lu" <hjl.tools@gmail.com> writes:
>>> >>>
>>> >>>> It doesn't change the size, only increases alignment from 4 bytes to 8 bytes.
>>> >>>
>>> >>> Alignment is part of the ABI.
>>> >>>
>>> >>
>>> >> For x32, we can increase alignment from 4 bytes to 8 bytes without breaking
>>> >> existing binaries.
>>> >
>>> > The compiler may generate code to take advantage of the bigger
>>> > alignment, which will fail if not fulfilled (this is not just about
>>> > unaligned accesses).
>>> >
>>>
>>> Failure shouldn't happen on x32 in this case.
>>>
>>
>> Then please provide a *detailed* comment why this is the case along with
>> the alignment change in x86 semaphore.h.  Given that we're discussing
>> whether this is safe or not, I think we should have detailed
>> documentation.  And this will also help conclude the discussion.
>>
>
> This the part of x86 specification.  From vol 1 of x86 SDM:
>
> 4.1.1 Alignment of Words, Doublewords, Quadwords, and Double Quadwords
>
> Words, doublewords, and quadwords do not need to be aligned in memory
> on natural boundaries. The natural
> boundaries for words, double words, and quadwords are even-numbered
> addresses, addresses evenly divisible by
> four, and addresses evenly divisible by eight, respectively. However,
> to improve the performance of programs, data
> structures (especially stacks) should be aligned on natural boundaries
> whenever possible. The reason for this is
> that the processor requires two memory accesses to make an unaligned
> memory access; aligned accesses require
> only one memory access. A word or doubleword operand that crosses a
> 4-byte boundary or a quadword operand
> that crosses an 8-byte boundary is considered unaligned and requires
> two separate memory bus cycles for access.
>
> Do I really to quote this?
>

You can download x86 SDM from:

http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-1-manual.pdf

-- 
H.J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]