diff --git a/.gcc-toolset-12-annobin.metadata b/.gcc-toolset-12-annobin.metadata index 0d8c363..4902fbb 100644 --- a/.gcc-toolset-12-annobin.metadata +++ b/.gcc-toolset-12-annobin.metadata @@ -1 +1 @@ -e1906be7abdd1b63d6d71fe2206c3507b27787ac SOURCES/annobin-10.76.tar.xz +6dfc4263307cf9d7c91de164184b090eaea100e7 SOURCES/annobin-11.08.tar.xz diff --git a/.gitignore b/.gitignore index 219e5f9..c0b362b 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/annobin-10.76.tar.xz +SOURCES/annobin-11.08.tar.xz diff --git a/SOURCES/annobin-libannocheck-test.patch b/SOURCES/annobin-libannocheck-test.patch deleted file mode 100644 index 666663d..0000000 --- a/SOURCES/annobin-libannocheck-test.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- annobin.orig/tests/libannocheck-test 2022-06-23 10:16:50.270910280 +0100 -+++ annobin-10.76/tests/libannocheck-test 2022-06-23 10:17:42.873589350 +0100 -@@ -32,7 +32,7 @@ then - exit 1 - fi - --COMMAND="$GCC use-libannocheck.o -L $LIBANNOCHECKDIR -lannocheck -o use-libannocheck -lelf -ldw -liberty -Wl,-rpath=$LIBANNOCHECKDIR -Wl,-z,now" -+COMMAND="$GCC use-libannocheck.o -L $LIBANNOCHECKDIR -fno-lto -lannocheck -o use-libannocheck -lelf -ldw -liberty -Wl,-rpath=$LIBANNOCHECKDIR -Wl,-z,now" - $COMMAND - if [ $? != 0 ]; - then -@@ -50,7 +50,7 @@ then - exit 1 - fi - --COMMAND="$GCC use-libannocheck.o -L $LIBANNOCHECKDIR -lannocheck -o use-libannocheck -lelf -ldw -liberty -Wl,-rpath=$LIBANNOCHECKDIR -Wl,-z,lazy" -+COMMAND="$GCC use-libannocheck.o -L $LIBANNOCHECKDIR -fno-lto -lannocheck -o use-libannocheck -lelf -ldw -liberty -Wl,-rpath=$LIBANNOCHECKDIR -Wl,-z,lazy" - $COMMAND - if [ $? != 0 ]; - then diff --git a/SPECS/annobin.spec b/SPECS/annobin.spec index 9d79999..9e5092a 100644 --- a/SPECS/annobin.spec +++ b/SPECS/annobin.spec @@ -4,11 +4,12 @@ Name: %{?scl_prefix}annobin Summary: Annotate and examine compiled binary files -Version: 10.76 +Version: 11.08 Release: 2%{?dist} License: GPLv3+ URL: https://sourceware.org/annobin/ # Maintainer: nickc@redhat.com +# Web Page: https://sourceware.org/annobin/ # Watermark Protocol: https://fedoraproject.org/wiki/Toolchain/Watermark #--------------------------------------------------------------------------------- @@ -56,7 +57,7 @@ URL: https://sourceware.org/annobin/ # uncommenting the lines below will result in annocheck not passing the rpminspect # tests.... # %%if %%{without plugin_rebuild} -%undefine _annotated_build +# %%undefine _annotated_build # %%endif #--------------------------------------------------------------------------------- @@ -73,12 +74,6 @@ Source: %{annobin_sources} # Patch01: annobin-foo.patch # NB - ADD %%patchNN line after the %%setup command down below.... -# TEMP patch until GTS-12 binutils is fixed. -# libannocheck test is failing because: -# lto1: fatal error: bytecode stream in file '/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../lib64/libiberty.a' generated with LTO version 11.3 instead of the expected 12.0 -# Need a binutils rebuild to fix... -Patch01: annobin-libannocheck-test.patch - #--------------------------------------------------------------------------------- %{?scl:Requires:%scl_runtime} @@ -87,7 +82,7 @@ Patch01: annobin-libannocheck-test.patch # We need the gcc-toolset-12 version of gcc to build annobin, as otherwise the versions will not match. %{?scl:Requires:%scl_require_package %{scl} gcc} -BuildRequires: %{?scl_prefix}gcc +BuildRequires: %{?scl_prefix}gcc %{?scl_prefix}annobin-plugin-gcc %define gcc_for_annobin %{?_scl_root}/usr/bin/gcc # Make sure that the necessary sub-packages are built. @@ -146,9 +141,6 @@ annotated files and reports on any missing security options. %package docs Summary: Documentation and shell scripts for use with annobin BuildArch: noarch -# annobin renamed to annobin-doc in 9.66-1 -Provides: %{?scl_prefix}%{name} = %{version}-%{release} -Obsoletes: %{?scl_prefix}%{name} < %{version}-%{release} # The documentation uses pod2man... BuildRequires: perl-interpreter perl-podlators gawk make sharutils @@ -322,7 +314,7 @@ echo "Requires: (%{?scl_prefix}gcc >= %{gcc_major} and %{?scl_prefix}gcc < %{gcc # but then tries to change directory into -annobin-. # %%autosetup -p1 %setup -q -n annobin-%{version} -%patch01 -p1 +# %%patch01 -p1 # The plugin has to be configured with the same arcane configure # scripts used by gcc. Hence we must not allow the Fedora build @@ -390,9 +382,9 @@ export LDFLAGS="$LDFLAGS %build_ldflags" export CLANG_TARGET_OPTIONS="-fcf-protection" %endif -CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" CXXFLAGS="$CFLAGS" %configure ${CONFIG_ARGS} || cat config.log +CC=%gcc_for_annobin CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" CXXFLAGS="$CFLAGS" %configure ${CONFIG_ARGS} || cat config.log -%make_build +%make_build %if %{with plugin_rebuild} # Rebuild the plugin(s), this time using the plugin itself! This @@ -405,7 +397,12 @@ make -C gcc-plugin clean BUILD_FLAGS="-fplugin=%{_tmppath}/tmp_annobin.so" # Disable the standard annobin plugin so that we do get conflicts. +# Note - Fedora's rpm uses a different way of evaluating macros. +%if 0%{?fedora} == 0 OPTS="$(rpm --eval '%undefine _annotated_build %build_cflags %build_ldflags')" +%else +OPTS="$(rpm --undefine=_annotated_build --eval '%build_cflags %build_ldflags')" +%endif # If building on systems with an assembler that does not support the # .attach_to_group pseudo op (eg RHEL-7) then enable the next line. @@ -448,6 +445,14 @@ mv %{buildroot}/%{llvm_plugin_dir}/annobin-for-clang.so %{buildroot}/%{clang_plu mkdir -p %{buildroot}/%{ANNOBIN_GCC_PLUGIN_DIR} cat `gcc --print-file-name=rpmver` > %{buildroot}/%{ANNOBIN_GCC_PLUGIN_DIR}/%{aver} +# Rename the plugin to the GTS version. +pushd %{buildroot}/%{ANNOBIN_GCC_PLUGIN_DIR} > /dev/null +mv annobin.so.0.0.0 gts-annobin.so.0.0.0 +rm -f annobin.so annobin.so.0 +ln -s gts-annobin.so.0.0.0 gts-annobin.so +ln -s gts-annobin.so.0.0.0 gts-annobin.so.0 +popd > /dev/null + # Also install a copy of the sources into the build tree. mkdir -p %{buildroot}%{annobin_source_dir} cp %{_sourcedir}/%{annobin_sources} %{buildroot}%{annobin_source_dir}/latest-annobin.tar.xz @@ -463,7 +468,7 @@ rm -f %{buildroot}%{_infodir}/dir # test suite logs in order to diagnose a test failure. make check GCC=%gcc_for_annobin if [ -f tests/test-suite.log ]; then - cat tests/test-suite.log + cat tests/*.log fi %endif @@ -483,19 +488,22 @@ fi %if %{with llvmplugin} %files plugin-llvm +%dir %{llvm_plugin_dir} %{llvm_plugin_dir}/annobin-for-llvm.so %endif %if %{with clangplugin} %files plugin-clang +%dir %{clang_plugin_dir} %{clang_plugin_dir}/annobin-for-clang.so %endif %if %{with gccplugin} %files plugin-gcc -%{ANNOBIN_GCC_PLUGIN_DIR}/annobin.so -%{ANNOBIN_GCC_PLUGIN_DIR}/annobin.so.0 -%{ANNOBIN_GCC_PLUGIN_DIR}/annobin.so.0.0.0 +%dir %{ANNOBIN_GCC_PLUGIN_DIR} +%{ANNOBIN_GCC_PLUGIN_DIR}/gts-annobin.so +%{ANNOBIN_GCC_PLUGIN_DIR}/gts-annobin.so.0 +%{ANNOBIN_GCC_PLUGIN_DIR}/gts-annobin.so.0.0.0 %{ANNOBIN_GCC_PLUGIN_DIR}/%{aver} %{annobin_source_dir}/latest-annobin.tar.xz %endif @@ -506,11 +514,71 @@ fi %{_libdir}/libannocheck.* %{_bindir}/annocheck %{_mandir}/man1/annocheck.1* +%{_libdir}/pkgconfig/libannocheck.pc %endif #--------------------------------------------------------------------------------- %changelog +* Fri Feb 02 2023 Nick Clifton - 11.08-2 +- Re-enable building with LTO. (#2166579) + +* Tue Jan 31 2023 Nick Clifton - 11.08-1 +- Annocheck: Fix atexit test. Fix recording of version numbers. (#2165528) + +* Fri Jan 13 2023 Nick Clifton - 11.06-1 +- Annocheck: Fix handling of file built by multiple versions of gcc. (#2160700) +- Spec file: Enable annotated building. + +* Thu Jan 12 2023 Nick Clifton - 11.05-1 +- Annocheck: Fix handling of empty files. (#2159292) +- Annocheck: Add crti.o and crtn.o to the list of known glibc special files. (#2158740) +- Annocheck: Fix memory leaks. + +* Thu Jan 05 2023 Nick Clifton - 11.02-1 +- Annocheck: Do not assume that object files contain no code simply because they do not have an executable segment. (#2158386) +- Annocheck: Add more special glibc filenames. (#2158100) + +* Thu Dec 22 2022 Nick Clifton - 10.99-1 +- Annocheck: Improve handling of tool versions. + +* Mon Dec 19 2022 Nick Clifton - 10.98-1 +- GCC Plugin: Fix building with gcc-13. + +* Fri Dec 16 2022 Nick Clifton - 10.97-1 +- Annocheck: Add test for binaries built by cross compilers. +- Annocheck: Improve heuristic used to detect binaries without code. (#2144533) + +* Mon Dec 12 2022 Nick Clifton - 10.95-1 +- Annocheck: Use real filename rather than debuginfo filename. (#2152280) + +* Mon Dec 05 2022 Nick Clifton - 10.94-2 +- Rename gcc plugin to gts-annobin. (#2111977) + +* Wed Nov 30 2022 Florian Weimer - 10.94-1 +- Rebase to 10.94, brining in support for LLVM 15. (#2118992) +- Annocheck: Better detection of binaries which do not contain code. (#2144533) +- Annocheck: Provide more information when a test is skipped because the file being tested was not compiled. +- Annocheck: Try harder not to run mutually exclusive tests. +- Tests: Fix future-test so that it properly handles the situation where the compiler does not support the new options. +- Libannocheck: Actually set result fields after tests are run. +- Libannocheck: Replace libannocheck_version variable with LIBANNOCHECK_VERSION define. +- Libannocheck: Remove 'Requires binutils-devel' from libannocheck.pc. +- Libannocheck: Move into separate sub-package. +- Libannocheck: Add libannocheck.pc pkgconfig file. +- Libannocheck: Add libannocheck_reinit(). +- GCC Plugin: Record -ftrivial-auto-var-init and -fzero-call-used-regs. +- Annocheck: Add future tests for -ftrivial-auto-var-init and -fzero-call-used-regs. +- Clang Plugin: Fix for building with Clang-15. (#2125875) +- Annocheck: Add a test for the inconsistent use of -Ofast. (#1248744) +- Plugin: Fix top level configuration support for RiscV. +- Annocheck: Improvements to the size tool. +- Annocheck: Fixes for libannocheck.h. +- Annocheck: Add automatic profile selection. +- Annocheck: Improve gap detection and reporting. +- Spec File: Use the %%dir directive in the %%files section to ensure that +- plugin directories are useable. (#2080454) + * Thu Jun 23 2022 Nick Clifton - 10.76-2 - Fix libannocheck test so that it does not use lto.