X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=configure;h=9b06d2b43a43f5ec819f283a4ea4df209ab85d2f;hp=11051800d3e4b291b7358b40fb5442447b7756f9;hb=adefe830dd376be386df5650a09c313c483adf1a;hpb=2bd05a4fc26c297754f7ee5745a1c3b072a44b7d diff --git a/configure b/configure index 11051800..9b06d2b4 100755 --- a/configure +++ b/configure @@ -34,6 +34,7 @@ Some influential environment variables: CC C compiler command [detected] CFLAGS C compiler flags [-Os -pipe ...] CROSS_COMPILE prefix for cross compiler and tools [none] + LIBCC compiler runtime library [detected] Use these variables to override the choices made by configure. @@ -128,6 +129,7 @@ CFLAGS=*) CFLAGS=${arg#*=} ;; CPPFLAGS=*) CPPFLAGS=${arg#*=} ;; LDFLAGS=*) LDFLAGS=${arg#*=} ;; CROSS_COMPILE=*) CROSS_COMPILE=${arg#*=} ;; +LIBCC=*) LIBCC=${arg#*=} ;; *=*) ;; *) target=$arg ;; esac @@ -200,6 +202,7 @@ arm*) ARCH=arm ;; i?86*) ARCH=i386 ;; x86_64*) ARCH=x86_64 ;; mips-*|mipsel-*) ARCH=mips ;; +microblaze-*) ARCH=microblaze ;; unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; *) fail "$0: unknown or unsupported target \"$target\"" ;; esac @@ -226,15 +229,31 @@ 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 + +# +# The GNU toolchain defaults to assuming unmarked files need an +# executable stack, potentially exposing vulnerabilities in programs +# linked with such object files. Fix this. +# +tryflag CFLAGS_AUTO -Wa,--noexecstack + # # Some optimization levels add bloated alignment that hurt performance # @@ -277,6 +296,10 @@ printf "warning: disabling dynamic linking support\n" shared=no } +# Find compiler runtime library +test -z "$LIBCC" && tryldflag LIBCC -lgcc && tryldflag LIBCC -lgcc_eh +test -z "$LIBCC" && tryldflag LIBCC -lcompiler_rt +printf "using compiler runtime libraries: %s\n" "$LIBCC" printf "creating config.mak... " @@ -300,6 +323,7 @@ CFLAGS_C99FSE = $CFLAGS_C99FSE CPPFLAGS = $CPPFLAGS LDFLAGS = $LDFLAGS_AUTO $LDFLAGS CROSS_COMPILE = $CROSS_COMPILE +LIBCC = $LIBCC EOF test "x$static" = xno && echo "STATIC_LIBS =" test "x$shared" = xno && echo "SHARED_LIBS ="