On 2012-11-04 14:18, Konstantin Belousov wrote:
On Sun, Nov 04, 2012 at 02:42:13PM +0200, David Naylor wrote:
...
I tried building (using gcc) wine with your patch and now (at least) winecfg
and regedit work with a clang built lib32. I'll email Gerald (wine's
maintainer) about including your patch in wine.
The wine is the wrong place to fix. If system libraries suddenly started
requiring 16-byte stack alignment on i386, it is unacceptable breakage
of the ABI.
So we really must use 4 byte stack alignment on i386 by default? I have
attached a diff to llvm for this, but I would like to verify that it is
really correct. Apparently Darwin, Linux and Solaris all use 16 byte
alignment.
The Sys V ABI seems to say only: "The stack is word aligned. Although
the architecture does not require any alignment of the stack, software
convention and the operating system requires that the stack be aligned
on a word boundary".
Index: contrib/llvm/lib/Target/X86/X86Subtarget.cpp
===================================================================
--- contrib/llvm/lib/Target/X86/X86Subtarget.cpp (revision 242480)
+++ contrib/llvm/lib/Target/X86/X86Subtarget.cpp (working copy)
@@ -416,12 +416,12 @@ X86Subtarget::X86Subtarget(const std::string &TT,
assert((!In64BitMode || HasX86_64) &&
"64-bit code requested on a subtarget that doesn't support it!");
- // Stack alignment is 16 bytes on Darwin, FreeBSD, Linux and Solaris (both
- // 32 and 64 bit) and for all 64-bit targets.
+ // Stack alignment is 16 bytes on Darwin, Linux and Solaris (both 32 and 64
+ // bit) and for all 64-bit targets.
if (StackAlignOverride)
- stackAlignment = StackAlignOverride;
- else if (isTargetDarwin() || isTargetFreeBSD() || isTargetLinux() ||
- isTargetSolaris() || In64BitMode)
+ stackAlignment = StackAlignOverride;
+ else if (isTargetDarwin() || isTargetLinux() || isTargetSolaris() ||
+ In64BitMode)
stackAlignment = 16;
}
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"