diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c new file mode 100644 index 0000000..801bda0 --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/abs.c @@ -0,0 +1,12 @@ +#include +#include + +int +main () +{ + int i = 2; + if (-10 * abs (i - 1) == 10 * abs (i - 1)) + return 1; + + return 0; +} diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf new file mode 100644 index 0000000..f31d44e --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/main.fmf @@ -0,0 +1,26 @@ +summary: gcc optimization error for neg number * abs() [extract_muldiv] +description: | + abs() from gcc was broken so it gave wrong results. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/394271-gcc-optimization-error-for-neg-number-abs +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=394271 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0062143 +extra-summary: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs +extra-task: /tools/gcc/Regression/gcc/394271-gcc-optimization-error-for-neg-number-abs diff --git a/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh new file mode 100755 index 0000000..695c9fc --- /dev/null +++ b/tests/Regression/394271-gcc-optimization-error-for-neg-number-abs/runtest.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# 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 . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC="${GCC:-$(type -P gcc)}" +PACKAGE=$(rpm --qf '%{name}' -qf $GCC) + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v abs.c $TmpDir" + rlRun "pushd $TmpDir" + gcc -dumpversion | grep -q '^4\.4' && export OLDGCC="true" + rlPhaseEnd + + rlPhaseStartTest "Testing the executable" + OPTS="-O0 -O1 -O2 -O3 -Os -Ofast -Og" + if [ "$OLDGCC" = "true" ]; then + OPTS=${OPTS/ -Ofast -Og/} + fi + for opt in "" $OPTS; do + rlRun "$GCC -g $opt -o abs$opt abs.c" 0 "Compiling the test case [ $opt ]" + rlRun "./abs$opt" 0 "Checking whether we have an working executable [ $opt ]" + done + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf new file mode 100644 index 0000000..35ff67d --- /dev/null +++ b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/main.fmf @@ -0,0 +1,29 @@ +summary: unzip problem with CRC error for src-4.1.0.zip file on s390x +description: | + A customer has been trying to unzip the file src-4.1.0.zip + which is contained libgcj4-src-4.1.0-18.EL4.s390x.rpm. However, + unzip command can't run correctly with the CRC errors + It seems that the src-4.1.0.zip is broken. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - libgcj-src +duration: 5m +enabled: true +tag: + - CI-Tier-1 + - Tier1 +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=462397 +adjust: + - enabled: false + when: distro != rhel-5 and distro != rhel-6 + continue: false +extra-nitrate: TC#0147365 +extra-summary: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file +extra-task: /tools/gcc/Sanity/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file diff --git a/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh new file mode 100755 index 0000000..62d03df --- /dev/null +++ b/tests/Regression/462397-unzip-problem-with-CRC-error-for-src-4.1.0.zip-file/runtest.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# 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 . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc libgcj-src) + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "pushd $TmpDir" + rlPhaseEnd + +srclist="/usr/share/java/src-*" +for src in ${srclist}; do + + rlPhaseStartTest "Try to unzip src file" + rm -rf tmp/; mkdir tmp/ + rlRun "cp -fv ${src} tmp/" 0 "[${src}]: Copy the zip file to tmp/" + cd tmp/ + rlRun "unzip ${src}" 0 "[${src}] Verify that is possible to unzip ${src}" + cd .. + rlPhaseEnd + +done + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 new file mode 100644 index 0000000..c9af75f --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/abc.f90 @@ -0,0 +1,22 @@ + subroutine a + INTEGER*4 a_i + common /block/a_i + a_i = 1 + end subroutine a + subroutine b + INTEGER*4 b_i + common /block/b_i + a_i = 3 + b_i = 2 + end subroutine b + subroutine c + INTEGER*4 a_i + common /block/a_i + if (a_i .ne. 2) call abort + end subroutine c + program abc + call a + call b + call c + end program abc + diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf new file mode 100644 index 0000000..752caf6 --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/main.fmf @@ -0,0 +1,38 @@ +summary: Fortran DW_TAG_common_block has incorrect placement/scope +description: |+ + Problem: gcc-4.3.2 / gfortran-4.3.2 (in the forthcoming tech-preview for + RHEL5.3) appears to also have the "DW_TAG_common_block has incorrect + placement/scope" issues listed in the following gcc upstream bug: + + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37738 + + What gfortran is doing currently is: + + (1) Merges all common blocks into a single one. + (2) Places this single common block into the first subroutine where it was + used. + +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope +framework: beakerlib +require: + - gcc + - gcc-gfortran +duration: 5m +tier: '1' +enabled: true +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=465974 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0062268 +extra-summary: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope +extra-task: /tools/gcc/g77/465974-DW_TAG_common_block-has-incorrect-placement-scope diff --git a/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh new file mode 100755 index 0000000..741279d --- /dev/null +++ b/tests/Regression/465974-DW_TAG_common_block-has-incorrect-placement-scope/runtest.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# 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 . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-gfortran) + +GFORTRAN=${GFORTRAN:-gfortran} + +rlJournalStart + rlPhaseStartSetup + if type gcc | grep -q -v toolset; then + # assert only of not devtoolset/gcc-toolset + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + fi + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v abc.f90 $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest "Testing the executable via readelf -w" + # Compile + rlRun "$GFORTRAN -g -o abc abc.f90" 0 "Compiling the test case: abc.f90" + rlRun "./abc" 0 "Checking whether we have an working executable" + rlWatchdog "readelf -w abc 2>&1 | tee gcc-readelf.log" 10 + rlAssert0 "Checking if 'readelf' ends itself" $? + # Test + cb=$(grep Abbrev gcc-readelf.log | grep DW_TAG_common_block -c) + rlRun "if [ ${cb} -eq 3 ]; then true; else false; fi" 0 "Expected amount of common blocks is 3; got ${cb}" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c new file mode 100644 index 0000000..64449ae --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/builtin.c @@ -0,0 +1,29 @@ +#include + +/* Compile flags: + * gcc -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c + * + * Expected output: + * Using custom isascii() function + * ret = 0 + * + * Expected return value: + * 0 + */ + +int isascii(int c) +{ + printf("Using custom isascii() function\n"); + return 0; +} + +main() +{ + int c = 65; + int ret; + + ret = isascii(c); + printf("ret = %d\n", ret); + + return ret; +} diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf new file mode 100644 index 0000000..080f24f --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/main.fmf @@ -0,0 +1,33 @@ +summary: 'Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*)' +description: | + Bug summary: [RHEL5] gcc: if more than one -fno-builtin-* options are specified, only the last one is effective + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=515799 + + This test compiles builtin.c with the flags '-fno-builtin-isascii + -fno-builtin-isalnum'. This program contains a custom isascii() function + that always returns 0. If gcc honors the -fno-builtin-isascii flag, it + will return 0. If not, it will use the built-in isascii() function which + will return 1. +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=515799 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0063259 +extra-summary: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin +extra-task: /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin diff --git a/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh new file mode 100755 index 0000000..8b38afd --- /dev/null +++ b/tests/Regression/515799-RHEL5-gcc-if-more-than-one-fno-builtin/runtest.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/gcc/515799-RHEL5-gcc-if-more-than-one-fno-builtin +# Description: Test for bz515799 ([RHEL5] gcc: if more than one -fno-builtin-*) +# Author: Jeffrey Bastian +# Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# 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, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc) + +GCC=${GCC:-gcc} + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v builtin.c $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GCC -fno-builtin-isascii -fno-builtin-isalnum -o builtin builtin.c" + rlAssertExists "builtin" + rlRun "./builtin" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java new file mode 100644 index 0000000..bc72835 --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/foo.java @@ -0,0 +1,5 @@ +public class foo { + public static void main(String[] args) { + System.loadLibrary("foolib"); + } +} diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf new file mode 100644 index 0000000..b121552 --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/main.fmf @@ -0,0 +1,39 @@ +summary: 'CVE-2009-3736 libtool: libltdl may load and execute code from a library + in the current directory' +description: | + cat > ~/foo.java <\EOF public class foo { public static void main(String[] args) { System.loadLibrary("foolib"); } } EOF + cd + gcj -C foo.java + cd /tmp + strace -f -v -s1024 gij -cp ~/ foo 2>&1 | grep foolib + + (resp. s/gcj/gcj4/g;s/gij/gij4/ for gcc4 testing). + + If any relative path is seen, it is wrong. Bad examples are + + {lib,}foolib.la + {hwcap,0,nosegneg}/{lib,}foolib.{so,la} +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - gcc-java + - libgcj + - strace +duration: 5m +enabled: false +tag: + - CI-Tier-1 + - Tier1 +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=537941 +adjust: + - enabled: true + when: distro == rhel-6 or distro == rhel-5 +extra-nitrate: TC#0062145 +extra-summary: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory +extra-task: /tools/gcc/Regression/gcj/537941-libltdl-may-load-library-in-current-directory diff --git a/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh new file mode 100755 index 0000000..73e914d --- /dev/null +++ b/tests/Regression/537941-libltdl-may-load-library-in-current-directory/runtest.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +# Copyright (c) 2008, 2012 Red Hat, Inc. All rights reserved. +# +# 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 . +# +# Author: Michal Nowak +# Marek Polacek + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc libgcj strace gcc-java) + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v foo.java $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + +# I weeded out the if (isRHEL 3) support. +for gj in "" "4"; do + gcj_name="/usr/bin/gcj${gj}" + gij_name="/usr/bin/gij${gj}" + if [ -x ${gcj_name} ] && [ -x ${gij_name} ]; then + gcj_basename=$(basename ${gcj_name}) + gij_basename=$(basename ${gij_name}) + + rlPhaseStartTest "[${gij_basename}] Interpreting and compiling via java" + rlRun "${gcj_name} -C foo.java" 0 "[${gcj_basename}] Creating bytecode" + mv foo.class ~ + pushd /tmp + + echo "Dry run w/o strace" + ${gij_basename} -cp ~/ foo + + echo "=== Dry run end ===" + strace -f -v -s1024 ${gij_basename} -cp ~/ foo 2>&1 | tee out.${gij_basename} + echo + grep foolib out.${gij_basename} + foolib_cnt="$(grep foolib out.${gij_basename} -c)" + echo + rlRun "if [ ${foolib_cnt} -ne 0 ]; then egrep '\"libfoolib.la|\"foolib.la' out.${gij_basename}; else echo \"Zero lines w/ foolib\"; true; fi" 1 "[${gij_basename}] Interpreting test case" # use 'true' (sic!) + popd + rm -f ~/foo.class + rlPhaseEnd + + fi +done + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf new file mode 100644 index 0000000..6a60b30 --- /dev/null +++ b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/main.fmf @@ -0,0 +1,32 @@ +summary: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but) +description: | + Bug summary: devtoolset-8-gcc includes avx512vbmi2intrin.h but does not contain it + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1611637 + + The list of intrinsic headers keeps changing every release, sometimes + even on the release branch, and %files needs to be in sync with what has + been changed in gcc/config.gcc. immintrin.h is one of those headers and + this test makes sure that we can #include it. +contact: Vaclav Kadlcik +component: + - gcc +test: ./runtest.sh +framework: beakerlib +require: + - gcc +duration: 5m +enabled: true +tag: + - CI-Tier-1 +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1611637 +adjust: + - enabled: false + when: arch != x86_64 + continue: false + - enabled: false + when: distro == rhel-5 + continue: false +extra-nitrate: TC#0575308 +extra-summary: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release +extra-task: /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release diff --git a/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh new file mode 100755 index 0000000..8ff645e --- /dev/null +++ b/tests/Regression/bz1611637-immintrin_h_include_list_does_not_match_release/runtest.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz1611637-immintrin_h_include_list_does_not_match_release +# Description: Test for BZ#1611637 (devtoolset-8-gcc includes avx512vbmi2intrin.h but) +# Author: Michael Petlan +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# 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 + +GCC=${GCC:-gcc} + +rlJournalStart + rlPhaseStartSetup + cat > a.c < +int main(void) +{ + return 0; +} +EOF + rlAssertExists "a.c" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GCC -o a a.c" + rlAssertExists "a" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "rm -f a a.c" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf index ae2fc2b..fc2414e 100644 --- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/main.fmf @@ -7,10 +7,21 @@ component: - gcc test: ./runtest.sh framework: beakerlib -recommend: +require: - gcc-c++ duration: 15m +enabled: true +tag: + - CI-Tier-1 link: - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1960701 +adjust: + - enabled: false + when: distro < rhel-8 and collection is not defined + continue: false + - enabled: false + when: distro ~< rhel-8.5 and collection is not defined + continue: false +extra-nitrate: TC#0610780 extra-summary: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 extra-task: /tools/gcc/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2 diff --git a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh index 196486b..9dd4ea3 100755 --- a/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh +++ b/tests/Regression/bz1960701-Wrong-code-regression-starting-with-gcc-8-2/runtest.sh @@ -28,6 +28,17 @@ # Include Beaker environment . /usr/share/beakerlib/beakerlib.sh || exit 1 +# Notes on relevancy +# +# The test is applicable to GCCs supporting -std=c++17. In practice, +# * any supported toolset GCC +# * system GCC of RHEL 8+; however the respective fix landed in 8.5 +# and isn't planned for backporting. +# +# Suggested TCMS relevancy: +# distro < rhel-8 && collection !defined: False +# distro < rhel-8.5 && collection !defined: False + GCC="${GCC:-$(type -P gcc)}" PACKAGE=$(rpm --qf '%{name}\n' -qf $GCC | head -1) PACKAGES="${PACKAGE} ${PACKAGE}-c++" @@ -35,7 +46,7 @@ PACKAGES="${PACKAGE} ${PACKAGE}-c++" rlJournalStart rlPhaseStartSetup rlLogInfo "PACKAGES=$PACKAGES" - rlRun "dnf -y install $PACKAGES" 0-255 + rlLogInfo "COLLECTIONS=$COLLECTIONS" rlAssertRpm --all rlRun "TmpDir=\$(mktemp -d)" rlRun "cp reproducer.cc $TmpDir" diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf new file mode 100644 index 0000000..5ce67d3 --- /dev/null +++ b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/main.fmf @@ -0,0 +1,26 @@ +summary: SystemTap fails to retrieve location attribute for local variable +description: '' +contact: mcermak@redhat.com +component: + - gcc + - systemtap +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - systemtap + - kernel-devel + - kernel-headers +duration: 50m +enabled: true +tag: + - CI-Tier-1 + - STAP-EWA + - mcu_stap + - mcu_stap_6g + - mcu_stap_7g +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=576287 +extra-nitrate: TC#0062256 +extra-summary: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable +extra-task: /tools/gcc/Regression/gcc/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable diff --git a/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh new file mode 100755 index 0000000..0003300 --- /dev/null +++ b/tests/Regression/bz576287-SystemTap-fails-to-retrieve-location-attribute-for-local-variable/runtest.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Copyright (c) 2010 Red Hat, Inc. All rights reserved. +# +# 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/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="gcc" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + kernel_uname="$(uname -a | awk '{ print $3 }')" + kernel_arch="$(uname -a | awk '{ print $12 }')" + echo kernel_arch: $kernel_arch + kernel_version="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $1 }')" + echo kernel_version: $kernel_version + kernel_release="$(echo ${kernel_uname} | sed 's/-/ /' | awk '{ print $2 }' | sed 's/\./ /g' | awk '{ print $1,".",$2 }' | sed 's/ //g')" + echo kernel_release_1: $kernel_release + if $(echo ${kernel_release} | grep -iq PAE); then + kernel_release="$(echo ${kernel_release} | sed 's/PAE//g' | sed 's/pae//g')" + PAE="PAE-" + fi + echo kernel_release_2: $kernel_release + if rlIsRHEL 6; then + arch="${kernel_arch}-" + fi + kernel_debug="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-${PAE}debuginfo-${kernel_version}-${kernel_release}.${kernel_arch}.rpm" + kernel_debug_common="http://download.devel.redhat.com/brewroot/packages/kernel/${kernel_version}/${kernel_release}/${kernel_arch}/kernel-debuginfo-common-${arch}${kernel_version}-${kernel_release}.${kernel_arch}.rpm" + echo ">>> $kernel_debug $kernel_debug_common" + debuginfo-install -y kernel + rpmquery kernel-debuginfo || rpm -ivh ${kernel_debug} ${kernel_debug_common} + rlPhaseEnd + + rlPhaseStartTest opt-O$opt + rlRun "stap -vvvv -p2 -e 'probe kernel.function(\"sig_ignored\") {println($$parms)}' 2>&1 | grep 'variable location problem'" 1 "gcc produced good enough debuginfo w/o 'variable location problem'" + rlPhaseEnd + + rlPhaseStartCleanup + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc new file mode 100644 index 0000000..7b815cd --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/f.cc @@ -0,0 +1,15 @@ +template int func (void); + +template struct Foo +{ + static const unsigned int a = sizeof (T); + + //enum { b = a }; + + enum + { + c = sizeof (func < (a == 0) > ()) + }; +}; + +Foo x; diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf new file mode 100644 index 0000000..4c38d10 --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/main.fmf @@ -0,0 +1,28 @@ +summary: Try to compile a program that has a template parameter with a boolean expression + involving a templated static constant +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +framework: beakerlib +require: + - gcc + - gcc-c++ + - file +duration: 5m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=703059 +tag: + - CI-Tier-1 + - DTS8-INTEROP-CI + - DTS9-INTEROP-CI + - Tier1 + - dts_smoke + - dts_stable +extra-nitrate: TC#0111110 +extra-summary: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +extra-task: /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template diff --git a/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh new file mode 100755 index 0000000..8f50b77 --- /dev/null +++ b/tests/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template/runtest.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Regression/bz703059-g-fails-to-compile-a-program-that-has-a-template +# Description: Try to compile a program that has a template parameter with a boolean expression involving a templated static constant +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2011, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# 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, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GXX=${GXX:-g++} + +rlJournalStart + rlPhaseStartSetup + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v f.cc $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GXX -c f.cc" + rlAssertExists "f.o" + rlRun "file f.o | grep ELF" # Basic obj file sanity check + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/unused_parameter_warning/main.fmf b/tests/Regression/unused_parameter_warning/main.fmf new file mode 100644 index 0000000..7084e32 --- /dev/null +++ b/tests/Regression/unused_parameter_warning/main.fmf @@ -0,0 +1,31 @@ +summary: Check to see if g++ throws unused parameter warnings with standard libraries + with option -Wall +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Regression/unused_parameter_warning +framework: beakerlib +require: + - gcc-c++ + - glibc-devel + - libstdc++-devel +recommend: + - gcc44-c++ + - glibc-devel.ppc64 + - glibc-devel.ppc + - libstdc++43-devel.ppc + - libstdc++44-devel.ppc + - libstdc++-devel.ppc +duration: 10m +enabled: true +tier: '1' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=201342 +tag: + - CI-Tier-1 + - Tier1 + - dts_stable +extra-nitrate: TC#0062265 +extra-summary: /tools/gcc/c++/unused_parameter_warning +extra-task: /tools/gcc/c++/unused_parameter_warning diff --git a/tests/Regression/unused_parameter_warning/runtest.sh b/tests/Regression/unused_parameter_warning/runtest.sh new file mode 100755 index 0000000..4a5d2fb --- /dev/null +++ b/tests/Regression/unused_parameter_warning/runtest.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# vim: dict=/usr/share/rhts-library/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# 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, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# g++ - check for unused parameter warning +# expected exit code is 0 +# +# Author: Sachin Prabhu +# Maintainer: Marek Polacek + + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ grep) + +GXX=${GXX:-g++} + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rlAssertRpm "$p" + done; unset p + rlLog "GXX = $GXX" + rlLog "Installed within `rpmquery -f $(which $GXX)`" + rlRun "TmpDir=\`mktemp -d\`" + rlRun "cp -v test.cpp $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + rlRun "$GXX -W -Wall -o test.bin test.cpp &> output" + cat output + rlRun "grep -E 'warning:\W+unused\W+parameter' -q output" 1 "'warning: unused parameter' not present" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Regression/unused_parameter_warning/test.cpp b/tests/Regression/unused_parameter_warning/test.cpp new file mode 100644 index 0000000..15d375b --- /dev/null +++ b/tests/Regression/unused_parameter_warning/test.cpp @@ -0,0 +1,2 @@ +#include +int main() {} diff --git a/tests/Sanity/compile-rpm/main.fmf b/tests/Sanity/compile-rpm/main.fmf new file mode 100644 index 0000000..d6c5faa --- /dev/null +++ b/tests/Sanity/compile-rpm/main.fmf @@ -0,0 +1,45 @@ +summary: Compile a Red Hat RPM package. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/compile-rpm +framework: beakerlib +require: + - autoconf + - bison + - dejagnu + - elfutils-libelf-devel + - expat-devel + - flex + - gcc + - gdb + - glibc-devel + - grep + - libselinux-devel + - make + - mpfr-devel + - ncurses-devel + - python-devel + - readline-devel + - rpm-build + - rpm-devel + - texinfo + - xz-devel + - yum-utils + - zlib-devel +duration: 240m +adjust: + - require+: + - ncurses-devel.i686 + - ncurses-devel.x86_64 + when: arch == x86_64 + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +enabled: true +extra-nitrate: TC#0142522 +extra-summary: /tools/gcc/Sanity/compile-rpm +extra-task: /tools/gcc/Sanity/compile-rpm diff --git a/tests/Sanity/compile-rpm/runtest.sh b/tests/Sanity/compile-rpm/runtest.sh new file mode 100755 index 0000000..5f68e75 --- /dev/null +++ b/tests/Sanity/compile-rpm/runtest.sh @@ -0,0 +1,99 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/compile-rpm +# Description: Compile a Red Hat RPM package. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# 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, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +GCC=${GCC:-gcc} + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset. +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + # Work around troubles with buildroot packages being out-of-sync + if rlIsRHEL; then + rlMountRedhat + for i in libipt source-highlight libbabeltrace; do + rpm -q $i &>/dev/null || rlRun "yum -y install $i" 0-255 + rpm -q ${i}-devel &>/dev/null || rlRun "yum -y install ${i}-devel" 0-255 + d=/mnt/redhat/brewroot/packages/$i + if rpm -q $i &>/dev/null && ! rpm -q ${i}-devel &>/dev/null; then + if [[ -e /mnt/redhat/brewroot/packages/$i ]]; then + d=/mnt/redhat/brewroot/packages/$i + else + d=/mnt/redhat/brewroot/packages/${i#lib} + fi + rlRun "yum -y install $d/$(rpm -q --qf='%{VERSION}/%{RELEASE}/%{ARCH}' $i)/${i}-devel-$(rpm -q --qf='%{VERSION}-%{RELEASE}.%{ARCH}' $i).rpm" + fi + done + fi + + rlRun "TmpDir=\$(mktemp -d)" + rlRun "pushd $TmpDir" + + if [ -z ${UNDER_DTS} ]; then + rlFetchSrcForInstalled gdb || yumdownloader --source gdb + else + rlFetchSrcForInstalled $DTS-gdb || yumdownloader --source $DTS-gdb + fi + + if [ -z ${UNDER_DTS} ]; then + srpm=$(rpmquery gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm" + else + srpm=$(rpmquery $DTS-gdb --queryformat=%{NAME}-%{VERSION}-%{RELEASE})".src.rpm" + fi + rlRun "rpm -Uvh $srpm" + spec_dir=$(rpm --eval=%_specdir) + build_dir=$(rpm --eval=%_builddir) + + if [ -z ${UNDER_DTS} ]; then + pkg_dir=$(rpmquery gdb} --queryformat=%{NAME}-%{VERSION}) + else + pkg_dir=$(rpmquery $DTS-gdb} --queryformat=%{NAME}-%{VERSION}) + fi + + yum-builddep -y $spec_dir/gdb.spec + rlPhaseEnd + + rlPhaseStartTest + rlRun "CC=$GCC rpmbuild -bb $spec_dir/gdb.spec &> BUILD_LOG" + test $? -eq 0 || tail -n 20 BUILD_LOG + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz b/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz new file mode 100644 index 0000000..d528f03 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_aarch64.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_i686.tar.gz b/tests/Sanity/libitm-smoke/bins_i686.tar.gz new file mode 100644 index 0000000..ce0e948 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_i686.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz b/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz new file mode 100644 index 0000000..0589c6a Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_ppc64.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz b/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz new file mode 100644 index 0000000..b8e9215 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_ppc64le.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_s390x.tar.gz b/tests/Sanity/libitm-smoke/bins_s390x.tar.gz new file mode 100644 index 0000000..742a917 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_s390x.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz b/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz new file mode 100644 index 0000000..e884185 Binary files /dev/null and b/tests/Sanity/libitm-smoke/bins_x86_64.tar.gz differ diff --git a/tests/Sanity/libitm-smoke/main.fmf b/tests/Sanity/libitm-smoke/main.fmf new file mode 100644 index 0000000..77c1763 --- /dev/null +++ b/tests/Sanity/libitm-smoke/main.fmf @@ -0,0 +1,34 @@ +summary: Just runs prebuilt binaries +description: | + Just running prebuilt binaries that require libitm. + This test is designed to run in gcc-libraries CI. we + cannot build anything on our own, since we don't have + devtoolset's gcc and -devel libraries. + + This should run OK on RHEL-6 and RHEL-7, currently all + arches. + + The sources of the tests are in Sanity/libitm-sanity. + !!! THIS TEST IS INTENTIONALLY NOT IN gcc General PLAN !!! +contact: Michael Petlan +component: + - gcc + - gcc-libraries +test: ./runtest.sh +framework: beakerlib +require: + - gcc + - libitm +recommend: + - gcc-libraries +duration: 5m +enabled: true +tag: + - CI-Tier-1 +adjust: + - enabled: false + when: distro == rhel-6 and arch == s390x + continue: false +extra-nitrate: TC#0539542 +extra-summary: /tools/gcc/Sanity/libitm-smoke +extra-task: /tools/gcc/Sanity/libitm-smoke diff --git a/tests/Sanity/libitm-smoke/runtest.sh b/tests/Sanity/libitm-smoke/runtest.sh new file mode 100755 index 0000000..8c78f78 --- /dev/null +++ b/tests/Sanity/libitm-smoke/runtest.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/libitm-smoke +# Description: Just runs prebuilt binaries +# Author: Michael Petlan +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2016 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 + +# Relevant for any system with libitm binary compatible with the attached +# binaries. +# Suggested TCMS relevancy: +# distro = rhel-6 && arch = s390x: False + +PACKAGE="gcc" +REALLY_WANT_TO_RUN="true" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + if [ "$BASEOS_CI" = "true" ]; then + # in CI, we need to be able to skip this testcase + # in case libitm is not a part of gcc-libraries + rlCheckRpm "libitm" || REALLY_WANT_TO_RUN="false" + else + rlCheckRpm "libitm" || rlRun "yum install -y libitm" 0 "Installing missing libitm" + rlAssertRpm "libitm" + fi + TARBALL="bins_`arch`.tar.gz" + if [ ! -f $TARBALL ]; then + rlDie "We do not have binaries for your arch (`arch`)" + fi + rlRun "zcat $TARBALL | tar x" + rlRun "pushd bins" + rlPhaseEnd + + if [ "$REALLY_WANT_TO_RUN" = "true" ]; then + rlPhaseStartTest + for i in T_*; do + rlRun "./$i" + done + rlPhaseEnd + else + rlPhaseStartTest + rlPass "SKIPPING THIS TEST -- libitm is probably not shipped within current gcc-libraries" + rlPhaseEnd + fi + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -rf bins" 0 "Removing the stuff we created" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/rebuild-binutils/main.fmf b/tests/Sanity/rebuild-binutils/main.fmf new file mode 100644 index 0000000..2d7e5d5 --- /dev/null +++ b/tests/Sanity/rebuild-binutils/main.fmf @@ -0,0 +1,70 @@ +summary: Rebuild binutils. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/rebuild-binutils +framework: beakerlib +require: + - autoconf + - automake + - binutils + - gcc + - glibc + - glibc-devel + - glibc-static + - libstdc++ + - libstdc++-devel + - libstdc++-static + - perl + - rpm-build + - sharutils + - texinfo + - yum-utils + - zlib-devel + - zlib-static +recommend: + - glibc-devel.ppc + - glibc-devel.s390 + - glibc-static.ppc + - glibc-static.s390 + - libgcc.ppc + - libgcc.s390 + - libstdc++-devel.ppc + - libstdc++-devel.s390 + - libstdc++.ppc + - libstdc++.s390 + - libstdc++-static.ppc + - libstdc++-static.s390 + - zlib-devel.ppc + - zlib-static.ppc + - dnf-utils + - yum-utils +duration: 3h +enabled: true +adjust: + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - glibc-static.i686 + - glibc-static.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libstdc++-devel.i686 + - libstdc++-devel.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + - libstdc++-static.i686 + - libstdc++-static.x86_64 + when: arch == x86_64 + - enabled: false + when: distro == rhel-6 and collection is defined + continue: false + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +extra-nitrate: TC#0147459 +extra-summary: /tools/gcc/Sanity/rebuild-binutils +extra-task: /tools/gcc/Sanity/rebuild-binutils diff --git a/tests/Sanity/rebuild-binutils/runtest.sh b/tests/Sanity/rebuild-binutils/runtest.sh new file mode 100755 index 0000000..714ac4d --- /dev/null +++ b/tests/Sanity/rebuild-binutils/runtest.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/rebuild-binutils +# Description: Rebuild binutils. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# 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, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +# The test is expected to fail in devtoolset-* on RHEL-6 because of +# the "Unresolvable `R_X86_64_NONE` relocation" family of bugs, e.g. +# https://bugzilla.redhat.com/show_bug.cgi?id=1545386 +# They have been fixed for both the base and devtoolset binutils +# on RHEL-7 but on RHEL-6, it was just the base binutils. + +GCC=${GCC:-gcc} + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset. +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + rlLog "Using GCC: `rpmquery -f $(which $GCC)`" + rlRun "rpmquery -a | grep -e yum-utils -e dnf-utils" 0 "YUM or DNF utils are installed" + rlRun "TmpDir=\$(mktemp -d)" + rlRun "pushd $TmpDir" + + if [ -z ${UNDER_DTS} ]; then + rlFetchSrcForInstalled binutils || yumdownloader --source binutils + srpm=$(find binutils*.src.rpm | tail -n1) + else + rlFetchSrcForInstalled $DTS-binutils || yumdownloader --source $DTS-binutils + srpm=$(find $DTS-binutils*.src.rpm | tail -n1) + fi + rlRun "rpm -Uvh $srpm" + spec_dir=$(rpm --eval=%_specdir) + yum-builddep -y $spec_dir/binutils.spec + rlPhaseEnd + + rlPhaseStartTest + if [ "$(uname -i)" == "ppc64" ]; then + if rlIsRHEL 6; then + target='--target=ppc64' + else + target='--target=ppc' + fi + fi + if [ "$(uname -i)" == "i386" ]; then + target='--target=i686' + fi + + rlRun "setsebool allow_execmod 1" + rlRun "CC=$GCC rpmbuild -bb $target --clean $spec_dir/binutils.spec &> BUILD_LOG" || ( echo "========== BUILD_LOG tail ==========" ; tail -n 20 BUILD_LOG ) + rlRun "setsebool allow_execmod 0" + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/rebuild-glibc/main.fmf b/tests/Sanity/rebuild-glibc/main.fmf new file mode 100644 index 0000000..53eee30 --- /dev/null +++ b/tests/Sanity/rebuild-glibc/main.fmf @@ -0,0 +1,76 @@ +description: | + Rebuild current glibc. +summary: Rebuild glibc +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/rebuild-glibc +framework: beakerlib +require: + - audit-libs-devel + - binutils + - gcc + - gd-devel + - glibc-devel + - glibc-static + - glibc-utils + - libcap-devel + - libgcc + - libpng-devel + - libstdc++ + - libstdc++-devel + - libstdc++-static + - libXpm-devel + - nspr-devel + - nss-devel + - nss-softokn-devel + - nss-util-devel + - rpm-build + - systemtap-sdt-devel + - yum-utils +recommend: + - glibc-devel.ppc + - glibc-devel.s390 + - glibc-static.ppc + - glibc-static.s390 + - libgcc.ppc + - libgcc.s390 + - libstdc++-devel.ppc + - libstdc++-devel.s390 + - libstdc++.ppc + - libstdc++.s390 + - libstdc++-static.ppc + - libstdc++-static.s390 + - dnf-utils + - yum-utils +duration: 18h +enabled: true +tag: + - NoDTS + - rhel8-buildroot +adjust: + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - glibc-static.i686 + - glibc-static.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libstdc++-devel.i686 + - libstdc++-devel.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + - libstdc++-static.i686 + - libstdc++-static.x86_64 + when: arch == x86_64 + - enabled: false + when: collection is defined + continue: false + - enabled: false + # Too "heavy" for Fedora CI (for now) + when: distro == fedora and trigger is defined + continue: false +extra-nitrate: TC#0035677 +extra-summary: /tools/gcc/Sanity/rebuild-glibc +extra-task: /tools/gcc/Sanity/rebuild-glibc diff --git a/tests/Sanity/rebuild-glibc/runtest.sh b/tests/Sanity/rebuild-glibc/runtest.sh new file mode 100755 index 0000000..52255c5 --- /dev/null +++ b/tests/Sanity/rebuild-glibc/runtest.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# Copyright (c) 2009, 2012 Red Hat, Inc. All rights reserved. +# +# 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 . +# +# Author: Michal Nowak +# Rewrite: Marek Polacek + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +cpu_good_for_make_check () { + # glibc can create several alternative CPU-specific bits that are selected + # in runtime. However the "make check" phase tries to test all of them and + # fails when testing a more "advanced" binary than the SUT's CPU. In such + # case we'd want to skip "make check" to prevent "rpmbuild" from a certain + # failure. + if rlIsRHEL '>=8' && [[ $(arch) = ppc64le ]] && grep -q 'POWER[2-8]' /proc/cpuinfo; then + rlLogInfo 'RHEL8+ on BUILD_LOG" + test $? -eq 0 || tail -n 20 BUILD_LOG + rlPhaseEnd + + rlPhaseStartCleanup + rlBundleLogs "Build-log" BUILD_LOG + rlRun "popd" + rlRun "rm -r $TmpDir" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/test-m32-m64-options/clear_cache.c b/tests/Sanity/test-m32-m64-options/clear_cache.c new file mode 100644 index 0000000..b10479f --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/clear_cache.c @@ -0,0 +1,7 @@ +int +main (void) +{ + char *mem = __builtin_alloca (40); + __builtin___clear_cache (mem, mem + 40); + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/cpp11.cpp b/tests/Sanity/test-m32-m64-options/cpp11.cpp new file mode 100644 index 0000000..649daec --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/cpp11.cpp @@ -0,0 +1,78 @@ +template +class X +{ + T p; +public: + template auto f() -> decltype(+p) { } +}; + +struct A +{ + int i = 42; +}; + +struct B +{ + int i = 42; + B() { } + B(int i): i(i) { } +}; + +template +struct C +{ + T m = t; +}; + +template +struct D +{ + T m = t; + D() { } + D(T m):m(m) { } +}; + +struct complex +{ + typedef float value_type; + typedef __complex__ float _ComplexT; + + constexpr complex(_ComplexT __z) : _M_value(__z) { } + + constexpr complex(float __r = 0.0f, float __i = 0.0f) + : _M_value(__r + __i * 1.0f) { } + +private: + _ComplexT _M_value; +}; + +constexpr complex c1; + +int +main (void) +{ + X().f(); + A a1; + if (a1.i != 42) return 1; + A a2{}; + if (a2.i != 42) return 2; + A a3[1]; + if (a3[0].i != 42) return 3; + + B b1; + if (b1.i != 42) return 3; + B b2 (24); + if (b2.i != 24) return 4; + + C c1; + if (c1.m != 3) return 5; + C c2 {}; + if (c2.m != 5) return 6; + + D d1; + if (d1.m != 3) return 7; + D d2 (5) ; + if (d2.m != 5) return 8; + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.c b/tests/Sanity/test-m32-m64-options/hello.c new file mode 100644 index 0000000..98a53b6 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.c @@ -0,0 +1,8 @@ +#include + +int +main (void) +{ + puts ("Hello World!"); + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.cpp b/tests/Sanity/test-m32-m64-options/hello.cpp new file mode 100644 index 0000000..0f2234e --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.cpp @@ -0,0 +1,7 @@ +#include + +int +main (void) +{ + std::cout << "Hello, world!\n"; +} diff --git a/tests/Sanity/test-m32-m64-options/hello.f90 b/tests/Sanity/test-m32-m64-options/hello.f90 new file mode 100644 index 0000000..afabbb2 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/hello.f90 @@ -0,0 +1,3 @@ + program hello + print *, "Hello World!" + end program hello diff --git a/tests/Sanity/test-m32-m64-options/lambda-template.C b/tests/Sanity/test-m32-m64-options/lambda-template.C new file mode 100644 index 0000000..b4db3b8 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/lambda-template.C @@ -0,0 +1,41 @@ +// { dg-options -std=c++0x } +// { dg-do run } + +extern "C" void abort(); + +template +auto apply (T t) -> decltype (t()) +{ + return t(); +} + +template +T f(T t) +{ + T t2 = t; + if (t != [=]()->T { return t; }()) + abort (); + if (t != [=] { return t; }()) + abort (); + if (t != [=] { return t2; }()) + abort (); + if (t != [&] { return t; }()) + abort (); + if (t != apply([=]{return t;})) + abort (); + + int i; + [&] (int a) { return a+i+t; } (0); + [&] (int a) -> decltype(a) { return a+i+t; } (0); + [&] (int a) -> decltype(i) { return a+i+t; } (0); + [&] (int a) -> decltype(t) { return a+i+t; } (0); + [&] (int a) -> decltype(a+i) { return a+i+t; } (0); + [&] (int a) -> decltype(a+t) { return a+i+t; } (0); + [&] (int a) -> decltype(i+t) { return a+i+t; } (0); + [&] (int a) -> decltype(a+i+t) { return a+i+t; } (0); +} + +int main() +{ + f(0xbeef); +} diff --git a/tests/Sanity/test-m32-m64-options/main.fmf b/tests/Sanity/test-m32-m64-options/main.fmf new file mode 100644 index 0000000..732b996 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/main.fmf @@ -0,0 +1,51 @@ +summary: Try -m32 and -m64 options. +description: '' +contact: mcermak@redhat.com +component: + - gcc +test: ./runtest.sh +path: /tests/Sanity/test-m32-m64-options +framework: beakerlib +require: + - gcc + - gcc-c++ + - gcc-gfortran + - glibc-common + - libgcc + - libgomp + - libgfortran + - libstdc++ + - libstdc++-devel + - glibc-devel + - libitm +recommend: + - libgfortran44.i686 + - libgfortran44.x86_64 + - libgfortran4.i686 + - libgfortran4.x86_64 +duration: 10m +enabled: true +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=1113429 +adjust: + - enabled: false + when: arch == ia64, ppc64, s390, s390x + continue: false + - require+: + - glibc-devel.i686 + - glibc-devel.x86_64 + - libgcc.i686 + - libgcc.x86_64 + - libgfortran.i686 + - libgfortran.x86_64 + - libgomp.i686 + - libgomp.x86_64 + - libitm.i686 + - libitm.x86_64 + - libstdc++.i686 + - libstdc++.x86_64 + when: arch == x86_64 + continue: false +extra-nitrate: TC#0197178 +extra-summary: /tools/gcc/Sanity/test-m32-m64-options +extra-task: /tools/gcc/Sanity/test-m32-m64-options diff --git a/tests/Sanity/test-m32-m64-options/omphello.c b/tests/Sanity/test-m32-m64-options/omphello.c new file mode 100644 index 0000000..85b591f --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/omphello.c @@ -0,0 +1,24 @@ +#include +#include +#include + +int +main (void) +{ + int th_id; + int nthreads; + + #pragma omp parallel private(th_id) + { + th_id = omp_get_thread_num (); + printf ("Hello World from thread %d\n", th_id); + + #pragma omp barrier + if (th_id == 0) + { + nthreads = omp_get_num_threads (); + printf ("There are %d threads\n", nthreads); + } + } + return EXIT_SUCCESS; +} diff --git a/tests/Sanity/test-m32-m64-options/quad.c b/tests/Sanity/test-m32-m64-options/quad.c new file mode 100644 index 0000000..f9e5ef1 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/quad.c @@ -0,0 +1,38 @@ +#include +#include +#include + +int +main (void) +{ + __float128 r = strtoflt128 ("1.23456789", NULL); + + int prec = 20; + int width = 46; + char buf[128]; + + r = 2.0q; + r = sqrtq (r); + int n = quadmath_snprintf (buf, sizeof buf, "%+-#*.20Qe", width, r); + if ((size_t) n < sizeof buf) + /* Prints: +1.41421356237309504880e+00. */ + printf ("%s\n", buf); + quadmath_snprintf (buf, sizeof buf, "%Qa", r); + if ((size_t) n < sizeof buf) + /* Prints: 0x1.6a09e667f3bcc908b2fb1366ea96p+0. */ + printf ("%s\n", buf); + n = quadmath_snprintf (NULL, 0, "%+-#46.*Qe", prec, r); + if (n > -1) + { + char *str = malloc (n + 1); + if (str) + { + quadmath_snprintf (str, n + 1, "%+-#46.*Qe", prec, r); + /* Prints: +1.41421356237309504880e+00. */ + printf ("%s\n", str); + } + free (str); + } + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/runtest.sh b/tests/Sanity/test-m32-m64-options/runtest.sh new file mode 100755 index 0000000..15e99af --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/runtest.sh @@ -0,0 +1,213 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/gcc/Sanity/test-m32-m64-options +# Description: Try -m32 and -m64 options. +# Author: Marek Polacek +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2012 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# 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, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# This is for Toolset. +# +# In this test, we try to compile and run programs using -m32 and -m64. +# We compile C, C++ and Fortran Hello World programs. Also, there are two +# proglets which are exercising some C++11 features. Furthermore, we try +# -fgnu-tm, -fopenmp options. We also use libquadmath a little bit. +# We call a function from libgcc. We also use the __thread keyword. +# Everything should be ok when running under e.g.: +# scl enable devtoolset-1.0 bash +# Note, that gfortran is not a part of 1.0 release. + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGES=(gcc gcc-c++ gcc-gfortran glibc-common libgcc libgomp libgfortran glibc-devel libitm) + +PACKAGES_X86_64=(libgomp libgfortran glibc-devel libgcc libitm) + +# Choose the compiler. +GCC=${GCC:-gcc} +GXX=${GXX:-g++} +GFORTRAN=${GFORTRAN:-gfortran} + +PACKAGE=$GCC + +# Set the variabile UNDER_DTS on non-empty string, when run under devtoolset +if $( echo `which gcc` | grep -qE '/opt/rh/' ); then + UNDER_DTS="true" + # Set the actual version of DTS + DTS=`which gcc | awk 'BEGIN { FS="/" } { print $4 }'` +fi + +rlJournalStart + rlPhaseStartSetup + for p in "${PACKAGES[@]}"; do + rpm -q "$p" || yum install -y $p + rlAssertRpm "$p" + done; unset p + yum update -y libitm # this is a hack, since libitm is a troublemaker + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libitm.`rlGetSecondaryArch`" || yum install -y libitm.`rlGetSecondaryArch` + rlAssertRpm "libitm.`rlGetSecondaryArch`" + fi + + rlCheckRpm "libstdc++-devel.`rlGetPrimaryArch`" || yum install -y libstdc++-devel.`rlGetPrimaryArch` + rlAssertRpm "libstdc++-devel.`rlGetPrimaryArch`" + # RHEL-8 CI debugging hack (to be removed when not needed): + rlRun "rpmquery -l libstdc++-devel.`rlGetPrimaryArch` | grep -e bits/c++config" + rlRun "rpmquery -l libstdc++-devel.`rlGetPrimaryArch` | grep -e iostream" + + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libitm.`rlGetSecondaryArch`" || yum install -y libitm.`rlGetSecondaryArch` + rlAssertRpm "libitm.`rlGetSecondaryArch`" + fi + + if [ ! -z ${UNDER_DTS} ]; then + rlCheckRpm "$DTS-libstdc++-devel" || yum install -y $DTS-libstdc++-devel + rlAssertRpm "$DTS-libstdc++-devel" + if [ "`arch`" = 'x86_64' ]; then + rlCheckRpm "$DTS-libquadmath-devel" || yum install -y $DTS-libquadmath-devel + rlAssertRpm "$DTS-libquadmath-devel" + fi + if rlIsRHEL '<=7'; then # no libgfortran[45] on RHEL8+ + rlCheckRpm "libgfortran4" || yum install -y libgfortran4 + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libgfortran4.`rlGetSecondaryArch`" || yum install -y libgfortran4.`rlGetSecondaryArch` + rlAssertRpm "libgfortran4.`rlGetSecondaryArch`" + fi + rlCheckRpm "libgfortran5" || yum install -y libgfortran5 + rlAssertRpm "libgfortran5" && yum -y update libgfortran5 + if [ -n "`rlGetSecondaryArch`" ]; then + rlCheckRpm "libgfortran5.`rlGetSecondaryArch`" || yum install -y libgfortran5.`rlGetSecondaryArch` + rlAssertRpm "libgfortran5.`rlGetSecondaryArch`" + fi + fi + fi + + # Check whether on rhel6 x86_64 i686-packages are installed too. + # On rhel5 i386-packages should be already installed. + if [ "$(uname -i)" == "x86_64" ]; then + for pack in "${PACKAGES_X86_64[@]}"; do + rpm -q ${pack}.i?86 || yum install -y ${pack}.i?86 + done; unset pack + + if [ ! -z ${UNDER_DTS} ]; then + yum install -y $DTS-libstdc++-devel.i?86 + yum install -y $DTS-libquadmath-devel.i?86 + fi + fi + + rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" + # We need some files. + rlRun "cp -v hello.{c,cpp,f90} tm.c quad.c thr-init-2.c \ + clear_cache.c omphello.c lambda-template.C cpp11.cpp $TmpDir" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartSetup "Showing compiler versions" + for compiler in $GCC $GXX $GFORTRAN + do + rlLog "Version of compiler: $compiler" + eval "$compiler --version 2>&1" | while read line + do + rlLog " $line" + done + done + rlPhaseEnd + +ARCH="$(uname -i)" +case "$ARCH" in + "aarch64") export SWITCHES="-mlittle-endian" # we don't have -m64, so let's use some dummy switch that is enabled by default + ;; + "i386") export SWITCHES="-m32" + ;; + "ppc64") export SWITCHES="-m32 -m64" + ;; + "ppc64le") export SWITCHES="-m64" + ;; + "s390x") export SWITCHES="-m31 -m64" + ;; + "x86_64") export SWITCHES="-m32 -m64" + ;; +esac + +# Always try both -m32 and -m64. +for m in $SWITCHES; do + rlPhaseStartTest "Compile and run [$m]" + rlRun "$GCC $m hello.c -o hello_c" + rlRun "./hello_c" + + rlRun "$GXX $m hello.cpp -o hello_cpp" + rlRun "./hello_cpp" + + # Now try a few C++11 features. + $GXX -xc++ -std=c++11 - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GXX $m -std=c++11 lambda-template.C -o lambda" + rlRun "./lambda" + + rlRun "$GXX $m -std=c++11 cpp11.cpp -o cpp11" + rlRun "./cpp11" + fi + + rlRun "$GFORTRAN $m hello.f90 -o hello_fortran" + rlRun "./hello_fortran" + + # TM support is GCC >=4.7 only. + $GCC -xc -O2 -std=gnu99 -fgnu-tm - <<< "int main(){}" + if test $? -eq 0; then + rlRun "$GCC $m -O2 -std=gnu99 -fgnu-tm tm.c -o tm" + rlRun "./tm" + fi + + # Test OpenMP. + rlRun "$GCC $m omphello.c -O2 -std=gnu99 -fopenmp -o omp" + rlRun "./omp" + + # Test __thread. + rlRun "$GCC $m thr-init-2.c -O2 -std=gnu99 -ftls-model=initial-exec -o thr" + rlRun "./thr" + + # Now test some libquadmath stuff (__float128 support). + # libquadmath is mising on RHEL machines, usually. + # But with DTS, this should be available. + if [ ! -z ${UNDER_DTS} ]; then + if [ "`arch`" = 'x86_64' ]; then + rlRun "$GCC $m quad.c -O2 -std=gnu99 -lquadmath -o quad -lm" + rlRun "./quad" + else + rlLog "quadmath test skipped (needs x86_64)" + fi + fi + + # And now something from libgcc, e.g. __builtin___clear_cache. + rlRun "$GCC $m clear_cache.c -O2 -std=gnu99 -o cache" + rlRun "./cache" + rlPhaseEnd +done; unset m + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/test-m32-m64-options/thr-init-2.c b/tests/Sanity/test-m32-m64-options/thr-init-2.c new file mode 100644 index 0000000..5b70dd2 --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/thr-init-2.c @@ -0,0 +1,20 @@ +extern void abort() ; + +static __thread int fstat ; +static __thread int fstat = 1; + +int test_code(int b) +{ + fstat += b ; + return fstat; +} + +int main (int ac, char *av[]) +{ + int a = test_code(1); + + if ((a != 2) || (fstat != 2)) + abort () ; + + return 0; +} diff --git a/tests/Sanity/test-m32-m64-options/tm.c b/tests/Sanity/test-m32-m64-options/tm.c new file mode 100644 index 0000000..92b90db --- /dev/null +++ b/tests/Sanity/test-m32-m64-options/tm.c @@ -0,0 +1,34 @@ +extern void *malloc (__SIZE_TYPE__) __attribute__((malloc,transaction_safe)); + +static int __attribute__((transaction_safe)) +something (void) +{ + return 0; +} + +struct large { int foo[500]; }; + +int +main (void) +{ + int *p; + struct large *lp; + + __transaction_atomic { + p = malloc (sizeof (*p) * 100); + lp = malloc (sizeof (*lp) * 100); + + /* No instrumentation necessary; P and LP are transaction local. */ + p[5] = 123; + lp->foo[66] = 123; + + if (something ()) + __transaction_cancel; + } + + __transaction_relaxed { + ++p[5]; + } + + return ((p[5] == 124) ? 0 : 1); +}