pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/47906: lang/g95: SEGV occurs when stack address is not aligned 8 bytes at main().
The following reply was made to PR pkg/47906; it has been noted by GNATS.
From: Joerg Sonnenberger <joerg%britannica.bec.de@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: pkg/47906: lang/g95: SEGV occurs when stack address is not
aligned 8 bytes at main().
Date: Tue, 9 Jul 2013 15:02:08 +0200
On Tue, Jul 09, 2013 at 12:50:01PM +0000, NONAKA Kimihiro wrote:
> The following reply was made to PR pkg/47906; it has been noted by GNATS.
>
> From: NONAKA Kimihiro <nonakap%gmail.com@localhost>
> To: gnats-bugs%netbsd.org@localhost
> Cc: wennmach%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
> pkgsrc-bugs%netbsd.org@localhost
> Subject: Re: pkg/47906: lang/g95: SEGV occurs when stack address is not
> aligned 8 bytes at main().
> Date: Tue, 9 Jul 2013 21:46:03 +0900
>
> Hi,
>
> 2013/7/9 Joerg Sonnenberger <joerg%britannica.bec.de@localhost>:
>
> > > >Description:
> > > If the stack address is not aligned on 8 bytes, it is adjusted to 8
> bytes aligned at main().
> > > If stack address is adjusted, to get from the stack address the wrong
> return address, SEGV occurs.
> >
> > What happens if the whole section is dropped, i.e. the stack pointer
> > isn't adjusted in main at all? It shouldn't be needed at nothing on x86
> > requires 64bit alignment.
>
> for speed.
>
> g95-0.93/libf95.a-0.93/runtime/main.c:
>
> 46 int main(int argc, char *argv[]) {
> 47
> 48 /* Sometimes on x86, the stack isn't aligned to an 8-byte boundary,
> 49 * which kills performance associated with doubles. Align if
> 50 * unaligned. */
> 51
> 52 #if HAVE_REAL_10 == 1 || HAVE_REAL_10 == 2
> 53 asm("mov %%esp, %%eax\n"
> 54 "and $0x04, %%eax\n"
> 55 "sub %%eax, %%esp\n" : : : "%eax");
> 56 #endif
I don't beliebe that comment is true, I was more asking whether it just
works...
Joerg
Home |
Main Index |
Thread Index |
Old Index