path: root/configure
diff options
authorRich Felker <>2012-08-29 09:36:02 -0400
committerRich Felker <>2012-08-29 09:36:02 -0400
commitb439c051c7eee4eb4b93fc382f993aa6305ce530 (patch)
tree5c4f835d2d889a023e1ff384e3eb2d33f2cf3481 /configure
parent8b28aa9c94e7c6179d70fe73afcd3fff29809d61 (diff)
get rid of eh_frame bloat
if needed for debugging, it will be output in the .debug_frame section instead, where it is not part of the loaded program and where the strip command is free to strip it.
Diffstat (limited to 'configure')
1 files changed, 12 insertions, 3 deletions
diff --git a/configure b/configure
index 11051800..4e3931c1 100755
--- a/configure
+++ b/configure
@@ -226,16 +226,25 @@ test "x$debug" = xyes && CFLAGS_AUTO="-g"
tryflag CFLAGS_AUTO -pipe
-# If debugging is disabled, omit bloated DWARF2 unwind tables & frame ptr
+# If debugging is disabled, omit frame pointer. Modern GCC does this
+# anyway on most archs even when debugging is enabled since the frame
+# pointer is no longer needed for debugging.
if fnmatch '-g*|*\ -g*' "$CFLAGS_AUTO $CFLAGS" ; then :
-tryflag CFLAGS_AUTO -fno-unwind-tables
-tryflag CFLAGS_AUTO -fno-asynchronous-unwind-tables
tryflag CFLAGS_AUTO -fomit-frame-pointer
+# Modern GCC wants to put DWARF tables (used for debugging and
+# unwinding) in the loaded part of the program where they are
+# unstrippable. These options force them back to debug sections (and
+# cause them not to get generated at all if debugging is off).
+tryflag CFLAGS_AUTO -fno-unwind-tables
+tryflag CFLAGS_AUTO -fno-asynchronous-unwind-tables
# Some optimization levels add bloated alignment that hurt performance
tryflag CFLAGS_AUTO -falign-functions=1