diff --git a/.gitignore b/.gitignore index 95233ca..ed92b12 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /annobin-*.tar.xz /annobin-9.51-1.fc34.src.rpm +/annobin-11.11-1.fc36.src.rpm diff --git a/annobin.spec b/annobin.spec index f2f5ad0..19d19e6 100644 --- a/annobin.spec +++ b/annobin.spec @@ -1,9 +1,9 @@ Name: annobin Summary: Annotate and examine compiled binary files -Version: 13.05 -Release: 2%{?dist} -License: GPL-3.0-or-later AND LGPL-2.0-or-later AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (LGPL-2.0-or-later WITH GCC-exception-2.0) AND GFDL-1.3-or-later +Version: 12.10 +Release: 1%{?dist} +License: GPLv3+ URL: https://sourceware.org/annobin/ # Maintainer: nickc@redhat.com # Web Page: https://sourceware.org/annobin/ @@ -36,12 +36,7 @@ URL: https://sourceware.org/annobin/ # Set this to zero to disable the requirement for a specific version of gcc. # This should only be needed if there is some kind of problem with the version # checking logic or when building on RHEL-7 or earlier. -# -# Update: now that we have gcc version checking support in redhat-rpm-config -# there is no longer a great need for a hard gcc version check here. Not -# enabling this check greatly simplifies the process of installing a new major -# version of gcc into the buildroot. -%global with_hard_gcc_version_requirement 0 +%global with_hard_gcc_version_requirement 1 %bcond_without plugin_rebuild # Allow the building of annobin without using annobin itself. @@ -55,11 +50,11 @@ URL: https://sourceware.org/annobin/ # # The default is to use plugin during rebuilds (cf BZ 1630550) but this can # be changed because of the need to be able to rebuild annobin when a change -# to gcc breaks the version installed into the buildroot. Note however that +# to gcc breaks the version installed into the buildroot. Mote however that # uncommenting the lines below will result in annocheck not passing the rpminspect # tests.... # %%if %%{without plugin_rebuild} -# %%undefine _annotated_build +%undefine _annotated_build # %%endif #--------------------------------------------------------------------------------- @@ -72,7 +67,7 @@ Source: https://nickc.fedorapeople.org/%{annobin_sources} %global annobin_source_dir %{_usrsrc}/annobin # Insert patches here, if needed. Eg: -# Patch01: annobin-plugin-default-string-notes.patch +# Patch01: annobin-foo.patch #--------------------------------------------------------------------------------- @@ -132,6 +127,9 @@ 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: %{name} = %{version}-%{release} +Obsoletes: %{name} < %{version}-%{release} # The documentation uses pod2man... BuildRequires: perl-interpreter perl-podlators gawk make sharutils @@ -144,15 +142,17 @@ Provides the documentation files and example shell scripts for use with annobin. %package tests Summary: Test scripts and binaries for checking the behaviour and output of the annobin plugin Requires: %{name}-docs = %{version}-%{release} -BuildRequires: make sharutils -%if %{with debuginfod} -BuildRequires: elfutils-debuginfod-client-devel -%endif %description tests Provides a means to test the generation of annotated binaries and the parsing of the resulting files. +BuildRequires: make + +%if %{with debuginfod} +BuildRequires: elfutils-debuginfod-client-devel +%endif + %endif #---------------------------------------------------------------------------- @@ -161,7 +161,7 @@ of the resulting files. %package annocheck Summary: A tool for checking the security hardening status of binaries -BuildRequires: gcc elfutils elfutils-devel elfutils-libelf-devel rpm-devel make +BuildRequires: gcc elfutils elfutils-devel elfutils-libelf-devel rpm-devel binutils-devel make %if %{with debuginfod} BuildRequires: elfutils-debuginfod-client-devel @@ -178,13 +178,14 @@ hardening options. %package libannocheck Summary: A library for checking the security hardening status of binaries -BuildRequires: gcc elfutils elfutils-devel elfutils-libelf-devel rpm-devel make +BuildRequires: gcc elfutils elfutils-devel elfutils-libelf-devel rpm-devel binutils-devel make %if %{with debuginfod} BuildRequires: elfutils-debuginfod-client-devel %endif Requires: %{name}-docs = %{version}-%{release} +Requires: binutils-devel %description libannocheck Installs the libannocheck library which uses the notes generated by the @@ -324,10 +325,6 @@ touch configure */configure Makefile.in */Makefile.in # Similarly we do not want to rebuild the documentation. touch doc/annobin.info -# Generate a source tarball for installation later with all the patches -# applied. This must be the last step in the prep section. -tar -C ../ -cJf ../latest-annobin.tar.xz %{name}-%{version} - #--------------------------------------------------------------------------------- %build @@ -346,8 +343,8 @@ CONFIG_ARGS="$CONFIG_ARGS --with-debuginfod" CONFIG_ARGS="$CONFIG_ARGS --without-debuginfod" %endif -%if %{without clangplugin} -CONFIG_ARGS="$CONFIG_ARGS --without-clang-plugin" +%if %{with clangplugin} +CONFIG_ARGS="$CONFIG_ARGS --with-clang" %endif %if %{without gccplugin} @@ -356,8 +353,8 @@ CONFIG_ARGS="$CONFIG_ARGS --without-gcc-plugin" CONFIG_ARGS="$CONFIG_ARGS --with-gcc-plugin-dir=%{ANNOBIN_GCC_PLUGIN_DIR}" %endif -%if %{without llvmplugin} -CONFIG_ARGS="$CONFIG_ARGS --without-llvm-plugin" +%if %{with llvmplugin} +CONFIG_ARGS="$CONFIG_ARGS --with-llvm" %endif %if %{without tests} @@ -367,28 +364,21 @@ CONFIG_ARGS="$CONFIG_ARGS --without-tests" %if %{without annocheck} CONFIG_ARGS="$CONFIG_ARGS --without-annocheck" %else +# Fedora supports AArch64's -mbranch-protection=bti, RHEL does not. +%if 0%{?fedora} != 0 export CFLAGS="$CFLAGS -DAARCH64_BRANCH_PROTECTION_SUPPORTED=1" %endif +%endif %set_build_flags export CFLAGS="$CFLAGS $RPM_OPT_FLAGS %build_cflags" export LDFLAGS="$LDFLAGS %build_ldflags" -# Set target-specific options to be used when building the Clang and LLVM plugins. -# FIXME: There should be a better way to do this. %ifarch %{ix86} x86_64 +# FIXME: There should be a better way to do this. export CLANG_TARGET_OPTIONS="-fcf-protection" %endif -%ifarch aarch64 -export CLANG_TARGET_OPTIONS="-mbranch-protection=standard" -%endif -%ifnarch riscv64 -export CLANG_TARGET_OPTIONS="$CLANG_TARGET_OPTIONS -flto" -%endif - -# Override the default fortification level used by the Clang and LLVM plugins. -export PLUGIN_FORTIFY_OPTION="-D_FORTIFY_SOURCE=3" CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" CXXFLAGS="$CFLAGS" %configure ${CONFIG_ARGS} || cat config.log @@ -405,8 +395,8 @@ make -C gcc-plugin clean BUILD_FLAGS="-fplugin=%{_tmppath}/tmp_annobin.so" # Disable the standard annobin plugin so that we do get conflicts. -# Note - rpm-4.10 uses a different way of evaluating macros. -%if 0%{?rhel} && 0%{?rhel} < 7 +# 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')" @@ -422,14 +412,12 @@ rm %{_tmppath}/tmp_annobin.so %if %{with clangplugin} cp clang-plugin/annobin-for-clang.so %{_tmppath}/tmp_annobin.so -# To enable verbose more in the plugin append the following: ANNOBIN="verbose" -make -C clang-plugin clean all CLANG_TARGET_OPTIONS="$CLANG_TARGET_OPTIONS $BUILD_FLAGS" PLUGIN_INSTALL_DIR=%{clang_plugin_dir} +make -C clang-plugin all CXXFLAGS="$OPTS $BUILD_FLAGS" %endif %if %{with llvmplugin} cp llvm-plugin/annobin-for-llvm.so %{_tmppath}/tmp_annobin.so -# To enable verbose more in the plugin append the following: ANNOBIN_VERBOSE="true" -make -C llvm-plugin clean all CLANG_TARGET_OPTIONS="$CLANG_TARGET_OPTIONS $BUILD_FLAGS" PLUGIN_INSTALL_DIR=%{llvm_plugin_dir} +make -C llvm-plugin all CXXFLAGS="$OPTS $BUILD_FLAGS" %endif # endif for %%if {with_plugin_rebuild} @@ -457,38 +445,27 @@ cat `gcc --print-file-name=rpmver` > %{buildroot}/%{ANNOBIN_GCC_PLUGIN_DIR}/%{av # Also install a copy of the sources into the build tree. mkdir -p %{buildroot}%{annobin_source_dir} -cp ../latest-annobin.tar.xz %{buildroot}%{annobin_source_dir}/latest-annobin.tar.xz +cp %{_sourcedir}/%{annobin_sources} %{buildroot}%{annobin_source_dir}/latest-annobin.tar.xz %endif rm -f %{buildroot}%{_infodir}/dir -# When annocheck is disabled, annocheck.1.gz will still be generated, remove it. -%if %{without annocheck} -rm -f %{_mandir}/man1/annocheck.1.gz -%endif - #--------------------------------------------------------------------------------- %if %{with tests} %check -# The first "make check" is run with "|| :" so that we can capture any logs -# from failed tests. The second "make check" is there so that the build -# will fail if any of the tests fail. -make check || : +# Change the following line to "make check || :" on RHEL7 or if you need to see the +# test suite logs in order to diagnose a test failure. +make check if [ -f tests/test-suite.log ]; then cat tests/test-suite.log fi -# If necessary use uuencode to preserve test binaries here. For example: -# uuencode tests/tmp_atexit/atexit.strip atexit.strip - -make check %endif #--------------------------------------------------------------------------------- %files docs %license COPYING3 LICENSE -%dir %{_datadir}/doc/annobin-plugin %exclude %{_datadir}/doc/annobin-plugin/COPYING3 %exclude %{_datadir}/doc/annobin-plugin/LICENSE %doc %{_datadir}/doc/annobin-plugin/annotation.proposal.txt @@ -518,7 +495,6 @@ make check %{ANNOBIN_GCC_PLUGIN_DIR}/annobin.so.0 %{ANNOBIN_GCC_PLUGIN_DIR}/annobin.so.0.0.0 %{ANNOBIN_GCC_PLUGIN_DIR}/%{aver} -%dir %{annobin_source_dir} %{annobin_source_dir}/latest-annobin.tar.xz %endif @@ -536,569 +512,129 @@ make check #--------------------------------------------------------------------------------- %changelog -* Fri Jan 16 2026 Fedora Release Engineering - 13.05-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Thu Jan 15 2026 Nick Clifton - 13.05-1 -- Annocheck: Add .fc44 to list of known rpm file extensions. - -* Sat Dec 20 2025 Jakub Jelinek - 13.04-3 -- NVR bump to allow rebuild for new GCC in a side-tag. - -* Sat Dec 20 2025 Jakub Jelinek - 13.04-2 -- NVR bump to allow rebuild for new GCC in a side-tag. - -* Thu Dec 18 2025 Nick Clifton - 13.04-1 -- Annocheck: Fix compile time warnings from GCC-15 re: strchr returning a const char *. - -* Wed Nov 05 2025 Nick Clifton - 13.03-1 -- Annocheck: Skip production test for gcc libraries. (RHEL-123175) - -* Fri Oct 31 2025 Nick Clifton - 13.02-1 -- Annocheck: Update heuristic to detect gcc libraries. (RHEL-124869) - -* Thu Oct 23 2025 Nick Clifton - 13.01-1 -- Annocheck: Change FAIL for binaries built by a cross compiler to a MAYBE. (RHEL-123175) - -* Wed Aug 06 2025 Nick Clifton - 12.99-1 -- Annocheck: Improve detection of glibc static maths libraries. (RHEL-107470) - -* Wed Jul 23 2025 Fedora Release Engineering - 12.98-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Fri Jul 04 2025 Tulio Magno Quites Machado Filho - 12.98-1 -- Improve configure and meson files for consistent builds. - -* Thu Jun 19 2025 Nick Clifton - 12.97-1 -- Annocheck: Delete the temporary debug info directory after the tests have finished. - -* Wed Jun 04 2025 Nick Clifton - 12.96-1 -- Annocheck: Fix bugs in debug rpm location code. Add more glibc exceptions. (RHEL-95216) - -* Thu May 15 2025 Nick Clifton - 12.95-1 -- Annocheck: Improve performance with multiple debug info files and multiple files to scan. (#2366180) - -* Tue May 13 2025 Nick Clifton - 12.94-1 -- Annocheck: Update heuristic for detecting gcc files to cope with gcc 15. (#2365824) - -* Mon Mar 17 2025 Nick Clifton - 12.93-1 -- Annocheck: Fix test for GO revision. (RHEL-56031) - -* Fri Feb 14 2025 Nick Clifton - 12.92-1 -- Annocheck: Do not rely upon libelf's ability to detect links to separate debuginfo files. (RHEL-79264) - -* Thu Feb 13 2025 Nick Clifton - 12.91-1 -- Annocheck: Fix resource leak. (RHEL-79253) - -* Wed Feb 12 2025 Nick Clifton - 12.90-1 -- Annocheck: Fix double free. Add special handling for COMBOOT modules. - -* Tue Feb 11 2025 Nick Clifton - 12.89-1 -- Annocheck: Improve diagnostics when a separate debug info file cannot be found. - -* Mon Feb 03 2025 Nick Clifton - 12.88-1 -- Annocheck: Look for -fstack-clash-protection in DW_AT_producer string. (RHEL-77328) - -* Tue Jan 28 2025 Nick Clifton - 12.87-1 -- Annocheck: Fix locating string notes (again). Add exception for glibc benchmark tests. (RHEL-76456) - -* Mon Jan 27 2025 Nick Clifton - 12.86-1 -- Annocheck: Add crtoffloadtableS.o to list of known gcc binaries. (RHEL-760404) - -* Mon Jan 27 2025 Nick Clifton - 12.85-1 -- Annocheck: Fix the --debug-dir option. - -* Thu Jan 23 2025 Nick Clifton - 12.84-1 -- Annocheck: Fix corrupt warning message when unable to locate separate debug info files. - -* Wed Jan 22 2025 Nick Clifton - 12.83-1 -- Annocheck: Remove spurious debugging messages. - -* Wed Jan 22 2025 Nick Clifton - 12.82-1 -- Annocheck: Always look for annobin notes in separate debug info files. (RHEL-75778) - -* Thu Jan 16 2025 Nick Clifton - 12.81-1 -- Annocheck: Support multiple --debug-rpm and --debug-file options. (RHEL-73349) - -* Sat Jan 11 2025 Jakub Jelinek - 12.80-2 -- NVR bump to allow rebuild for new GCC in a side-tag. - -* Fri Dec 13 2024 Nick Clifton - 12.80-1 -- Annocheck: Add support for sys-root'ed glibc packages. (RHEL-71296) - -* Tue Dec 10 2024 Nick Clifton - 12.79-1 -- GCC Plugin: Tidy up use of gcc's diagnoatic headers. (#32429) -- Testsuite: Use configured compiler when running tests. - -* Mon Dec 09 2024 Nick Clifton - 12.78-1 -- GCC Plugin: Fix building with gcc 15. (#32429) - -* Fri Nov 15 2024 Nick Clifton - 12.77-1 -- Annocheck: Fix overly long debug messages. - -* Fri Nov 15 2024 Nick Clifton - 12.76-1 -- Annocheck: Rename rwx-seg test to load-segments. Add more checks. Add check for gaps as a future fail. -- Annocheck: Add --no-allow-excpetions to disable exceptions for known special binaries. -- Annocheck: Add --enable-future to enable future fail components in normal tests. -- Annocheck: Fix bug preventing the inclusion of the rpm name in reports. - -* Tue Nov 12 2024 Nick Clifton - 12.75-1 -- Annocheck: Add more exceptions for gcc binaries. (RHEL-33365) -- Annocheck: Add --skip-passes option. - -* Wed Nov 06 2024 Nick Clifton - 12.74-1 -- Annocheck: Add exceptions for gcc binaries. (RHEL-33365) - -* Tue Nov 05 2024 Nick Clifton - 12.73-1 -- Annocheck: Skip property note test for i386 binaries created by LLVM. (#2323797) - -* Fri Nov 01 2024 Nick Clifton - 12.72-1 -- Annocheck: Skip FORTIFY and GLIBC_ASSERTIONS tests for LLVM produced binaries with unparseable DW_AT_producer attributes in their DWARF debug info. (RHEL-65411) - -* Mon Oct 14 2024 Nick Clifton - 12.71-1 -- GCC Plugin: Change type of the .annobin.notes section from SHT_STRTAB to SHT_PROGBITS. - -* Tue Aug 13 2024 Nick Clifton - 12.70-1 -- Clang & LLVM Plugins: Include install directory in binary. (RHEL-54069) - -* Mon Aug 12 2024 Nick Clifton - 12.69-1 -- BuiltBy: Fix seg-fault when comparing language version strings. (RHEL-53497) - -* Wed Aug 07 2024 Nick Clifton - 12.67-1 -- Annocheck: Stop spurious assembler warnings. (RHEL-53213) -- Annocheck: Stop warnings about known gaps. (RHEL-53218) - -* Fri Aug 02 2024 Nick Clifton - 12.66-1 -- Annocheck: Fix stack realign test. (#2302427) - -* Mon Jul 29 2024 Nick Clifton - 12.65-1 -- Annocheck: Fix recording arguments for later re-use. (RHEL-50802) - -* Fri Jul 26 2024 Nick Clifton - 12.64-1 -- GCC Plugin: Fix building AArch64 components with gcc earlier than 11.3. - -* Mon Jul 22 2024 Nick Clifton - 12.63-1 -- Annocheck: Add improvements to the builtby utility. - -* Wed Jul 17 2024 Fedora Release Engineering - 12.62-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Mon Jul 08 2024 Nick Clifton - 12.62-1 -- Annocheck: Add support for ADA binaries. -- Annocheck: Add support for binaries built from more than two high level source languages. -- Annocheck: Add support for object files containing no executable code. -- Annocheck: Do not FAIL LLVM compiled binaries that have not been built with sanitize-cfi and/or sanitize-safe-stack. - -* Wed Jun 26 2024 Nick Clifton - 12.60-1 -- Annocheck: Add support for Fortran binaries. - -* Tue Jun 11 2024 Nick Clifton - 12.59-1 -- Annocheck: Add heuristic for detecting parts of the CGO runtime library. - -* Mon Jun 10 2024 Nick Clifton - 12.58-1 -- Annocheck: Add improvements for handling Clang runtime binaries. - -* Tue Jun 04 2024 Nick Clifton - 12.57-1 -- Annocheck: Add tweaks for mixed Rust/C binaries. (#2284605) -- Annocheck: Add more glibc source file names. - -* Mon May 20 2024 Nick Clifton - 12.55-1 -- Annocheck: Skip GAPS test for GO binaries. (RHEL-36308) - -* Mon May 20 2024 Nick Clifton - 12.54-2 -- Spec File: Add annobin plugin document directory to the files section. (#2279779) - -* Tue May 14 2024 Nick Clifton - 12.54-1 -- Annocheck: Remove some false positives for Rust binaries. (#2280239) - -* Thu May 09 2024 Nick Clifton - 12.53-2 -- Spec File: Add the annobin source directory to the files section. (#2279779) - -* Thu May 09 2024 Nick Clifton - 12.53-1 -- Annocheck: Defer passing the branch protection test until all notes have been checked. -- GCC Plugin: Add extra code for detecting the branch protection setting. (RHEL-35958) - -* Thu Apr 25 2024 Nick Clifton - 12.52-1 -- Annocheck: Add OpenSSL Engine test. (PTG-319) - -* Tue Apr 23 2024 Nick Clifton - 12.51-1 -- Annocheck: Test for gaps even when only one note is present. - -* Mon Apr 22 2024 Nick Clifton - 12.50-1 -- Annocheck: Skip AArch64 branch protection test for GO binaries. - -* Thu Apr 18 2024 Nick Clifton - 12.49-1 -- GCC Plugin: Disable active check for -Wimplicit-int for non-C sources. (#2275884) -- Annocheck: Ignore stack checks for AMD GPU binaries. -- Annocheck: Do not produce FAIL result for i686 binaries in the RHEL-10 profile. -- Annocheck: Test for __stack_chk_guard being writeable. - -* Tue Apr 02 2024 Nick Clifton - 12.48-1 -- Annocheck: Update heuristics for detecting glibc code in executables. (RHEL-30579) - -* Wed Mar 27 2024 Nick Clifton - 12.47-1 -- Clang & LLVM Plugins: Allow environment to override fortification level. (RHEL-30579) -- Spec File: Override fortification level and set it to 3. - -* Mon Mar 25 2024 Tulio Magno Quites Machado Filho - 12.46-1 -- Annocheck: Improve detection of -mbranch-protection option. -- Clang Plugin: Add global-file-syms option. -- LLVM Plugin: Add global-file-syms option. -- Plugins: Add support for ANNOBIN environment variable. - -* Thu Mar 21 2024 Nick Clifton - 12.45-1 -- GCC Plugin: Fix bug extracing the value of target specific command line options. - -* Wed Mar 06 2024 Nick Clifton - 12.44-1 -- Configure: Remove check for FrontendPluginRegistry.h header as it is stored in a non-standard location on Debian systems. -- Debuginfod test: Allow for the libdwfl library silently contacting the debuginfod server. - -* Tue Mar 05 2024 Nick Clifton - 12.43-1 -- LLVM Plugin: Use llvm-config to get the correct paths and options for building executables. -- Clang Plugin: Likewise. -- Enable silent rules for most building. -- Annocheck: Correctly extract DWARF attributes from DT_REL files. - -* Fri Mar 01 2024 Nick Clifton - 12.42-1 -- Annocheck: Improve heuristics for locating debug info files. (#2267097) -- Configure: Harmonize configure options. - -* Tue Feb 27 2024 Nick Clifton - 12.41-1 -- Clang Plugin: Fix building with Clang 18. (#31414) -- GCC Plugin: Add support for MIPS specific target functions. -- GCC Plugin: Use .dc.a for address expressions in 64-bit ELF format notes. - -* Tue Feb 20 2024 Tulio Magno Quites Machado Filho - 12.40-2 -- Spec File: Remove a workaround for ppc64le. - -* Tue Feb 13 2024 Nick Clifton - 12.40-1 -- Annocheck: Improve heuristic for skipping LTO and FORTIFY tests. (#2264000) - -* Fri Feb 09 2024 Nick Clifton - 12.39-1 -- Annocheck: Also skip property note test for i686 binaries. (#2258571) - -* Tue Jan 23 2024 Nick Clifton - 12.38-1 -- Annocheck: Also skip the entry point test for i686 binaries. (#2258571) - -* Mon Jan 22 2024 Fedora Release Engineering - 12.37-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 12.37-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Wed Jan 17 2024 Nick Clifton - 12.37-1 -- GCC Plugin: Do not use section groups with string format notes. - -* Tue Jan 16 2024 Nick Clifton - 12.36-2 -- Spec File: NVR bump in order to allow building in side tag. - -* Tue Jan 16 2024 Nick Clifton - 12.36-1 -- Annocheck: Disable cf-protection test for i686 architecture. (#2258571) - -* Mon Jan 15 2024 Nick Clifton - 12.35-4 -- Spec File: NVR bump in order to allow building in side tag. - -* Mon Jan 15 2024 Nick Clifton - 12.35-3 -- Spec File: Disable hard gcc check in order to allow builds with new version of gcc. - -* Thu Jan 11 2024 Songsong Zhang - 12.35-2 -- Spec File: Do not install annocheck.1.gz when annocheck is disabled. - -* Thu Jan 04 2024 Nick Clifton - 12.35-1 -- Annocheck: Improve detection of FIPS compliant GO binaries. - -* Fri Dec 15 2023 Nick Clifton - 12.34-1 -- GCC Plugin: Fix recording of the -Wimplicit-int and -Wimplicit-function-declaration warnings. Add active checks for when they are deliberately disabled. - -* Mon Dec 11 2023 Nick Clifton - 12.33-1 -- Tests: Fix implicit-values test so that it will compile with gcc 14+. - -* Fri Nov 24 2023 Nick Clifton - 12.32-1 -- GCC Plugin: Add support for -fhardended. - -* Wed Nov 15 2023 Nick Clifton - 12.31-1 -- Update glibc detection heuristics for PPC64. (RHEL-16453) - -* Wed Nov 01 2023 Nick Clifton - 12.30-1 -- Fix another atexit test failure. (#2247481) - -* Mon Oct 30 2023 Nick Clifton - 12.29-1 -- Fix atexit test failure. -- Notes: Add support for string format notes. - -* Fri Oct 06 2023 Nick Clifton - 12.28-1 -- GCC Plugin: Record settings of -Wstrict-flex-arrays and -fstrict-flex-arrays -- Annobin: Add future test of these options. - -* Tue Sep 26 2023 Nick Clifton - 12.27-1 -- GCC Plugin: Record settings of -Wimplicit-int and -Wimplicit-function-declaration. -- Annobin: Add test for these warnings. - -* Wed Sep 06 2023 Nick Clifton - 12.26-1 -- LLVM Plugin: Fix building with LLVM version 17. - -* Wed Aug 30 2023 Nick Clifton - 12.25-1 -- GCC Plugin: Enable string note format by default. - -* Fri Aug 04 2023 Nick Clifton - 12.24-1 -- Annocheck: Change GO FIPS test to look for CGO_ENABLED markers. - -* Mon Jul 31 2023 Nick Clifton - 12.23-1 -- Annocheck: Add test for FIPS compliant GO binaries. - -* Wed Jul 26 2023 Nick Clifton - 12.22-1 -- Annocheck: Fix double free. (#2226749) - -* Wed Jul 19 2023 Fedora Release Engineering - 12.21-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Tue Jul 18 2023 Nick Clifton - 12.21-1 -- Spec File: migrated to SPDX license. (#2222112) - -* Mon Jul 17 2023 Nick Clifton - 12.20-2 -- Spec File: Change License field to use SPDX notation. (#2222112) - -* Mon Jul 17 2023 Nick Clifton - 12.20-1 -- Annocheck: Ignore AArch64 $x and $d symbols. (#2221192) - -* Wed Jul 05 2023 Nick Clifton - 12.19-1 -- GCC Plugin: Suppress active checks for fortran sources. Improve scanning of COLLECT_GCC_OPTIONS. - -* Thu Jun 29 2023 Nick Clifton - 12.18-1 -- Annocheck: Remove dependency upon binutils-devel. - -* Thu Jun 29 2023 Nick Clifton - 12.17-1 -- Annocheck: Add detection of known parts of libstdc++-nonshared.a that contain gaps. (#2217864) - -* Tue Jun 27 2023 Nick Clifton - 12.16-1 -- Annocheck: Ignore weak/undef function symbols when checking to see if a binary contains code. (#2217840) - -* Mon Jun 26 2023 Nick Clifton - 12.15-1 -- Annocheck: Add --suppress-version-warnings option. - -* Thu Jun 22 2023 Nick Clifton - 12.14-1 -- Annocheck: Do not ignore separate debuginfo files that do not contain any DWARF. (#2144553) - -* Tue Jun 20 2023 Nick Clifton - 12.13-1 -- Annocheck: Ignore /dev/null filename in string notes. -- Annocheck: More tweaks to glibc detection heuristics. (#2215968) - -* Thu Jun 01 2023 Nick Clifton - 12.12-1 -- Annocheck: Check for string notes in separate debug info files. (#2211694) - -* Fri May 26 2023 Petr Pisar - 12.11-1 -- Annocheck: Add support for el10 and rhel-10 profiles. (RHEL-526) - -* Mon May 22 2023 Petr Pisar - 12.10-3 -- Rebuild against rpm-4.19 (https://fedoraproject.org/wiki/Changes/RPM-4.19) - -* Fri May 05 2023 Nick Clifton - 12.10-2 -- GCC Plugin: Default to generating string format notes. (Experimental) - -* Fri Apr 28 2023 Nick Clifton - 12.10-1 +* Tue May 02 2023 Yara Ahmad - 12.10-1 - Annocheck: Suppress more tests for Rust binaries. - -* Tue Apr 25 2023 Nick Clifton - 12.09-1 - Annocheck: Fix detection of missing plugin options. (#2189492) - -* Tue Apr 25 2023 Nick Clifton - 12.08-1 - Fix generation of auto-generated files. - Fix covscan reported errors. - -* Fri Apr 21 2023 Nick Clifton - 12.07-1 - gcc-plugin: generate warnings about misspelt -D_FORTIFY_SOURCE and/or -D_GLIBCXX_ASSERTIONS options. - -* Thu Apr 20 2023 Nick Clifton - 12.06-1 - gcc-plugin: use a bigger buffer for constructing notes. - -* Wed Apr 19 2023 Nick Clifton - 12.05-1 - llvm-plugin: Fix detection of optimization level. Improve test. - clang-plugin: Improve test. - -* Mon Apr 17 2023 Nick Clifton - 12.04-1 - configure: More improvements. - annocheck: Fix seg-fault when checking for glibc components in string format notes. - -* Thu Apr 13 2023 Nick Clifton - 12.03-1 - configure: Simplify. -* Tue Apr 11 2023 Nick Clifton - 12.02-1 +* Wed Apr 12 2023 Yara Ahmad - 12.02-1 - gcc plugin: Add filenames to string notes. Allow use of ANNOBIN environment variable. - llvm plugin: Add workaround for building with LLVM-16. - clang plugin: Fix for building with Clang-16. -* Thu Mar 30 2023 Nick Clifton - 12.01-1 +* Thu Mar 30 2023 Yara Ahmad - 12.01-1 - gcc plugin: Keep ELF notes at protocol version 3. -* Tue Mar 28 2023 Nick Clifton - 12.00-1 +* Wed Mar 29 2023 Yara Ahmad - 12.00-1 - Protocol Version 4: String format notes. -* Mon Mar 13 2023 Nick Clifton - 11.14-1 +* Tue Mar 21 2023 Yara Ahmad - 11.14-1 - Annocheck: Update message for LTO tests. (#2177140) - -* Wed Mar 08 2023 Nick Clifton - 11.13-1 - Annocheck: Add even more code to handle another glibc function built without LTO. - -* Fri Mar 03 2023 Nick Clifton - 11.12-1 - Annocheck: Add code to handle another glibc function built without LTO. -* Tue Feb 28 2023 Nick Clifton - 11.11-1 +* Tue Feb 28 2023 Yara Ahmad - 11.11-1 - GCC Plugin: Do not run if other plugins are active. (#2162746) - -* Thu Feb 23 2023 Nick Clifton - 11.10-1 - Annocheck: Add code to handle glibc functions built without LTO. - -* Thu Feb 02 2023 Nick Clifton - 11.09-1 - Libannocheck: Fix thinko in debugging code. - Annocheck: Fix LTO test. - Notes: Display notes held in separate dbeuginfo files. - -* Tue Jan 31 2023 Nick Clifton - 11.08-1 - Annocheck: Fix atexit test. Fix recording of version numbers. (#2165528) - -* Wed Jan 25 2023 Nick Clifton - 11.07-2 - LLVM & Clang Plugins: Build with branch protection on AArch64. (#2164364) - Fix gating tests. - -* Fri Jan 20 2023 Nick Clifton - 11.07-1 - Libannocheck: Fix bug causing infinite looping when running tests. - -* Wed Jan 18 2023 Fedora Release Engineering - 11.06-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild -* Mon Jan 16 2023 Jakub Jelinek - 11.06-2 +* Wed Jan 18 2023 Yara Ahmad - 11.06-2 - Rebuilt against GCC 13. - -* Fri Jan 13 2023 Nick Clifton - 11.06-1 - Annocheck: Fix handling of file built by multiple versions of gcc. (#2160700) - -* Mon Jan 09 2023 Nick Clifton - 11.05-1 - Annocheck: Fix handling of empty files. (#2159292) - -* Fri Jan 06 2023 Nick Clifton - 11.04-1 - Annocheck: Add crti.o and crtn.o to the list of known glibc special files. (#2158740) - -* Fri Jan 06 2023 Nick Clifton - 11.03-1 - Annocheck: Fix memory leaks. -* Wed Jan 04 2023 Nick Clifton - 11.02-1 +* 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. (#2158182) - -* Wed Jan 04 2023 Nick Clifton - 11.01-1 - Annocheck: Add more special glibc filenames. (#2158100) * Wed Dec 21 2022 Nick Clifton - 10.99-1 - Annocheck: Improve handling of tool versions. - -* Tue Dec 20 2022 Nick Clifton - 10.98-3 - Spec File: Fix building with plugin_rebuild enabled. - -* Fri Dec 16 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. - -* Thu Dec 15 2022 Nick Clifton - 10.96-1 - Annocheck: Improve heuristic used to detect binaries without code. (#2144533) * Mon Dec 12 2022 Nick Clifton - 10.95-1 - Annocheck: Avoid using debug filename when parsing notes in a debuginfo file. (#2152280) -* Wed Nov 30 2022 Nick Clifton - 10.94-1 -- Annocheck: Better detection of binaries which do not contain code. (#2144533) - -* Wed Nov 23 2022 Nick Clifton - 10.93-1 +* Wed Nov 23 2022 Yara Ahmad - 10.93-1 - Annocheck: Provide more information when a test is skipped because the file being tested was not compiled. -* Mon Nov 07 2022 Nick Clifton - 10.92-1 +* Wed Nov 09 2022 Yara Ahmad - 10.92-1 - Annocheck: Try harder not to run mutually exclusive tests. -* Fri Oct 21 2022 Nick Clifton - 10.91-1 -- Tests: Fix future-test so that it properly handles the situation where the compiler does not support the new options. +* Fri Oct 21 2022 Yara Ahmad - 10.91-1 +- Rebase to annobin-10.91 + - 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) + - NVR Bump in order to trigger a rebuild for ELN. (#2124562) -* Wed Oct 19 2022 Nick Clifton - 10.90-1 -- Libannocheck: Actually set result fields after tests are run. - -* Tue Oct 11 2022 Nick Clifton - 10.89-1 -- Libannocheck: Replace libannocheck_version variable with LIBANNOCHECK_VERSION define. - -* Tue Oct 11 2022 Nick Clifton - 10.88-1 -- Libannocheck: Remove 'Requires binutils-devel' from libannocheck.pc. - -* Wed Oct 05 2022 Nick Clifton - 10.87-2 -- Libannocheck: Move into separate sub-package. - -* Fri Sep 30 2022 Nick Clifton - 10.87-1 -- Libannocheck: Add libannocheck.pc pkgconfig file. - -* Fri Sep 30 2022 Nick Clifton - 10.86-1 -- Libannocheck: Add libannocheck_reinit(). - -* Thu Sep 22 2022 Nick Clifton - 10.85-1 -- 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. - -* Tue Sep 20 2022 Serge Guelton - 10.84-1 -- Clang Plugin: Fix for building with Clang-15. (#2125875) - -* Fri Sep 09 2022 Nick Clifton - 10.83-1 -- Annocheck: Add a test for the inconsistent use of -Ofast. (#1248744) - -* Tue Sep 06 2022 Nick Clifton - 10.81-2 -- NVR Bump in order to trigger a rebuild for ELN. (#2124562) - -* Thu Aug 11 2022 Nick Clifton - 10.81-1 +* Thu Aug 11 2022 Yara Ahmad - 10.81-1 - Plugin: Fix top level configuration support for RiscV. - -* Tue Aug 09 2022 Nick Clifton - 10.80-1 - Annocheck: Improvements to the size tool. -* Mon Jul 25 2022 Nick Clifton - 10.79-1 +* Tue Jul 26 2022 Yara Ahmad - 10.79-1 - Annocheck: Fixes for libannocheck.h. - -* Wed Jul 20 2022 Fedora Release Engineering - 10.78-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild -* Tue Jul 05 2022 Nick Clifton - 10.78-1 +* Mon Jul 11 2022 Yara Ahmad - 10.78-1 - Annocheck: Add automatic profile selection. - -* Mon Jul 04 2022 Nick Clifton - 10.77-1 - Annocheck: Improve gap detection and reporting. - -* Wed Jun 29 2022 Nick Clifton - 10.76-3 - Spec File: Use the %%dir directive in the %%files section to ensure that - plugin directories are useable. (#2080454) - -* Fri Jun 24 2022 Nick Clifton - 10.76-2 - Spec File: Remove bogus Provides from annobin-docs subpackage. * Tue Jun 14 2022 Nick Clifton - 10.76-1 - Annocheck: Check build-id of separate debuginfo files. - Annocheck: Add GAPS test replacing --ignore-gaps. - -* Thu Jun 09 2022 Nick Clifton - 10.75-1 - Annocheck: Fix covscan detected race condition between stat() and open(). - -* Tue Jun 07 2022 Nick Clifton - 10.74-1 - Annocheck: Handle binaries created by Rust 1.18. (#2094420) - Annocheck: Add optional function name to --skip arguments. (PR 29229) -* Tue May 17 2022 Nick Clifton - 10.73-1 +* Thu May 19 2022 Nick Clifton - 10.73-1 - Annocheck: Fix handling of command line options that take arguments. (#2086850) -* Mon May 16 2022 Nick Clifton - 10.72-1 +* Tue May 17 2022 Yara Ahmad - 10.72-1 - Annocheck: Do not complain about unenabled -mbranch-protection option in AArch64 binaries. (#2078909) -* Wed May 11 2022 Nick Clifton - 10.71-1 +* Wed May 11 2022 Yara Ahmad - 10.71-1 - gcc-plugin: Fix typo in configure.ac. - -* Tue May 10 2022 Nianqing Yao - 10.70-2 -- Add support for RISC-V. +- gcc-plugin: Add support for RISC-V. * Mon May 09 2022 Nick Clifton - 10.70-1 - Annocheck: Add another special case for glibc rpms. (#2083070) +* Mon May 09 2022 Jakub Jelinek - 10.69-2 +- NVR bump to allow rebuild for new GCC. + * Fri May 06 2022 Nick Clifton - 10.69-1 - Annocheck: Do not complain about unenabled -mbranch-protection option in AArch64 binaries if compiled using LTO. (#2082146) @@ -1248,7 +784,7 @@ make check * Fri Dec 17 2021 Nick Clifton - 10.39-1 - Annocheck: Add /usr/lib/ld-linux-aarch64.so.1 to the list of known glibc binaries. (#2033255) - Doc: Note that ENDBR is only needed as the landing pad for indirect branches/calls. (#28705) -- Spec File: Store full gcc version release string in plugin info file. (#2030671) +- Spec File: Store full gcc version release string in plugin info file. (#2030671) * Tue Dec 14 2021 Nick Clifton - 10.38-1 - Annocheck: Add special case for x86_64 RHEL-7 gaps. (#2031133) diff --git a/plans/ci.fmf b/plans/ci.fmf index 6ae9ce7..3fd3ab7 100644 --- a/plans/ci.fmf +++ b/plans/ci.fmf @@ -1,6 +1,5 @@ summary: CI Gating Plan discover: how: fmf - url: https://src.fedoraproject.org/tests/annobin.git execute: how: tmt diff --git a/sources b/sources index ae2a779..4059ce0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (annobin-13.05.tar.xz) = 07bc023018e3f456fae470b271915bde2e1ff367ee8bb58adb74255023ae59e8c45ced8e4bd2130bf8a496966d986bca9866e054019f6ca4660d78c129b6532f +SHA512 (annobin-12.10.tar.xz) = 140c74f88ff309e24c003d533545bd7f7705d240faf3781569f7c91e0c41ef2640dfb2ebe2f0cb1fbafddcf3588d9df9b75424764b79091e64a4091b7be3c0f0 diff --git a/tests/README b/tests/README new file mode 100644 index 0000000..9ad59d4 --- /dev/null +++ b/tests/README @@ -0,0 +1,2 @@ +The test's Makefiles are not used in Fedora CI infrastructure. But are kept here +for backward compatibility with traditional beakerlib test harness in RHEL. diff --git a/tests/Regression/annobin-fails-to-skip-endbr64-entry-point-check/main.fmf b/tests/Regression/annobin-fails-to-skip-endbr64-entry-point-check/main.fmf new file mode 100644 index 0000000..e0cbc5d --- /dev/null +++ b/tests/Regression/annobin-fails-to-skip-endbr64-entry-point-check/main.fmf @@ -0,0 +1,18 @@ +summary: Test for BZ#1958954 (annobin fails to skip endbr64 entry point check) +description: | + Bug summary: annobin fails to skip endbr64 entry point check for shared objects + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1958954 +contact: +- Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +require: +- annobin-annocheck +- annobin-plugin-gcc +- gcc +- redhat-rpm-config +duration: 48h +extra-summary: /tools/annobin/Regression/annobin-fails-to-skip-endbr64-entry-point-check +extra-task: /tools/annobin/Regression/annobin-fails-to-skip-endbr64-entry-point-check diff --git a/tests/Regression/annobin-fails-to-skip-endbr64-entry-point-check/runtest.sh b/tests/Regression/annobin-fails-to-skip-endbr64-entry-point-check/runtest.sh new file mode 100755 index 0000000..91fa544 --- /dev/null +++ b/tests/Regression/annobin-fails-to-skip-endbr64-entry-point-check/runtest.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Regression/annobin-fails-to-skip-endbr64-entry-point-check +# Description: Test for BZ#1958954 (annobin fails to skip endbr64 entry point check) +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "echo 'void f1(void) {}' > f1.c" + rlRun "echo 'void f2(void) {}' > f2.c" + rlRun "gcc `rpm --eval %build_cflags` -fpic -c f1.c" + rlRun "gcc `rpm --eval %build_cflags` -fpic -c f2.c" + rlRun "gcc `rpm --eval %build_ldflags` -shared f1.o f2.o" + rlRun "annocheck -v --skip-lto a.out" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/identify/main.fmf b/tests/Regression/identify/main.fmf new file mode 100644 index 0000000..674544e --- /dev/null +++ b/tests/Regression/identify/main.fmf @@ -0,0 +1,14 @@ +summary: identify +description: '' +contact: +- Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +recommend: +- annobin-plugin-gcc +- annobin-annocheck +duration: 48h +extra-summary: /tools/annobin/Regression/identify +extra-task: /tools/annobin/Regression/identify diff --git a/tests/Regression/identify/runtest.sh b/tests/Regression/identify/runtest.sh new file mode 100755 index 0000000..7907036 --- /dev/null +++ b/tests/Regression/identify/runtest.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Regression/identify +# Description: identify +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2019 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="annobin" + +rlJournalStart + rlPhaseStartTest + rlRun "rpm -qa | fgrep -e redhat-rpm-config -e gcc -e annobin -e binutils | sort" + rlRun "tool_v=$(annocheck --version | awk '/^annocheck: Version/ {print $3}')" + rlRun "__RPM=$(rpm --queryformat='%{name}\n' -qf $(man -w annobin))" + rlRun "rpm_v=$(rpm -q --queryformat='%{version}\n' $__RPM)" + # Following fails for annobin-8.89-2.el8 + rlRun "[[ "x${tool_v}" == "x${rpm_v}." ]]" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/lto-preprocessor-options/main.fmf b/tests/Regression/lto-preprocessor-options/main.fmf new file mode 100644 index 0000000..2a3e56a --- /dev/null +++ b/tests/Regression/lto-preprocessor-options/main.fmf @@ -0,0 +1,17 @@ +summary: lto-preprocessor-options +description: '' +contact: +- Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +require: +- annobin-plugin-gcc +- annobin-annocheck +- redhat-rpm-config +- gcc +- redhat-rpm-config +duration: 48h +extra-summary: /tools/annobin/Regression/lto-preprocessor-options +extra-task: /tools/annobin/Regression/lto-preprocessor-options diff --git a/tests/Regression/lto-preprocessor-options/runtest.sh b/tests/Regression/lto-preprocessor-options/runtest.sh new file mode 100755 index 0000000..430d830 --- /dev/null +++ b/tests/Regression/lto-preprocessor-options/runtest.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Regression/lto-preprocessor-options +# Description: lto-preprocessor-options +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2020 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="annobin" + +rlJournalStart + rlPhaseStartTest + b=`mktemp` + rlRun "rpm -qa | fgrep -e redhat-rpm-config -e gcc -e annobin -e binutils | sort" + rlRun "cflags=\"$(rpm --eval '%build_cflags')\"" + rlRun "ldflags=\"$(rpm --eval '%build_ldflags')\"" + rlRun "echo 'int main (void) { return 0; }' | gcc -xc -o $b $cflags $ldflags -flto - " + rlRun "annocheck -v $b" + rm $b + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/missing-check-for-x86-property-note-content/main b/tests/Regression/missing-check-for-x86-property-note-content/main new file mode 100644 index 0000000..b7f4983 Binary files /dev/null and b/tests/Regression/missing-check-for-x86-property-note-content/main differ diff --git a/tests/Regression/missing-check-for-x86-property-note-content/main.fmf b/tests/Regression/missing-check-for-x86-property-note-content/main.fmf new file mode 100644 index 0000000..b4ab7fd --- /dev/null +++ b/tests/Regression/missing-check-for-x86-property-note-content/main.fmf @@ -0,0 +1,16 @@ +summary: missing-check-for-x86-property-note-content +description: | + Bug summary: annobin: Missing check for contents of x86 property note + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1991931 +contact: Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +require: +- annobin-annocheck +duration: 48h +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1991931 +extra-summary: /tools/annobin/Regression/missing-check-for-x86-property-note-content +extra-task: /tools/annobin/Regression/missing-check-for-x86-property-note-content diff --git a/tests/Regression/missing-check-for-x86-property-note-content/runtest.sh b/tests/Regression/missing-check-for-x86-property-note-content/runtest.sh new file mode 100755 index 0000000..14392c0 --- /dev/null +++ b/tests/Regression/missing-check-for-x86-property-note-content/runtest.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Regression/missing-check-for-x86-property-note-content +# Description: missing-check-for-x86-property-note-content +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="annobin" + +rlJournalStart + rlPhaseStartTest + rlRun "annocheck main" 1 + rlRun "annocheck --fixed-format-messages main | \ + grep '^Hardened: FAIL: test: cf-protection file: main.$'" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/processing-params-in-reverse-order/main.fmf b/tests/Regression/processing-params-in-reverse-order/main.fmf new file mode 100644 index 0000000..99adc08 --- /dev/null +++ b/tests/Regression/processing-params-in-reverse-order/main.fmf @@ -0,0 +1,16 @@ +summary: processing-params-in-reverse-order +description: | + Bug summary: annocheck processes (reports) parameters in reverse order + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1988714 +contact: Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +require: +- annobin-annocheck +duration: 48h +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1988714 +extra-summary: /tools/annobin/Regression/processing-params-in-reverse-order +extra-task: /tools/annobin/Regression/processing-params-in-reverse-order diff --git a/tests/Regression/processing-params-in-reverse-order/runtest.sh b/tests/Regression/processing-params-in-reverse-order/runtest.sh new file mode 100755 index 0000000..75b357e --- /dev/null +++ b/tests/Regression/processing-params-in-reverse-order/runtest.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Regression/processing-params-in-reverse-order +# Description: processing-params-in-reverse-order +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="annobin" + +rlJournalStart + rlPhaseStartTest + rlRun "TMP=$(mktemp)" + rlRun "annocheck --verbose --skip-all --test-stack-prot /bin/bash /bin/cat |& tee $TMP" + rlRun "fgrep -i /bin/ $TMP | head -1 | fgrep /bash" + rlRun "fgrep -i /bin/ $TMP | tail -1 | fgrep /cat" + rlRun "rm -f $TMP" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/segv-when-processing-multiple-params-incl-symlink/main.fmf b/tests/Regression/segv-when-processing-multiple-params-incl-symlink/main.fmf new file mode 100644 index 0000000..07395fa --- /dev/null +++ b/tests/Regression/segv-when-processing-multiple-params-incl-symlink/main.fmf @@ -0,0 +1,18 @@ +summary: segv-when-processing-multiple-params-incl-symlink +description: | + Bug summary: annocheck segfaults sometimes when processing multiple parameters and symlink is involved + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1988715 +contact: Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +require: +- annobin-plugin-gcc +- annobin-annocheck +- libstdc++ +duration: 48h +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1988715 +extra-summary: /tools/annobin/Regression/segv-when-processing-multiple-params-incl-symlink +extra-task: /tools/annobin/Regression/segv-when-processing-multiple-params-incl-symlink diff --git a/tests/Regression/segv-when-processing-multiple-params-incl-symlink/runtest.sh b/tests/Regression/segv-when-processing-multiple-params-incl-symlink/runtest.sh new file mode 100755 index 0000000..6603c3c --- /dev/null +++ b/tests/Regression/segv-when-processing-multiple-params-incl-symlink/runtest.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Regression/segv-when-processing-multiple-params-incl-symlink +# Description: segv-when-processing-multiple-params-incl-symlink +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="annobin" + +rlJournalStart + rlPhaseStartTest + # This tries to test https://bugzilla.redhat.com/show_bug.cgi?id=1988715#c0 + # keeping in mind that annocheck will evolve in the future, along its + # rules / policies, and the surrounding OS will evolve too. This test + # shouldn't report false positives though. + rlRun "rpm -qf /usr/lib64/libstdc++.so*" + rlRun "annocheck --follow-links --skip-all /usr/lib64/libstdc++.so*" + rlRun "annocheck --ignore-links --skip-all /usr/lib64/libstdc++.so*" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/testsuite/main.fmf b/tests/Regression/testsuite/main.fmf new file mode 100644 index 0000000..f117f62 --- /dev/null +++ b/tests/Regression/testsuite/main.fmf @@ -0,0 +1,24 @@ +summary: testsuite +description: '' +contact: +- Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +require: +- annobin-plugin-gcc +- annobin-annocheck +- binutils-devel +- bzip2-devel +- dnf +- elfutils +- elfutils-devel +- gcc-c++ +- gcc-plugin-devel +- make +- rpm-build +- rpm-devel +duration: 48h +extra-summary: /tools/annobin/Regression/testsuite +extra-task: /tools/annobin/Regression/testsuite diff --git a/tests/Regression/testsuite/runtest.sh b/tests/Regression/testsuite/runtest.sh new file mode 100755 index 0000000..1507c45 --- /dev/null +++ b/tests/Regression/testsuite/runtest.sh @@ -0,0 +1,85 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Regression/testsuite +# Description: testsuite +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2018 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="${PACKAGE:-$(rpm -qf --queryformat=%{name} $(man -w annobin))}" +export PACKAGE + +GCC="${GCC:-$(which gcc)}" + + +rlJournalStart + rlPhaseStartSetup + rlLogInfo "PACKAGES=$PACKAGES" + rlLogInfo "REQUIRES=$REQUIRES" + rlLogInfo "COLLECTIONS=$COLLECTIONS" + rlLogInfo "X_SCLS=$X_SCLS" + rlLogInfo "GCC=$GCC" + + rlRun "rpm -qa | fgrep -e redhat-rpm-config -e gcc -e annobin -e binutils | sort" + + # In case more than one devtoolset- or gcc-toolset -build package is + # installed (they can co-exist from the packaging persp, but their + # coexistence causes unexpected results with rpm macros), then we have + # a mess of defined rpm macros coming e.g. from + # /etc/rpm/macros.gcc-toolset-10-config + # /etc/rpm/macros.gcc-toolset-9-config etc. To have just the needed + # macros (respective to given SCL under test) defined without + # uninstalling unneeded RPMs, we'll need an override mechanism. The + # following assumes just one SCL *enabled* (more than one installed), + # and doesn't care of a (useless) revert: + echo ${X_SCLS} | fgrep toolset && \ + rlRun "cat /etc/rpm/*${X_SCLS%\ }* > ~/.rpmmacros" + + rlAssertRpm $PACKAGE + rlRun "TMP=\$(mktemp -d)" + rlRun "pushd $TMP" + + rlFetchSrcForInstalled $PACKAGE + rlRun "dnf builddep -y *src.rpm" + rlRun "rpm --define='_topdir $TMP' -Uvh *src.rpm" + rlRun "rpmbuild --define='_topdir $TMP' -bc SPECS/annobin.spec" + rlPhaseEnd + + rlPhaseStartTest + rlRun "pushd BUILD/annobin-*" + set -o pipefail + rlRun "make check |& tee $TMP/check.log" + rlRun -l "grep '^PASS:' $TMP/check.log" 0 + rlRun -l "grep '^FAIL:' $TMP/check.log" 1 + PASSCOUNT=$(grep '^PASS:' $TMP/check.log | wc -l) + rlRun "[[ $PASSCOUNT -ge 7 ]]" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TMP" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/annocheck-silently-ignores-any-file-parameter/main.fmf b/tests/Sanity/annocheck-silently-ignores-any-file-parameter/main.fmf new file mode 100644 index 0000000..9ece622 --- /dev/null +++ b/tests/Sanity/annocheck-silently-ignores-any-file-parameter/main.fmf @@ -0,0 +1,17 @@ +summary: Test for BZ#1973981 (annocheck silently ignores any file parameter) +description: | + Bug summary: annocheck silently ignores any file parameter beyond 256 + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1973981 +contact: Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +require: +- annobin-plugin-gcc +- annobin-annocheck +duration: 48h +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1973981 +extra-summary: /tools/annobin/Sanity/annocheck-silently-ignores-any-file-parameter +extra-task: /tools/annobin/Sanity/annocheck-silently-ignores-any-file-parameter diff --git a/tests/Sanity/annocheck-silently-ignores-any-file-parameter/runtest.sh b/tests/Sanity/annocheck-silently-ignores-any-file-parameter/runtest.sh new file mode 100755 index 0000000..bb1a436 --- /dev/null +++ b/tests/Sanity/annocheck-silently-ignores-any-file-parameter/runtest.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Sanity/annocheck-silently-ignores-any-file-parameter +# Description: Test for BZ#1973981 (annocheck silently ignores any file parameter) +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2021 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartSetup + rlRun "TMP=$(mktemp -d)" + rlRun "pushd $TMP" + rlPhaseEnd + + rlPhaseStartTest + for i in `seq 0 299`; do touch ${i}.sample; done + samplecnt=$(ls *.sample | wc -l) + testcnt=$(ls *.sample | \ + xargs annocheck |& \ + grep -F \ + -e '.sample: unable to read magic number' \ + -e '.sample: is not an ELF format file' \ + | wc -l) + rlRun "test $samplecnt -eq 300" + rlRun "test $testcnt -eq 300" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TMP" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/gcc-fedora-flags/hello.c b/tests/Sanity/gcc-fedora-flags/hello.c new file mode 100644 index 0000000..51b259b --- /dev/null +++ b/tests/Sanity/gcc-fedora-flags/hello.c @@ -0,0 +1,5 @@ +#include + +void hello() { + printf("Hello World\n"); +} diff --git a/tests/Sanity/gcc-fedora-flags/hello.cpp b/tests/Sanity/gcc-fedora-flags/hello.cpp new file mode 100644 index 0000000..400612b --- /dev/null +++ b/tests/Sanity/gcc-fedora-flags/hello.cpp @@ -0,0 +1,5 @@ +#include + +void hello() { + std::cout << "Hello World\n"; +} diff --git a/tests/Sanity/gcc-fedora-flags/main.c b/tests/Sanity/gcc-fedora-flags/main.c new file mode 100644 index 0000000..1a3455d --- /dev/null +++ b/tests/Sanity/gcc-fedora-flags/main.c @@ -0,0 +1,6 @@ +void hello(); + +int main(int argc, char **argv) { + hello(); + return 0; +} diff --git a/tests/Sanity/gcc-fedora-flags/main.cpp b/tests/Sanity/gcc-fedora-flags/main.cpp new file mode 100644 index 0000000..1a3455d --- /dev/null +++ b/tests/Sanity/gcc-fedora-flags/main.cpp @@ -0,0 +1,6 @@ +void hello(); + +int main(int argc, char **argv) { + hello(); + return 0; +} diff --git a/tests/Sanity/gcc-fedora-flags/main.fmf b/tests/Sanity/gcc-fedora-flags/main.fmf new file mode 100644 index 0000000..f053025 --- /dev/null +++ b/tests/Sanity/gcc-fedora-flags/main.fmf @@ -0,0 +1,17 @@ +summary: gcc-fedora-flags +description: '' +contact: +- Tom Stellard +component: +- annobin +test: ./runtest.sh +framework: beakerlib +recommend: +- gcc +- gcc-c++ +- annobin +- annobin-annocheck +- redhat-rpm-config +duration: 1h +extra-summary: /tools/annobin/Sanity/gcc-fedora-flags +extra-task: /tools/annobin/Sanity/gcc-fedora-flags diff --git a/tests/Sanity/gcc-fedora-flags/runtest.sh b/tests/Sanity/gcc-fedora-flags/runtest.sh new file mode 100755 index 0000000..8ef829f --- /dev/null +++ b/tests/Sanity/gcc-fedora-flags/runtest.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +set -x + +default_cflags=`rpm -E %{build_cflags}` +default_cxxflags=`rpm -E %{build_cxxflags}` +default_ldflags=`rpm -E %{build_ldflags}` + +cflags=`rpm -D '%toolchain gcc' -E %{build_cflags}` +cxxflags=`rpm -D '%toolchain gcc' -E %{build_cxxflags}` +ldflags=`rpm -D '%toolchain gcc' -E %{build_ldflags}` + +set +x + +rlJournalStart +rlPhaseStartTest + rlRun "rpm -qa | fgrep -e redhat-rpm-config -e gcc -e annobin -e binutils | sort" + + rlRun "test \"$default_cflags\" = \"$cflags\"" + rlRun "test \"$default_cxxflags\" = \"$cxxflags\"" + rlRun "test \"$default_ldflags\" = \"$ldflags\"" + + rlRun "gcc $cflags -o hello.o -c hello.c" + rlRun "annocheck hello.o" + rlRun "gcc $cflags -o main.o -c main.c" + rlRun "gcc $ldflags -o hello main.o hello.o" + rlRun "annocheck hello" + rlRun "./hello | grep \"Hello World\"" + + rlRun "g++ $cxxflags -o hello-cpp.o -c hello.cpp" + rlRun "annocheck hello-cpp.o" + rlRun "g++ $cxxflags -o main-cpp.o -c main.cpp" + rlRun "g++ $ldflags -o hello-cpp main-cpp.o hello-cpp.o" + rlRun "annocheck hello-cpp" + rlRun "./hello-cpp | grep \"Hello World\"" +rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/smoke/main.fmf b/tests/Sanity/smoke/main.fmf new file mode 100644 index 0000000..fca8ae4 --- /dev/null +++ b/tests/Sanity/smoke/main.fmf @@ -0,0 +1,16 @@ +summary: smoke test for annobin plugin +description: '' +contact: +- Martin Cermak +component: +- annobin +test: ./runtest.sh +framework: beakerlib +require: +- annobin-plugin-gcc +- annobin-annocheck +- man-db +- gcc +duration: 48h +extra-summary: /tools/annobin/Sanity/smoke +extra-task: /tools/annobin/Sanity/smoke diff --git a/tests/Sanity/smoke/runtest.sh b/tests/Sanity/smoke/runtest.sh new file mode 100755 index 0000000..566e571 --- /dev/null +++ b/tests/Sanity/smoke/runtest.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/annobin/Sanity/smoke +# Description: smoke test for annobin plugin +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2019 Red Hat, Inc. +# +# 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 2 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="annobin" + +rlJournalStart + rlPhaseStartSetup + rlRun "which gcc" + rlRun "man -w annobin" + rlRun "echo $X_SCLS" + rlPhaseEnd + + rlPhaseStartTest + rlRun "rpm -qa | fgrep -e redhat-rpm-config -e gcc -e annobin -e binutils | sort" + rlRun "echo 'int main() {return 0;}' | gcc -xc -fplugin=annobin -o /dev/null -" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd