Procházet zdrojové kódy

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.
Rich Felker před 12 roky
rodič
revize
b439c051c7
1 změnil soubory, kde provedl 12 přidání a 3 odebrání
  1. 12 3
      configure

+ 12 - 3
configure

@@ -226,15 +226,24 @@ 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 :
 else 
-tryflag CFLAGS_AUTO -fno-unwind-tables
-tryflag CFLAGS_AUTO -fno-asynchronous-unwind-tables
 tryflag CFLAGS_AUTO -fomit-frame-pointer
 fi
 
+#
+# 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
 #