public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gcc] rhel-f41-base: Import a set of tests from RHEL
@ 2026-06-29 12:29 
  0 siblings, 0 replies; only message in thread
From:  @ 2026-06-29 12:29 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : 23a21fde253322c0f4259158d36237944791e1ee
Author : Václav Kadlčík <vkadlcik@redhat.com>
Date   : 2022-07-29T16:27:49+02:00
Stats  : +1997/-2 in 52 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/23a21fde253322c0f4259158d36237944791e1ee?branch=rhel-f41-base

Log:
Import a set of tests from RHEL

---
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 <stdio.h>
+#include <stdlib.h>
+
+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 <http://www.gnu.org/licenses/>.
+# 
+# Author: Michal Nowak <mnowak@redhat.com>
+#	  Marek Polacek <polacek@redhat.com>
+
+# 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 <http://www.gnu.org/licenses/>.
+# 
+# Author: Michal Nowak <mnowak@redhat.com>
+#         Marek Polacek <polacek@redhat.com>
+
+# 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 <http://www.gnu.org/licenses/>.
+# 
+# Author: Michal Nowak <mnowak@redhat.com>
+#         Marek Polacek <polacek@redhat.com>
+
+# 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 <stdio.h>
+
+/* 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 <jbastian@redhat.com>
+#           Marek Polacek <polacek@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   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 <http://www.gnu.org/licenses/>.
+# 
+# Author: Michal Nowak <mnowak@redhat.com>
+#         Marek Polacek <polacek@redhat.com>
+
+# 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 <vkadlcik@redhat.com>
+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 <mpetlan@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   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 <<EOF
+#include <immintrin.h>
+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 <bool C> int func (void);
+
+template <class T> struct Foo
+{
+  static const unsigned int a = sizeof (T);
+
+  //enum { b = a };
+
+  enum
+  {
+    c = sizeof (func < (a == 0) > ())
+  };
+};
+
+Foo <int> 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 <mpolacek@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   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 <sprabhu@redhat.com>
+# Maintainer: Marek Polacek <polacek@redhat.com>
+
+
+# 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 <sstream>
+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 <polacek@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   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 <mpetlan@redhat.com>
+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 <mpetlan@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   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 <polacek@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   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 <http://www.gnu.org/licenses/>.
+# 
+# Author: Michal Nowak <mnowak@redhat.com>
+# Rewrite: Marek Polacek <polacek@redhat.com>
+
+# 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 <POWER9, make check will be skipped'
+        return 1
+    fi
+    return 0
+}
+
+GCC=${GCC:-gcc}
+
+rlJournalStart
+  rlPhaseStartSetup
+
+    cpu_good_for_make_check && CHECK_PARAM='' || CHECK_PARAM='--nocheck'
+
+    rlRun "rpmquery -a | grep -e yum-utils -e dnf-utils" 0 "YUM or DNF utils are installed"
+
+    rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
+    rlRun "pushd $TmpDir"
+
+    rlLogInfo "Running kernel: `uname -r`"
+    rlLogInfo "Installed kernel(s): `rpm -q kernel`"
+    rlLogInfo "Installed headers: `rpm -q kernel-headers`"
+
+    rlFetchSrcForInstalled glibc || yumdownloader --source glibc
+    srpm=$(find glibc*.src.rpm | tail -n1)
+    rlRun "rpm -Uvh $srpm"
+    spec_dir=$(rpm --eval=%_specdir)
+    yum-builddep -y $spec_dir/glibc.spec
+
+  rlPhaseEnd
+
+  rlPhaseStartTest
+    if [ "$(uname -i)" == "ppc64" ]; then 
+        if rlIsRHEL 7 || rlIsRHEL 6; then
+            target='--target=ppc64'
+        else
+            target='--target=ppc'
+        fi
+    fi
+    rlRun "CC=$GCC rpmbuild -bb $target $CHECK_PARAM --clean $spec_dir/glibc.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/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 T>
+class X
+{
+  T p;
+public:
+  template <class U> auto f() -> decltype(+p) { }
+};
+
+struct A
+{
+  int i = 42;
+};
+
+struct B
+{
+  int i = 42;
+  B() { }
+  B(int i): i(i) { }
+};
+
+template <class T, T t>
+struct C
+{
+  T m = t;
+};
+
+template <class T, T t>
+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<int>().f<int>();
+  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<int,3> c1;
+  if (c1.m != 3) return 5;
+  C<int,5> c2 {};
+  if (c2.m != 5) return 6;
+
+  D<int,3> d1;
+  if (d1.m != 3) return 7;
+  D<int,3> 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 <stdio.h>
+
+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 <iostream>
+
+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 <class T>
+auto apply (T t) -> decltype (t())
+{
+  return t();
+}
+
+template <class T>
+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 <omp.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+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 <quadmath.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+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 <polacek@redhat.com>
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#   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);
+}

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-29 12:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-29 12:29 [rpms/gcc] rhel-f41-base: Import a set of tests from RHEL 

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox