Patchwork Add options to disable build with debug symbols and override optimization flags.

login
register
mail settings
Submitter Brad
Date Sept. 7, 2011, 2:59 a.m.
Message ID <20110907025910.GA21819@rox.home.comstyle.com>
Download mbox | patch
Permalink /patch/113696/
State New
Headers show

Comments

Brad - Sept. 7, 2011, 2:59 a.m.
Add --disable-debug-symbols to disable building with debug
symbols and --optflags to override the optimization flags
passed to the compiler.

---
 configure |   18 +++++++++++++++---
 1 files changed, 15 insertions(+), 3 deletions(-)
Stefan Hajnoczi - Sept. 7, 2011, 7:09 a.m.
On Wed, Sep 7, 2011 at 3:59 AM, Brad <brad@comstyle.com> wrote:
> Add --disable-debug-symbols to disable building with debug
> symbols and --optflags to override the optimization flags
> passed to the compiler.
>
> ---
>  configure |   18 +++++++++++++++---
>  1 files changed, 15 insertions(+), 3 deletions(-)

QEMU builds with debug symbols.  But during make install the binary is
stripped unless you specify --disable-strip.  What is the need for
--disable-debug-symbols?

Stefan
Juan Quintela - Sept. 7, 2011, 10:46 a.m.
Brad <brad@comstyle.com> wrote:
> Add --disable-debug-symbols to disable building with debug
> symbols and --optflags to override the optimization flags
> passed to the compiler.

>  # default flags for all hosts
>  QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
> -CFLAGS="-g $CFLAGS"
>  QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
>  QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
>  QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
>  QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
>  QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/fpu"
> -LDFLAGS="-g $LDFLAGS"

I can understand this part.

>  
>  # make source path absolute
>  source_path=`cd "$source_path"; pwd`
> @@ -518,6 +518,8 @@ for opt do
>    ;;
>    --cc=*)
>    ;;
> +  --optflags=*) optflags="$optarg"
> +  ;;
>    --host-cc=*) host_cc="$optarg"
>    ;;
>    --make=*) make="$optarg"

No, please.  We already have --extra-cflags, --extra-ldflags, no need
for another one.

I haven't tested, but my understanding is that just using:

--extra-cflags="-O0"

to your configure line should fix the "-O2" issue, no?

My understanding is that:

gcc -O2 .... -O0 .....

is understood as -O0, no? Whatever you pass in --extra-cflags is put at
the end of the command line (otherwise, it is a bug somewhere).

> @@ -588,6 +590,10 @@ for opt do
>    ;;
>    --disable-debug-mon) debug_mon="no"
>    ;;
> +  --enable-debug-symbols) debug_symbols="yes"
> +  ;;
> +  --disable-debug-symbols) debug_symbols="no"
> +  ;;
>    --enable-debug)
>        # Enable debugging options that aren't excessively noisy
>        debug_tcg="yes

Not really sure if we should add this under the --enable-debug option.
But I can agree with this option.

Later, Juan.

Patch

diff --git a/configure b/configure
index c3044c7..c7948b6 100755
--- a/configure
+++ b/configure
@@ -77,6 +77,7 @@  path_of() {
 # default parameters
 source_path=`dirname "$0"`
 cpu=""
+optflags="-O2"
 interp_prefix="/usr/gnemul/qemu-%M"
 static="no"
 sparc_cpu=""
@@ -136,6 +137,7 @@  kvm="no"
 gprof="no"
 debug_tcg="no"
 debug_mon="no"
+debug_symbols="yes"
 debug="no"
 strip_opt="yes"
 bigendian="no"
@@ -232,13 +234,11 @@  sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
 
 # default flags for all hosts
 QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
-CFLAGS="-g $CFLAGS"
 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
 QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/fpu"
-LDFLAGS="-g $LDFLAGS"
 
 # make source path absolute
 source_path=`cd "$source_path"; pwd`
@@ -518,6 +518,8 @@  for opt do
   ;;
   --cc=*)
   ;;
+  --optflags=*) optflags="$optarg"
+  ;;
   --host-cc=*) host_cc="$optarg"
   ;;
   --make=*) make="$optarg"
@@ -588,6 +590,10 @@  for opt do
   ;;
   --disable-debug-mon) debug_mon="no"
   ;;
+  --enable-debug-symbols) debug_symbols="yes"
+  ;;
+  --disable-debug-symbols) debug_symbols="no"
+  ;;
   --enable-debug)
       # Enable debugging options that aren't excessively noisy
       debug_tcg="yes"
@@ -937,6 +943,7 @@  echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
 echo "  --cc=CC                  use C compiler CC [$cc]"
 echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
 echo "                           build time"
+echo "  --optflags=FLAGS         override optimization compiler flags [$optflags]"
 echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
 echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
 echo "  --make=MAKE              use specified make [$make]"
@@ -2569,8 +2576,13 @@  fi
 # End of CC checks
 # After here, no more $cc or $ld runs
 
+if test "$debug_symbols" = "yes" ; then
+  CFLAGS="-g $CFLAGS"
+  LDFLAGS="-g $LDFLAGS"
+fi
+
 if test "$debug" = "no" ; then
-  CFLAGS="-O2 $CFLAGS"
+  CFLAGS="$optflags $CFLAGS"
 fi
 
 # Consult white-list to determine whether to enable werror