Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Dec 2010 20:37:14 +0100
From:      John Marino <freebsdml@marino.st>
To:        Kostik Belousov <kostikbel@gmail.com>
Cc:        freebsd-threads@freebsd.org
Subject:   Re: AMD64 version of GNAT Ada compiler broken due to libthr
Message-ID:  <4D1E30EA.7050308@marino.st>
In-Reply-To: <20101231134418.GO90883@deviant.kiev.zoral.com.ua>
References:  <4D1DC299.2090808@marino.st> <20101231122225.GK90883@deviant.kiev.zoral.com.ua> <4D1DCE02.3050601@marino.st> <20101231125215.GL90883@deviant.kiev.zoral.com.ua> <4D1DD5CF.5020305@marino.st> <20101231132706.GN90883@deviant.kiev.zoral.com.ua> <4D1DDC99.7000400@marino.st> <20101231134418.GO90883@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Kostik,

Thanks for pointing me in the right direction.  After some research, I 
discovered that only DragonFly BSD allows execution on the stack by 
default.  NetBSD and OpenBSD (and Solaris and Darwin) all were specially 
configured within gcc to execute mprotect first to enable this 
functionality.  FreeBSD never had this gcc configuration code and 
frankly it looks like it should have already been there.

I created my own __enable_execute_stack macro function based on these 
previous works and now GNAT has passed all tests!  Since i386 always 
worked, I only applied to macro to the AMD64 configuration header.

You've been a great help!  Once I understood what the issue was, 
everything fell into place.

-- John


Kostik Belousov wrote:
> On Fri, Dec 31, 2010 at 02:37:29PM +0100, John Marino wrote:
>> Yeah, that's kind of what I was getting at.  Would this patch get into 
>> FreeBSD 8.2, and would that mean that GNAT would start working properly 
>> starting with FreeBSD 8.2 if that happened?
> Definitely not in 8.2.
> Might be in 8.3, if successfully landed in HEAD.
> 
> Besides the patch for the base system, compiler must be configured
> to properly mark the objects that need executable thunks on the stack.
> See the references in the arch@ message I pointed to.
> 
>> I guess that also means the other BSD's have been allowing executable 
>> stacks all along.
> Or, there is a compiler configuration that prevents using the thunks
> on the stack.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D1E30EA.7050308>