summaryrefslogtreecommitdiffstats
path: root/contrib/gcc
diff options
context:
space:
mode:
authorpfg <pfg@FreeBSD.org>2014-05-02 16:15:34 +0000
committerpfg <pfg@FreeBSD.org>2014-05-02 16:15:34 +0000
commitfe39a82f7dee4ecb131650441b78922f154b21aa (patch)
tree3a659cd40204d6bef00d733c819398479553155c /contrib/gcc
parent2b33056fcc4e3ad36f38aeea211ae3d2d910c404 (diff)
downloadFreeBSD-src-fe39a82f7dee4ecb131650441b78922f154b21aa.zip
FreeBSD-src-fe39a82f7dee4ecb131650441b78922f154b21aa.tar.gz
gcc: fix strict alignment.
From the OpenBSD log: x86-64 ABI requires arrays greater than 16 bytes to be aligned to 16byte boundary. However, GCC 16-byte aligns arrays of >=16 BITS, not BYTES. This diff improves bug detectability for code which has local arrays of [16 .. 127] bits: in those cases SSP will now detect even 1-byte overflows. Obtained from: OpenBSD (CVS rev 1.4) MFC after: 1 week
Diffstat (limited to 'contrib/gcc')
-rw-r--r--contrib/gcc/config/i386/i386.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/contrib/gcc/config/i386/i386.c b/contrib/gcc/config/i386/i386.c
index 88f2836..26528bf 100644
--- a/contrib/gcc/config/i386/i386.c
+++ b/contrib/gcc/config/i386/i386.c
@@ -14408,7 +14408,7 @@ ix86_local_alignment (tree type, int align)
if (AGGREGATE_TYPE_P (type)
&& TYPE_SIZE (type)
&& TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
- && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 16
+ && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 128
|| TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 128)
return 128;
}
OpenPOWER on IntegriCloud