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, 2015-01-26 at 05:58 -0800, H.J. Lu 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?
> 

It made an experienced glibc developer wonder whether it would work, so
personally, I think a comment in the code is useful.  If we need to
exchange emails about this, it's likely that others will wonder too, so
a comment doesn't hurt.
For example, I believe that if such a comment would have been part of
the patch, we wouldn't need to have to discuss this, because it would
have been clear from the start.

IMO, we should want to make glibc simple instead of creating puzzles :)

For the comment, I think that you could point to just this section, or
summarize in a way that clarifies that unaligned is not an issue for
x32, or something like that.


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