commit: 774ce372e0a21e58541d34035ed15903b4b5b34a Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org> AuthorDate: Wed Jul 30 21:17:25 2014 +0000 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org> CommitDate: Wed Jul 30 21:17:25 2014 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=774ce372
Refactor source tree: separate out fix-gnustack --- .gitignore | 15 +++--- autogen.sh | 3 ++ configure.ac | 5 +- doc/Makefile.am | 8 --- doc/make.sh | 22 +++----- doc/paxctl-ng.1 | 4 +- doc/revdep-pax.1 | 4 +- misc/fix-gnustack/ChangeLog | 46 +++++++++++++++++ misc/fix-gnustack/Makefile.am | 6 +++ autogen.sh => misc/fix-gnustack/autogen.sh | 4 +- misc/fix-gnustack/configure.ac | 58 ++++++++++++++++++++++ misc/fix-gnustack/doc/Makefile.am | 3 ++ {doc => misc/fix-gnustack/doc}/fix-gnustack.1 | 4 +- {doc => misc/fix-gnustack/doc}/fix-gnustack.pod | 0 {doc => misc/fix-gnustack/doc}/make.sh | 28 +++-------- {src => misc/fix-gnustack}/fix-gnustack.c | 0 .../fix-gnustack/tests}/Makefile.am | 4 +- .../fix-gnustack/tests}/bad-gnustack.c | 0 .../fix-gnustack/tests}/gnustacktest.sh | 23 ++------- src/Makefile.am | 5 -- tests/Makefile.am | 3 -- 21 files changed, 153 insertions(+), 92 deletions(-) diff --git a/.gitignore b/.gitignore index ead9914..b2500c4 100644 --- a/.gitignore +++ b/.gitignore @@ -25,7 +25,6 @@ stamp-h1 *.la *.lo # -fix-gnustack paxctl-ng bad-gnustack daemon* @@ -33,11 +32,11 @@ dummy revdepbin # scripts/build -misc/__pycache__ # -misc/change-interp/bash -misc/change-interp/change-interp -misc/elf-manipulate/clear-dt-path -misc/elf-manipulate/parse-elf -misc/elf-manipulate/print-sections -misc/elf-manipulate/remove-ptpax +misc/fix-gnustack/fix-gnustack +# +poc/change-interp/change-interp +poc/elf-manipulate/clear-dt-path +poc/elf-manipulate/parse-elf +poc/elf-manipulate/print-sections +poc/elf-manipulate/remove-ptpax diff --git a/autogen.sh b/autogen.sh index 917d1a7..aec299b 100755 --- a/autogen.sh +++ b/autogen.sh @@ -5,3 +5,6 @@ autoheader && \ autoconf && \ libtoolize --copy && \ automake --add-missing --copy + +cd doc +./make.sh diff --git a/configure.ac b/configure.ac index 2b66eae..179eed5 100644 --- a/configure.ac +++ b/configure.ac @@ -17,8 +17,8 @@ # AC_PREREQ([2.68]) -AC_INIT([elfix], [0.8], [http://bugs.gentoo.org/]) -AC_CONFIG_SRCDIR([src/fix-gnustack.c]) +AC_INIT([elfix], [0.9], [http://bugs.gentoo.org/]) +AC_CONFIG_SRCDIR([src/paxctl-ng.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE([1.12 foreign]) AM_SILENT_RULES([no]) @@ -150,7 +150,6 @@ AC_CONFIG_FILES([ scripts/Makefile doc/Makefile tests/Makefile - tests/gnustack/Makefile tests/pxtpax/Makefile tests/paxmodule/Makefile tests/revdeppaxtest/Makefile diff --git a/doc/Makefile.am b/doc/Makefile.am index 836014b..4ce1847 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,11 +1,3 @@ ACLOCAL_AMFLAGS = -I m4 dist_man_MANS = paxctl-ng.1 revdep-pax.1 -if BUILD_ELF -dist_man_MANS += fix-gnustack.1 -endif - -# I don't know why I need this, but without it, I don't get fix-gnustack.1 distributed. -# This is since commit 414cfa1770a8cfc46308149deecf9c0eef60a5bb. It will be fixed once -# fix-gnustack is broken out. -EXTRA_DIST = fix-gnustack.1 diff --git a/doc/make.sh b/doc/make.sh index bf29d22..a330f17 100755 --- a/doc/make.sh +++ b/doc/make.sh @@ -17,31 +17,23 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -#Run this on developer side, and distribute troff -#in case the end user doesn't have pod2man +# This is run on the developer side with autogen.sh -rm -f fix-gnustack.1 +PKG=$(cat ../configure.ac | grep ^AC_INIT | sed -e 's/^.*(\[//' -e 's/\].*$//') +VERSION=$(cat ../configure.ac | grep ^AC_INIT | sed -e "s/^.*$PKG\], \[//" -e 's/\].*$//') pod2man \ --official \ --section="1" \ - --release="elfix 0.3" \ + --release="$PKG $VERSION" \ --center="Documentation for elfix" \ - --date="2011-04-14" \ - fix-gnustack.pod > fix-gnustack.1 - -pod2man \ - --official \ - --section="1" \ - --release="elfix 0.3" \ - --center="Documentation for elfix" \ - --date="2011-08-18" \ + --date=$(date +%Y-%m-%d) \ paxctl-ng.pod > paxctl-ng.1 pod2man \ --official \ --section="1" \ - --release="elfix 0.3" \ + --release="$PKG $VERSION" \ --center="Documentation for elfix" \ - --date="2011-10-19" \ + --date=$(date +%Y-%m-%d) \ revdep-pax.pod > revdep-pax.1 diff --git a/doc/paxctl-ng.1 b/doc/paxctl-ng.1 index 744184b..5cb923a 100644 --- a/doc/paxctl-ng.1 +++ b/doc/paxctl-ng.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.23) .\" .\" Standard preamble: .\" ======================================================================== @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "PAXCTL-NG 1" -.TH PAXCTL-NG 1 "2011-08-18" "elfix 0.3" "Documentation for elfix" +.TH PAXCTL-NG 1 "2014-07-30" "elfix 0.9" "Documentation for elfix" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff --git a/doc/revdep-pax.1 b/doc/revdep-pax.1 index 58568fa..ee7cfd5 100644 --- a/doc/revdep-pax.1 +++ b/doc/revdep-pax.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.23) .\" .\" Standard preamble: .\" ======================================================================== @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "REVDEP-PAX 1" -.TH REVDEP-PAX 1 "2011-10-19" "elfix 0.3" "Documentation for elfix" +.TH REVDEP-PAX 1 "2014-07-30" "elfix 0.9" "Documentation for elfix" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff --git a/misc/fix-gnustack/ChangeLog b/misc/fix-gnustack/ChangeLog new file mode 100644 index 0000000..7e6fc49 --- /dev/null +++ b/misc/fix-gnustack/ChangeLog @@ -0,0 +1,46 @@ +2014-07-30 + + * Seperate out fix-gnustack. See: https://bugs.gentoo.org/518524 + +2014-06-07 + + * Switch from error() to errx() make the code portable to musl (and BSD). + +2013-05-20 + + * Add check if ELF_C_RDWR_MMAP is declared in libelf.h. This distinguishes + elfutils from libelf. The former will not build on uclibc, but the later + does not provide ELF_C_RDWR_MMAP. + +2012-07-29 + + * remove unnecessary check for yasm in configure.ac + * make tests/gnustack machine independant by generating + native assembly using gcc + +2012-07-27 + + * switch from yasm to gcc for assembler for arches other than + x86 and amd64 + * opening an ELF_C_RDWR does not work for either libelf or + elfutils, so revert to ELF_C_RDWR_MMAP. This does, however, + break linking against libelf + +2012-07-24 + + * switch from ELF_C_RDWR_MMAP to ELF_C_RDWR to link again libelf + for uclibc systems + +2011-11-26 + + * fix-gnustack and paxctl-ng: fix exit code on success + +2011-04-14 + + * Initial release of fix-gnustack +----- + +Copyright (C) 2011-2014 Anthony G. Basile + +Copying and distribution of this file, with or without modification, are +permitted provided the copyright notice and this notice are preserved. diff --git a/misc/fix-gnustack/Makefile.am b/misc/fix-gnustack/Makefile.am new file mode 100644 index 0000000..821f549 --- /dev/null +++ b/misc/fix-gnustack/Makefile.am @@ -0,0 +1,6 @@ +ACLOCAL_AMFLAGS = -I m4 + +sbin_PROGRAMS = fix-gnustack +fix_gnustack_SOURCES = fix-gnustack.c + +SUBDIRS = doc tests diff --git a/autogen.sh b/misc/fix-gnustack/autogen.sh similarity index 78% copy from autogen.sh copy to misc/fix-gnustack/autogen.sh index 917d1a7..0b7b16b 100755 --- a/autogen.sh +++ b/misc/fix-gnustack/autogen.sh @@ -3,5 +3,7 @@ aclocal && \ autoheader && \ autoconf && \ -libtoolize --copy && \ automake --add-missing --copy + +cd doc +./make.sh diff --git a/misc/fix-gnustack/configure.ac b/misc/fix-gnustack/configure.ac new file mode 100644 index 0000000..2f5a245 --- /dev/null +++ b/misc/fix-gnustack/configure.ac @@ -0,0 +1,58 @@ +# +# configure.ac: this file is part of the elfix package +# Copyright (C) 2011 Anthony G. Basile +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +AC_PREREQ([2.69]) +AC_INIT([fix-gnustack], [0.1], [http://bugs.gentoo.org/]) +AC_CONFIG_SRCDIR([fix-gnustack.c]) +AC_CONFIG_HEADERS([config.h]) +AM_INIT_AUTOMAKE([1.12 foreign]) +AM_SILENT_RULES([no]) + +# Checks for programs. +AC_PROG_AWK +AC_PROG_CC +AC_PROG_SED + +# Checks for header files. +AC_CHECK_HEADERS( + [err.h fcntl.h gelf.h libgen.h stdlib.h string.h sys/stat.h sys/types.h unistd.h], + [], + [AC_MSG_ERROR(["Missing necessary header"])] +) + +# Checks for DECLs. +AC_CHECK_DECL([ELF_C_RDWR_MMAP],[],[],[[#include <libelf.h>]]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_TYPE_SIZE_T + +# Checks for library functions. +AC_CHECK_LIB( + [elf], + [elf_begin], + [], + [AC_MSG_ERROR(["Missing necessary function elf_begin in libelf"])] +) + +AC_CONFIG_FILES([ + Makefile + doc/Makefile + tests/Makefile +]) + +AC_OUTPUT diff --git a/misc/fix-gnustack/doc/Makefile.am b/misc/fix-gnustack/doc/Makefile.am new file mode 100644 index 0000000..b5f33f4 --- /dev/null +++ b/misc/fix-gnustack/doc/Makefile.am @@ -0,0 +1,3 @@ +ACLOCAL_AMFLAGS = -I m4 + +dist_man_MANS = fix-gnustack.1 diff --git a/doc/fix-gnustack.1 b/misc/fix-gnustack/doc/fix-gnustack.1 similarity index 97% rename from doc/fix-gnustack.1 rename to misc/fix-gnustack/doc/fix-gnustack.1 index 3ef26eb..06f720a 100644 --- a/doc/fix-gnustack.1 +++ b/misc/fix-gnustack/doc/fix-gnustack.1 @@ -1,4 +1,4 @@ -.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) +.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.23) .\" .\" Standard preamble: .\" ======================================================================== @@ -124,7 +124,7 @@ .\" ======================================================================== .\" .IX Title "FIX-GNUSTACK 1" -.TH FIX-GNUSTACK 1 "2011-04-14" "elfix 0.3" "Documentation for elfix" +.TH FIX-GNUSTACK 1 "2014-07-30" "fix-gnustack 0.1" "Documentation for fix-gnustack" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff --git a/doc/fix-gnustack.pod b/misc/fix-gnustack/doc/fix-gnustack.pod similarity index 100% rename from doc/fix-gnustack.pod rename to misc/fix-gnustack/doc/fix-gnustack.pod diff --git a/doc/make.sh b/misc/fix-gnustack/doc/make.sh similarity index 61% copy from doc/make.sh copy to misc/fix-gnustack/doc/make.sh index bf29d22..f9ed65e 100755 --- a/doc/make.sh +++ b/misc/fix-gnustack/doc/make.sh @@ -17,31 +17,15 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -#Run this on developer side, and distribute troff -#in case the end user doesn't have pod2man +# This is run on the developer side with autogen.sh -rm -f fix-gnustack.1 +PKG=$(cat ../configure.ac | grep ^AC_INIT | sed -e 's/^.*(\[//' -e 's/\].*$//') +VERSION=$(cat ../configure.ac | grep ^AC_INIT | sed -e "s/^.*$PKG\], \[//" -e 's/\].*$//') pod2man \ --official \ --section="1" \ - --release="elfix 0.3" \ - --center="Documentation for elfix" \ - --date="2011-04-14" \ + --release="$PKG $VERSION" \ + --center="Documentation for fix-gnustack" \ + --date=$(date +%Y-%m-%d) \ fix-gnustack.pod > fix-gnustack.1 - -pod2man \ - --official \ - --section="1" \ - --release="elfix 0.3" \ - --center="Documentation for elfix" \ - --date="2011-08-18" \ - paxctl-ng.pod > paxctl-ng.1 - -pod2man \ - --official \ - --section="1" \ - --release="elfix 0.3" \ - --center="Documentation for elfix" \ - --date="2011-10-19" \ - revdep-pax.pod > revdep-pax.1 diff --git a/src/fix-gnustack.c b/misc/fix-gnustack/fix-gnustack.c similarity index 100% rename from src/fix-gnustack.c rename to misc/fix-gnustack/fix-gnustack.c diff --git a/tests/gnustack/Makefile.am b/misc/fix-gnustack/tests/Makefile.am similarity index 83% rename from tests/gnustack/Makefile.am rename to misc/fix-gnustack/tests/Makefile.am index 2590ba2..9db0fd7 100644 --- a/tests/gnustack/Makefile.am +++ b/misc/fix-gnustack/tests/Makefile.am @@ -14,7 +14,7 @@ bad-gnustack$(EXEEXT): bad-gnustack.s check_SCRIPTS = gnustacktest TEST = $(check_SCRIPTS) -gnustacktest: - ./gnustacktest.sh 0 +gnustacktest: bad-gnustack + $(top_srcdir)/tests/gnustacktest.sh CLEANFILES = *.o *.s diff --git a/tests/gnustack/bad-gnustack.c b/misc/fix-gnustack/tests/bad-gnustack.c similarity index 100% rename from tests/gnustack/bad-gnustack.c rename to misc/fix-gnustack/tests/bad-gnustack.c diff --git a/tests/gnustack/gnustacktest.sh b/misc/fix-gnustack/tests/gnustacktest.sh similarity index 67% rename from tests/gnustack/gnustacktest.sh rename to misc/fix-gnustack/tests/gnustacktest.sh index 84d8b69..f200baf 100755 --- a/tests/gnustack/gnustacktest.sh +++ b/misc/fix-gnustack/tests/gnustacktest.sh @@ -17,28 +17,13 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -verbose=${1-0} - -echo "================================================================================" -echo -echo " RUNNING GNU_STACK TEST" -before=$(../../src/fix-gnustack -f bad-gnustack) +before=$(../fix-gnustack -f bad-gnustack) before=$(echo ${before} | awk '{ print $2 }') -after=$(../../src/fix-gnustack bad-gnustack) +after=$(../fix-gnustack bad-gnustack) after=$(echo ${after} | awk '{ print $2 }') rm bad-gnustack -if [ "${verbose}" != 0 ]; then - echo " BEFRE=${before}" - echo " AFTER=${after}" -fi if [ "${before}" = "RWX" -a "${after}" = "RW" ]; then - echo " OK" - ret=0 + exit 0 else - echo " NOT OKAY" - ret=1 + exit 1 fi -echo -echo "================================================================================" - -exit $ret diff --git a/src/Makefile.am b/src/Makefile.am index b41f21c..ec2404e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,8 +2,3 @@ ACLOCAL_AMFLAGS = -I m4 sbin_PROGRAMS = paxctl-ng paxctl_ng_SOURCES = paxctl-ng.c - -if BUILD_ELF -sbin_PROGRAMS += fix-gnustack -fix_gnustack_SOURCES = fix-gnustack.c -endif diff --git a/tests/Makefile.am b/tests/Makefile.am index 02e85b9..5deca02 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,6 +1,3 @@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = paxmodule pxtpax revdeppaxtest -if BUILD_ELF -SUBDIRS += gnustack -endif