From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23385 invoked by alias); 4 Jun 2003 19:43:26 -0000 Mailing-List: contact libc-hacker-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-hacker-owner@sources.redhat.com Received: (qmail 23302 invoked from network); 4 Jun 2003 19:43:25 -0000 Received: from unknown (HELO localhost.localdomain) (195.113.19.66) by sources.redhat.com with SMTP; 4 Jun 2003 19:43:25 -0000 Received: from sunsite.ms.mff.cuni.cz (sunsite.mff.cuni.cz [127.0.0.1]) by localhost.localdomain (8.12.8/8.12.8) with ESMTP id h54JhNqO022727; Wed, 4 Jun 2003 21:43:23 +0200 Received: (from jakub@localhost) by sunsite.ms.mff.cuni.cz (8.12.8/8.12.8/Submit) id h54JhMOG022723; Wed, 4 Jun 2003 21:43:22 +0200 Date: Wed, 04 Jun 2003 19:43:00 -0000 From: Jakub Jelinek To: Ulrich Drepper , Roland McGrath Cc: Glibc hackers Subject: [PATCH] Use -Wa,--noexecstack for glibc .S files Message-ID: <20030604194322.GA24872@sunsite.ms.mff.cuni.cz> Reply-To: Jakub Jelinek Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable User-Agent: Mutt/1.4i X-SW-Source: 2003-06/txt/msg00005.txt.bz2 Hi! None of glibc .S files AFAIK requires executable stack. 2003-06-04 Jakub Jelinek * config.make.in (ASFLAGS-config): New. * Makeconfig (ASFLAGS): Append $(ASFLAGS-config). * configure.in (libc_cv_as_noexecstack): New check. (ASFLAGS_config): Substitute. * configure: Rebuilt. --- libc/config.make.in.jj 2003-04-23 14:11:49.000000000 -0400 +++ libc/config.make.in 2003-06-04 14:39:30.000000000 -0400 @@ -87,6 +87,7 @@ CC =3D @CC@ CXX =3D @CXX@ BUILD_CC =3D @BUILD_CC@ CFLAGS =3D @CFLAGS@ +ASFLAGS-config =3D @ASFLAGS_config@ AR =3D @AR@ RANLIB =3D @RANLIB@ MAKEINFO =3D @MAKEINFO@ --- libc/Makeconfig.jj 2003-05-13 16:58:04.000000000 -0400 +++ libc/Makeconfig 2003-06-04 15:17:56.000000000 -0400 @@ -720,8 +720,11 @@ endif ifndef ASFLAGS ifeq ($(have-cpp-asm-debuginfo),yes) ASFLAGS :=3D $(filter -g%,$(CFLAGS)) +else +ASFLAGS :=3D endif endif +ASFLAGS +=3D $(ASFLAGS-config) =20 +gnu-stabs =3D $(shell echo>&2 '*** BARF ON ME') =20 --- libc/configure.in.jj 2003-05-26 09:44:28.000000000 -0400 +++ libc/configure.in 2003-06-04 15:30:57.000000000 -0400 @@ -1313,6 +1313,27 @@ EOF rm -f conftest*]) AC_SUBST(libc_cv_Bgroup) =20 + ASFLAGS_config=3D + AC_CACHE_CHECK(whether --noexecstack is desirable for .S files, + libc_cv_as_noexecstack, [dnl + cat > conftest.c <&AS_MESSAGE_LOG_FD]) \ + && grep -q .note.GNU-stack conftest.s \ + && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack + -c -o conftest.o conftest.s 1>&AS_MESSAGE_LOG_FD]) + then + libc_cv_as_noexecstack=3Dyes + else + libc_cv_as_noexecstack=3Dno + fi + rm -f conftest*]) + if test $libc_cv_as_noexecstack =3D yes; then + ASFLAGS_config=3D"$ASFLAGS_config -Wa,--noexecstack" + fi + AC_SUBST(ASFLAGS_config) AC_CACHE_CHECK(for -z combreloc, libc_cv_z_combreloc, [dnl cat > conftest.c < #endif" =20 -ac_subst_vars=3D'SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE= _VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transf= orm_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir locals= tatedir libdir includedir oldincludedir infodir mandir build_alias host_ali= as target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_chec= k_abi oldest_abi subdirs force_install all_warnings build build_cpu build_v= endor build_os host host_cpu host_vendor host_os base_machine sysnames INST= ALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_= ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP= RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVE= RSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH lib= c_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONIN= G libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelet= e libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup libc_cv_z_combreloc= libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_archive exception= s LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname = uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_local= edir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd_rewrite_script= gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded s= tatic_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RE= LEASE LIBOBJS LTLIBOBJS' +ac_subst_vars=3D'SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE= _VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transf= orm_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir locals= tatedir libdir includedir oldincludedir infodir mandir build_alias host_ali= as target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs enable_chec= k_abi oldest_abi subdirs force_install all_warnings build build_cpu build_v= endor build_os host host_cpu host_vendor host_os base_machine sysnames INST= ALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S CC CFLAGS LDFLAGS CPPFLAGS ac_= ct_CC OBJEXT BUILD_CC cross_compiling CPP CXX CXXFLAGS ac_ct_CXX AR OBJDUMP= RANLIB ac_ct_RANLIB MIG AS LD PWD_P MAKE MSGFMT MAKEINFO SED AUTOCONF CCVE= RSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH lib= c_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONIN= G libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelet= e libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup ASFLAGS_config libc= _cv_z_combreloc libc_cv_have_initfini libc_cv_cpp_asm_debuginfo no_whole_ar= chive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde= uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdi= r libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd= _rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile o= mitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_= list VERSION RELEASE LIBOBJS LTLIBOBJS' ac_subst_files=3D'' =20 # Initialize some variables set by options. @@ -5350,6 +5350,43 @@ echo "$as_me:$LINENO: result: $libc_cv_B echo "${ECHO_T}$libc_cv_Bgroup" >&6 =20 =20 + ASFLAGS_config=3D + echo "$as_me:$LINENO: checking whether --noexecstack is desirable for .S= files" >&5 +echo $ECHO_N "checking whether --noexecstack is desirable for .S files... = $ECHO_C" >&6 +if test "${libc_cv_as_noexecstack+set}" =3D set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat > conftest.c <&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; } \ + && grep -q .note.GNU-stack conftest.s \ + && { ac_try=3D'${CC-cc} $CFLAGS $CPPFLAGS -Wa,--noexecstack + -c -o conftest.o conftest.s 1>&5' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; } + then + libc_cv_as_noexecstack=3Dyes + else + libc_cv_as_noexecstack=3Dno + fi + rm -f conftest* +fi +echo "$as_me:$LINENO: result: $libc_cv_as_noexecstack" >&5 +echo "${ECHO_T}$libc_cv_as_noexecstack" >&6 + if test $libc_cv_as_noexecstack =3D yes; then + ASFLAGS_config=3D"$ASFLAGS_config -Wa,--noexecstack" + fi + echo "$as_me:$LINENO: checking for -z combreloc" >&5 echo $ECHO_N "checking for -z combreloc... $ECHO_C" >&6 if test "${libc_cv_z_combreloc+set}" =3D set; then @@ -7770,6 +7807,7 @@ s,@libc_cv_z_nodelete@,$libc_cv_z_nodele s,@libc_cv_z_nodlopen@,$libc_cv_z_nodlopen,;t t s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t +s,@ASFLAGS_config@,$ASFLAGS_config,;t t s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t s,@libc_cv_cpp_asm_debuginfo@,$libc_cv_cpp_asm_debuginfo,;t t Jakub