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