summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2013-07-02 08:04:41 +0000
committerandrew <andrew@FreeBSD.org>2013-07-02 08:04:41 +0000
commita8db5574e9dfbaa5c8489ae5bde123d843399696 (patch)
treebc50b49121cd1ec2ebe6f255813be8acbd554f75
parent80f69955c8013874ae6bcd1d55dd183d69116299 (diff)
downloadFreeBSD-src-a8db5574e9dfbaa5c8489ae5bde123d843399696.zip
FreeBSD-src-a8db5574e9dfbaa5c8489ae5bde123d843399696.tar.gz
Work around an ARM EABI issue where clang would sometimes incorrectly align
the stack in a leaf function that uses TLS. The issue is, when using TLS, the function is no longer a leaf as it calls __aeabi_read_tp. With statically linked programs this is not an issue as it doesn't make use of the stack, however with dynamically linked applications we enter rtld which does use the stack and makes assumptions about it's alignment. This is only a temporary fix until a better patch can be made and submitted upstream.
-rw-r--r--contrib/llvm/lib/Target/ARM/ARMFrameLowering.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h b/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h
index efa255a..d95a2cb 100644
--- a/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h
+++ b/contrib/llvm/lib/Target/ARM/ARMFrameLowering.h
@@ -27,7 +27,7 @@ protected:
public:
explicit ARMFrameLowering(const ARMSubtarget &sti)
- : TargetFrameLowering(StackGrowsDown, sti.getStackAlignment(), 0, 4),
+ : TargetFrameLowering(StackGrowsDown, sti.getStackAlignment(), 0, 8),
STI(sti) {
}
OpenPOWER on IntegriCloud