Patchwork [Ada] Change backtrace mechanism for x86/Linux

login
register
mail settings
Submitter Eric Botcazou
Date Aug. 18, 2010, 9:07 p.m.
Message ID <201008182307.55337.ebotcazou@adacore.com>
Download mbox | patch
Permalink /patch/62090/
State New
Headers show

Comments

Eric Botcazou - Aug. 18, 2010, 9:07 p.m.
This adjusts the backtrace mechanism used on x86/Linux to the default setting
of -fomit-frame-pointer on this platform.

Tested on i586-suse-linux, applied on the mainline.


2010-08-18  Eric Botcazou  <ebotcazou@adacore.com>

	* tracebak.c (i386): Use GCC unwinder on Linux with GCC > 4.5.

Patch

Index: tracebak.c
===================================================================
--- tracebak.c	(revision 163220)
+++ tracebak.c	(working copy)
@@ -303,7 +303,14 @@  struct layout
 #define IS_BAD_PTR(ptr) 0
 #endif
 
+/* Starting with GCC 4.6, -fomit-frame-pointer is turned on by default for
+   32-bit x86/Linux as well and DWARF 2 unwind tables are emitted instead.
+   See the x86-64 case below for the drawbacks with this approach.  */
+#if defined (linux) && (__GNUC__ * 10 + __GNUC_MINOR__ > 45)
+#define USE_GCC_UNWINDER
+#else
 #define USE_GENERIC_UNWINDER
+#endif
 
 struct layout
 {