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>