Does Ada build on Linux/ia32?
H.J. Lu
hjl.tools@gmail.com
Sat Feb 9 16:36:00 GMT 2008
On Fri, Feb 08, 2008 at 09:20:30PM +0100, Arnaud Charlet wrote:
> I can confirm that I had no troubles building i686-linux with latest
> sources.
>
> I suspect a miscompilation of the previous stage compiler, possibly caused
> by a bad initial compiler used to start the bootstrap, or the use of
> "dangerous" compiler option during bootstrap.
>
> I'd suggest trying again with the default switches to see if it makes a
> difference.
My patch
http://gcc.gnu.org/ml/gcc-patches/2008-02/msg00184.html
breaks Ada on ia32. My patch changes long long alignment on ia32
from 8 byte to 4 byte, as the psABI suggested. We alreay align
long long to 4 byte in structure:
sh-3.2$ cat x.c
#include <stdio.h>
struct foo
{
int x;
long long y;
};
struct bar
{
int x;
long long y [2];
};
int main ()
{
printf ("%d\n", __builtin_offsetof (struct foo, y));
printf ("%d\n", __builtin_offsetof (struct bar, y));
}
bash-3.2$ gcc -m32 x.c
bash-3.2$ ./a.out
4
4
bash-3.2$ gcc -m64 x.c
bash-3.2$ ./a.out
8
8
bash-3.2$
My patch will only change alignment for long long scalars and arrays.
What alignments do Ada expect for long long on ia32? Does Ada expect
8 byte alignments for struct/record?
H.J.
More information about the Gcc
mailing list