Compare commits

...
Sign in to create a new pull request.

46 commits

Author SHA1 Message Date
Miloš Prchlík
542e13fc39 Add coverage for RHEL-69758 2025-01-29 12:25:49 +01:00
Miloš Prchlík
b103e458d2 Batch update of various changes 2024-11-07 16:26:31 +01:00
Miloš Prchlík
f48051f6b9 Add coverage for RHEL-59802 2024-11-07 15:23:07 +01:00
Miloš Prchlík
0c3b5465a2 Add coverage for RHEL-59801 2024-11-07 14:37:42 +01:00
Miloš Prchlík
d5fdfa740c Batch update of various changes 2024-11-04 13:08:07 +01:00
Miloš Prchlík
763a84b98a Batch update of various changes 2024-11-01 14:09:16 +01:00
Miloš Prchlík
71e0f1ccf4 RHEL-30268: fix relevancy 2024-08-26 10:00:16 +02:00
Miloš Prchlík
07c482bdc6 TLS-variable-wrongly-relocated-on-debug-info: no gcc-toolset-14-gdb on RHEL9 2024-08-21 14:08:46 +02:00
Miloš Prchlík
3efa80f3f1 Fix Backport-relro_padding-entsize-fix test reproducer 2024-08-15 21:02:30 +02:00
Miloš Prchlík
8b1bcc91ef Add coverage for RHEL-50536
Backport .relro_padding entsize fix
2024-08-15 10:40:57 +02:00
Miloš Prchlík
6d5a02bb0c Avoid-creating-gaps-between-adjacent-LOAD-segments: fix reproducer 2024-08-12 08:30:31 +00:00
Miloš Prchlík
4f0f922a50 Add tier machinery support 2024-08-09 13:56:32 +02:00
Miloš Prchlík
7391c5eea6 Add coverage for RHEL-45873
binutils: Avoid creating gaps between adjacent LOAD segments
2024-08-08 19:19:18 +02:00
Miloš Prchlík
54e002d31a The-binutils-package-contains-the-windmc-1-manual: fix wc -l output processing 2024-08-07 10:42:47 +00:00
Miloš Prchlík
77ed99d023 Support gcc-toolset-14 2024-08-06 12:10:33 +00:00
Miloš Prchlík
ad56a109c1 Fix _topdir expansion in rpm rebuilds 2024-08-06 11:09:11 +02:00
Miloš Prchlík
2a1c1558d3 Add shellcheck and a custom linter for test field 2024-07-31 10:01:30 +02:00
Miloš Prchlík
d38c5a7ff5 Add coverage for RHEL-42954
binutils: Disable separate-code for aarch64
2024-07-03 15:11:58 +02:00
Miloš Prchlík
fe07b4e4c8 Add "verifies" links to the upstream test suite 2024-07-02 16:39:34 +02:00
Miloš Prchlík
bb2d005a7c Make RHEL-39953 aarch64-only 2024-07-02 16:35:26 +02:00
Miloš Prchlík
4d3c8a8953 Add coverage for RHEL-42765
Aarch64: Fix DT_RELR with discarded sections
2024-07-02 16:32:50 +02:00
Miloš Prchlík
b9e16fe4fb Add test for RHEL-30268
objcopy doesn't align sections with --section-alignment/--set-section-alignment
2024-07-02 16:08:47 +02:00
Miloš Prchlík
19950b928d Test coverage for RHEL-36305 2024-06-28 19:47:36 +02:00
Miloš Prchlík
32bdc99ae0 More RHEL-10 test cases 2024-06-28 15:28:52 +02:00
Miloš Prchlík
9552328aff Add coverage for RHEL-39953 2024-06-27 14:27:53 +02:00
Miloš Prchlík
f494379f4c Enable the needed repositories on RHEL-10 2024-06-27 11:32:24 +02:00
Miloš Prchlík
b3d0caa90a Support RHEL-9.5 2024-05-21 14:21:22 +02:00
Miloš Prchlík
bbbf15f1b4 Fix yamllint in pre-commit
It did not run correctly.
2024-04-25 23:06:23 +02:00
Miloš Prchlík
f1137fbe40 Add support for Fedora 40 2024-04-09 08:44:53 +02:00
Miloš Prchlík
c322925444 More RHEL-10 fixes 2024-04-02 10:37:57 +02:00
Miloš Prchlík
339bd547f7 Add basic RHEL-10 support 2024-03-26 13:29:04 +01:00
Miloš Prchlík
40f1e47045 Make CPU HW requirement apply on non-s390x only 2024-02-25 19:38:40 +01:00
Miloš Prchlík
c3dc3043f9 Add HW requirements for gating plans 2024-02-23 13:48:48 +01:00
Miloš Prchlík
a8497b043f /tests/bugs/AVX-512-support-in-binutils: limit to x86_64 2024-02-22 18:34:29 +00:00
Miloš Prchlík
015d146dac /tests/rebuilds/kernel: tee build log 2024-02-22 12:17:03 +01:00
Miloš Prchlík
398a2caaab Skip gcc-toolset-13-gprofng in RHEL-9 on ppc64le & s390x 2024-02-14 13:56:35 +01:00
Miloš Prchlík
d1f19f0f88 Fix Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script for RHEL-8.6.0 2024-02-05 15:47:22 +01:00
Miloš Prchlík
03a0db98eb Port tests 2024-01-30 12:08:39 +00:00
Miloš Prchlík
80ee2b7248 Update and fix based on recent gcc-toolset-13 regression runs 2024-01-29 12:18:44 +00:00
Miloš Prchlík
ac2524a04d Fix /tests/supported-targets for Fedora 40 2024-01-29 09:04:30 +01:00
Miloš Prchlík
65f6377e31 Fix plan triggers to reflect reality 2024-01-23 14:22:55 +00:00
Miloš Prchlík
5745d8c2cf /tests/bugs/holes-in-debuginfo: fix reproducer to not dies because of missing declarations 2024-01-23 14:21:57 +00:00
Miloš Prchlík
d48cb1b731 Fedora 38 tweaks 2024-01-23 09:13:04 +01:00
Miloš Prchlík
760121284d Use correct kernel package for rebuild on Fedora 39 and newer 2024-01-19 13:19:33 +00:00
Miloš Prchlík
68d4849898 Move tmpdirs to / on Fedora 39 and newer 2024-01-19 13:19:33 +00:00
Miloš Prchlík
45fcc73ca7 Update requirements for gcc-toolset-13-binutils on RHEL9/CentOS Stream 9 2024-01-17 09:57:33 +01:00
81 changed files with 4653 additions and 104 deletions

View file

@ -6,6 +6,7 @@ repos:
rev: v4.4.0
hooks:
- id: check-added-large-files
args: ["--maxkb=600"]
- id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-merge-conflict
@ -26,9 +27,32 @@ repos:
rev: v1.32.0
hooks:
- id: yamllint
types: [file]
files: "^.*?\\.fmf$"
- repo: https://github.com/teemtee/tmt.git
rev: "1.26.0"
hooks:
- id: tmt-lint
# - repo: https://github.com/koalaman/shellcheck-precommit
# rev: v0.7.2
# hooks:
# - id: shellcheck
# args: ["--severity=warning"] # Optionally only show errors and warnings
- repo: local
hooks:
- id: shellcheck
name: shellcheck
description: Test shell scripts with shellcheck
entry: shellcheck
language: python
types: [shell]
require_serial: true # shellcheck can detect sourcing this way
- id: custom-lint-checks
name: custom-lint-checks
entry: custom-lint-checks.sh
language: script
pass_filenames: false

10
.yamllint Normal file
View file

@ -0,0 +1,10 @@
---
extends: default
rules:
document-start:
present: false
line-length:
max: 120

37
custom-lint-checks.sh Executable file
View file

@ -0,0 +1,37 @@
#!/bin/bash
RETVAL=0
DELIMITER='=============================================================================='
echo -e "\n${DELIMITER}\nChecking WITH_SCL in tests' main.fmf\n"
# shellcheck disable=SC2044
for i in $(find . -name main.fmf); do
[ "$i" = "./tests/dts-probe-binaries/main.fmf" ] && continue
if grep -q '^test:.*test\.sh' "$i"; then
# shellcheck disable=SC2016
if ! grep -qF 'test: "$WITH_SCL ./test.sh"' "$i"; then
echo "$i does not use WITH_SCL in 'test:'"
RETVAL=1
fi
fi
done
echo "$DELIMITER"
echo -e "\n${DELIMITER}\nChecking for '!=' and ',' used together\n"
# shellcheck disable=SC2044
for i in $(find . -name '*.fmf' -type f); do
if grep -qE 'when:.*!=\s*[a-z0-9_]+,' "$i"; then
echo "$i uses '!=' and ',' together in 'when:'"
grep -E 'when:.*!=\s*[a-z0-9_]+,' "$i"
RETVAL=1
fi
done
echo "$DELIMITER"
echo -en "\nOVERALL RESULT: "
[[ "$RETVAL" -eq 0 ]] && echo PASS || echo FAIL
exit $RETVAL

View file

@ -4,21 +4,45 @@
summary: "Build/PR gating tests for binutils"
provision:
hardware:
disk:
- size: ">= 60 GiB"
# Adjust rules
adjust+:
- because: "Plan to be ran when executed locally, or executed by CI system to gate a build or PR."
- because: >-
Plan to be ran when executed locally, in tier runs,
or executed by CI system to gate a build or PR.
# `commit` is used by Fedora CI, CentOS Stream CI, `build` by BaseOS CI
# `compose` is used by Tier machinery
when: >-
trigger is defined
and trigger != commit
and trigger != build
and initiator != compose
enabled: false
- because: "On CentOS Stream 10, CRB repository must be enabled for various BuildRequires"
when: distro == centos-stream-10
prepare+:
- how: shell
script: dnf config-manager --set-enabled crb
- because: "On CentOS Stream 9, CRB repository must be enabled for various BuildRequires"
when: distro == centos-stream-9
prepare+:
- how: shell
script: dnf config-manager --set-enabled crb
- because: "On RHEL-10, CRB and buildroot repositories must be enabled for various BuildRequires"
when: distro == rhel-10
prepare+:
- how: shell
script:
- dnf config-manager --set-enabled rhel-CRB
- dnf config-manager --set-enabled rhel-buildroot
- because: "On RHEL-9, CRB and buildroot repositories must be enabled for various BuildRequires"
when: distro == rhel-9
prepare+:
@ -35,22 +59,20 @@ adjust+:
- dnf config-manager --set-enabled rhel-CRB
- dnf config-manager --set-enabled rhel-buildroot
- when: arch != s390x
provision+:
hardware+:
cpu:
processors: ">= 8"
/common:
discover:
- how: fmf
filter: "tag:gate-build"
exclude: '^/tests/rebuilds/kernel$'
discover:
- how: fmf
filter: "tag:gate-build"
exclude: '^/tests/rebuilds/kernel$'
/kernel-rebuild:
discover:
- how: fmf
filter: "tag:gate-build"
test: '^/tests/rebuilds/kernel$'
# provision:
# - how: virtual
# hardware:
# disk:
# - size: ">= 120 GiB"
# cpu:
# processors: ">= 8"
discover:
- how: fmf
filter: "tag:gate-build"
test: '^/tests/rebuilds/kernel$'

View file

@ -10,12 +10,25 @@ discover:
# Adjust rules
adjust+:
- because: "Plan to be ran when executed locally, or executed by CI system after updating an erratum."
- because: >-
Plan to be ran when executed locally, in tier runs,
or executed by CI system after updating an erratum/bodhi update.
# `build` is used by Bodhi
# `compose` is used by Tier machinery
when: >-
trigger is defined
and trigger != update
and trigger != build
and initiator != compose
enabled: false
- because: "On RHEL-10, CRB and buildroot repositories must be enabled for various BuildRequires"
when: distro == rhel-10
prepare+:
- how: shell
script:
- dnf config-manager --set-enabled rhel-CRB
- dnf config-manager --set-enabled rhel-buildroot
- because: "On CentOS Stream 9, CRB repository must be enabled for various BuildRequires"
when: distro == centos-stream-9
prepare+:

View file

@ -0,0 +1,13 @@
summary: Assembles a procedure with AVX-512 instructions.
link+:
- verifies: https://bugzilla.redhat.com/show_bug.cgi?id=1140375
contact+:
- Arjun Shankar <ashankar@redhat.com>
duration: 5m
adjust+:
- when: arch != x86_64
enabled: false

View file

@ -0,0 +1,56 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/binutils/Regression/bz1140375-AVX-512-support-in-binutils
# Description: Assembles a procedure with AVX-512 instructions.
# Author: Arjun Shankar <ashankar@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc.
#
# 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
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers tst-auditmod10a.s
rlPhaseEnd
rlPhaseStartTest
rlRun "as tst-auditmod10a.s -o tst-auditmod10a.o"
rlAssertExists "tst-auditmod10a.o"
rlRun "objdump -d tst-auditmod10a.o > tst-auditmod10a.disas"
rlLog "Interesting instructions:"
rlLog "$(grep zmm tst-auditmod10a.disas)"
rlAssertGrep "vmovdqa64" tst-auditmod10a.disas
rlAssertGrep "vpbroadcastq" tst-auditmod10a.disas
rlAssertGrep "vpxord" tst-auditmod10a.disas
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

File diff suppressed because it is too large Load diff

View file

@ -7,3 +7,23 @@ contact+:
link+:
- verifies: https://bugzilla.redhat.com/show_bug.cgi?id=241252
environment+:
DWARF5: "yes"
adjust+:
- when: distro == rhel-8.10
environment+:
DWARF5: "no"
- when: distro == rhel-8.6.0
environment+:
DWARF5: "no"
- when: distro == rhel-8 and collection == gcc-toolset-14
environment+:
DWARF5: "no"
- when: distro == rhel-8 and collection == gcc-toolset-13
environment+:
DWARF5: "no"

View file

@ -28,8 +28,15 @@
rlJournalStart
rlPhaseStartSetup
buTestHeader
rlLogInfo "DWARF5=$DWARF5"
buEnterTmpDir
buCopyReproducers "x.i y.i"
if [ "$DWARF5" = "yes" ]; then
rlRun "SECTION_NAME=debug_rnglists"
else
rlRun "SECTION_NAME=debug_ranges"
fi
rlPhaseEnd
rlPhaseStartTest
@ -37,14 +44,15 @@ rlJournalStart
rlRun "gcc -c -O2 -fpic -o y.o y.i -g" 0 "Compile test case 'y'"
rlRun "gcc -Wl,--unique -o x [xy].o" 0 "Link 'x' and 'y'"
# Note: debug_ranges replaced by debug_rnglist (since DWARF 5 in Fedora 34)
rlLogInfo 'x.o + y.o:'
rlLogInfo "$( readelf -WS [xy].o | grep debug_rnglist | grep PROGBITS )"
rlRun "readelf -WS [xy].o"
rlRun "readelf -WS x"
rlLogInfo "$( readelf -WS [xy].o | grep "$SECTION_NAME" | grep PROGBITS )"
rlLogInfo 'x:'
rlLogInfo "$( readelf -WS x | grep debug_rnglist )"
rlLogInfo "$( readelf -WS x | grep "$SECTION_NAME" )"
if [ $( readelf -WS [xy].o | grep debug_rnglist | grep PROGBITS | wc -l ) -eq 2 ] \
&& [ $( readelf -WS x | grep debug_rnglist | wc -l ) -eq 1 ]; then
if [ "$( readelf -WS [xy].o | grep "$SECTION_NAME" | grep -c PROGBITS )" -eq 2 ] \
&& [ "$( readelf -WS x | grep -c "$SECTION_NAME" )" -eq 1 ]; then
rlPass "Debug ranges sections were merged"
else
rlFail "Debug ranges sections were not merged"

View file

@ -0,0 +1,15 @@
summary: Avoid creating gaps between adjacent LOAD segments
duration: 24h
require+:
- rpm-build
- tree
- /usr/bin/python3
link+:
- verifies: https://issues.redhat.com/browse/RHEL-45873
adjust+:
- when: distro < rhel-9.5
enabled: false

View file

@ -0,0 +1,89 @@
#!/usr/bin/env sh
ITER=${1:-10000}
echo "Testing with $(rpm -q binutils)..."
pagesz=$(getconf PAGESIZE)
echo "Testing with a page size of $pagesz"
GLIBC_SCRIPTS="$(readlink -f $(rpm --define="_topdir $TmpDir" --eval=%_builddir)/glibc-*/scripts)"
test() {
y=$(($1 * 7))
f=obj$y
gcc -O2 -fpie -pie -DN=$y t.c -Wl,-z,relro,-z,now -o $f
PYTHONPATH="$GLIBC_SCRIPTS:$PYTHONPATH" python3 tst-load-segment-gaps.py $f >> verbose.log
ret=$?
rm $f
return $ret
}
rm -f verbose.log
cat > t.c <<EOF
#include <stdio.h>
#include <stdlib.h>
#include <err.h>
#include <sys/prctl.h>
#include <unistd.h>
const char *const array[] = {
[N] = "value",
};
#define BUF_SZ 2048
void pmap() {
FILE *f;
size_t bytes;
char *buffer = malloc(BUF_SZ);
if (buffer == NULL)
err(EXIT_FAILURE, NULL);
f = fopen("/proc/self/maps", "r");
if (f == NULL)
err(EXIT_FAILURE, NULL);
while ((bytes = fread(buffer, 1, BUF_SZ, f)) > 0)
fwrite(buffer, 1, bytes, stdout);
if (ferror(f))
perror(NULL);
fclose(f);
free(buffer);
}
int main (void)
{
prctl(PR_SET_DUMPABLE, 0,0, 0);
char **volatile p = (char **)array;
pmap();
__builtin_puts(p[N]);
}
EOF
errors=0
# Print a blank line that we will rewrite later.
echo
for x in $(seq $ITER) ; do
p=$(($x * 100 / $ITER))
echo -e '\e[1A\e[K Progress:' "$p% Errors: $errors"
if ! test $x; then
errors=$(($errors + 1))
fi
done
rm t.c
if [[ "$errors" -eq 0 ]]; then
echo "The test succeeded!"
else
percent=$(($errors * 100 / $ITER))
echo "Error: tests had a $percent% failure rate" >&2
exit 1
fi

View file

@ -0,0 +1,27 @@
#!/bin/bash
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers "repro.sh tst-load-segment-gaps.py"
buPrepareSRPM "glibc"
buConfigureSRPM "glibc"
rlPhaseEnd
rlPhaseStartTest
rlRun "./repro.sh"
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -0,0 +1,74 @@
#!/usr/bin/python3
# Verify that objects do not contain gaps in load segments.
# Copyright (C) 2024 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
#
# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# The GNU C Library 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
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <https://www.gnu.org/licenses/>.
import argparse
import os.path
import sys
# Make available glibc Python modules.
sys.path.append(os.path.join(
os.path.dirname(os.path.realpath(__file__)), os.path.pardir, 'scripts'))
import glibcelf
def rounddown(val, align):
assert (align & (align - 1)) == 0, align
return val & -align
def roundup(val, align):
assert (align & (align - 1)) == 0, align
return (val + align - 1) & -align
errors = False
def process(path, img):
global errors
loads = [phdr for phdr in img.phdrs()
if phdr.p_type == glibcelf.Pt.PT_LOAD]
if not loads:
# Nothing ot check.
return
alignments = [phdr.p_align for phdr in loads if phdr.p_align > 0]
if alignments:
align = min(alignments)
else:
print('error: cannot infer page size')
errors = True
align = 4096
print('info: inferred page size:', align)
current_address = None
for idx, phdr in enumerate(loads):
this_address = rounddown(phdr.p_vaddr, align)
next_address = roundup(phdr.p_vaddr + phdr.p_memsz, align)
print('info: LOAD segment {}: address 0x{:x}, size {},'
' range [0x{:x},0x{:x})'
.format(idx, phdr.p_vaddr, phdr.p_memsz,
this_address, next_address))
if current_address is not None:
gap = this_address - current_address
if gap != 0:
errors = True
print('error: gap between load segments: {} bytes'.format(gap))
current_address = next_address
for path in sys.argv[1:]:
img = glibcelf.Image.readfile(path)
process(path, img)
if errors:
sys.exit(1)

View file

@ -0,0 +1,13 @@
summary: Backport .relro_padding entsize fix
duration: 5m
require+:
- xz
link+:
- verifies: https://issues.redhat.com/browse/RHEL-50536
adjust+:
- when: distro != rhel-9 or distro < rhel-9.5.0
enabled: false

View file

@ -0,0 +1,28 @@
#!/bin/bash
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers "libclang.so.18.1.xz"
rlRun "unxz $TmpDir/libclang.so.18.1.xz"
rlPhaseEnd
rlPhaseStartTest
rlRun "objcopy $TmpDir/libclang.so.18.1 $TmpDir/libclang.so.18.1.copy"
rlRun "readelf --section-headers $TmpDir/libclang.so.18.1"
rlRun -s "readelf --section-headers $TmpDir/libclang.so.18.1.copy"
rlAssertEquals "entsize has expected value" "00" "$(grep -E '.relro_padding' "$rlRun_LOG" | awk '{print $7}')"
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -0,0 +1,12 @@
summary: Backport selective allocation of PGSTE to avoid
description: |
Backport selective allocation of PGSTE to avoid global vm.allocate_pgste
link+:
- verifies: https://bugzilla.redhat.com/show_bug.cgi?id=1140375
duration: 15m
adjust+:
- when: arch != s390x
enabled: false

View file

@ -0,0 +1,4 @@
.text
.global fred
fred:
nop

View file

@ -0,0 +1,52 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/binutils/Regression/bz1485398-Backport-selective-allocation-of-PGSTE-to-avoid
# Description: Test for BZ#1485398 (Backport selective allocation of PGSTE to avoid)
# Author: Milos Prchlik <mprchlik@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
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers repr.s
rlPhaseEnd
rlPhaseStartTest
rlRun "as repr.s -o repr.o"
rlRun "ld -e 0 repr.o -o repr.no-pgste.exe"
rlRun "ld -e 0 repr.o -o repr.pgste.exe --s390-pgste"
rlRun "readelf -l repr.no-pgste.exe | grep PGSTE" 1
rlRun "readelf -l repr.pgste.exe | grep PGSTE" 0
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -46,7 +46,7 @@ rlJournalStart
rlPhaseStartTest
rlRun "gcc v.c -fPIC -shared -olibv.so"
rlRun "gcc u.c -fPIC -shared -olibu.so"
rlRun "gcc t.c -D_GNU_SOURCE -L. -lu -lv -ldl -Wl,-rpath,`pwd` &> out"
rlRun "gcc t.c -D_GNU_SOURCE -L. -lu -lv -ldl -Wl,-rpath,$(pwd) &> out"
rlLogInfo "$(cat out)"
rlAssertNotGrep "warning: hidden symbol .* is referenced" out
rlRun "./a.out"

View file

@ -0,0 +1,10 @@
summary: Disable separate-code for aarch64
duration: 10m
link+:
- verifies: https://issues.redhat.com/browse/RHEL-42954
adjust+:
- when: arch == x86_64
enabled: false

View file

@ -0,0 +1,5 @@
extern int printf (const char *, ...);
int i = 42;
const int * j = & i;
int main (void) { return printf ("hello world %d\n", * j); }

View file

@ -0,0 +1,31 @@
#!/bin/bash
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers "reproducer.c"
rlPhaseEnd
rlPhaseStartTest
rlRun "gcc -O0 -o reproducer reproducer.c"
rlRun "readelf -lW ./reproducer |& tee output"
rlAssertEquals "only two LOAD sections are expected" "$(grep -c "LOAD" output)" "2"
rlRun "gcc -O0 -o reproducer -Wl,-z,separate-code reproducer.c"
rlRun "readelf -lW ./reproducer |& tee output"
rlAssertEquals "four LOAD sections are expected" "$(grep -c "LOAD" output)" "4"
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -0,0 +1,10 @@
summary: ELFv2 @localentry not supported by RHEL7.1 LE
link+:
- verifies: https://bugzilla.redhat.com/show_bug.cgi?id=1194164
duration: 15m
adjust+:
- when: arch != ppc64le and arch != ppc64
enabled: false

View file

@ -0,0 +1,49 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/binutils/Regression/bz1194164-ELFv2-localentry-not-supported-by-RHEL7-1-LE
# Description: Test for BZ#1194164 (ELFv2 @localentry not supported by RHEL7.1 LE)
# Author: Milos Prchlik <mprchlik@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2015 Red Hat, Inc.
#
# 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
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
rlRun "echo '.quad foo@localentry' > reproducer.s"
rlPhaseEnd
rlPhaseStartTest
rlRun "as -a64 reproducer.s"
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -0,0 +1,20 @@
summary: Static linking results in misleading error message
description: |+
This:
/usr/bin/ld: cannot find -lc
becomes this:
/usr/bin/ld: cannot find -lc
/usr/bin/ld: have you installed the static version of the c library ?
duration: 5m
link:
- verifies: https://issues.redhat.com/browse/RHEL-69758
adjust+:
- when: distro < rhel-9.6
enabled: false

View file

@ -0,0 +1,27 @@
#!/bin/bash
# source the test script helpers
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
rlRun "echo 'int main(int argc, char **argv) { return 1; }' > main.c"
rlPhaseEnd
rlPhaseStartTest
rlRun -s "gcc -static -lfoo" 1
rlAssertGrep "cannot find -lfoo" "$rlRun_LOG"
rlAssertGrep "have you installed the static version of the foo library ?" "$rlRun_LOG"
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -40,13 +40,13 @@ rlJournalStart
rlPhaseEnd
for ld in $( ls {/emul/ia32-linux,}/lib*/ld-2* 2> /dev/null); do
rlPhaseStartTest "${ld} from $( rpmquery -f ${ld} )"
filename="$( basename ${ld} ).readline"
rlRun "readelf -S ${ld} > $filename" 0 "[$( basename ${ld} )] Write section headers of ${ld}"
rlPhaseStartTest "$ld from $( rpmquery -f "$ld" )"
filename="$( basename "$ld" ).readline"
rlRun "readelf -S $ld > $filename" 0 "[$( basename "$ld" )] Write section headers of $ld"
if ! [[ "$( rlGetArch )" == "ia64" && ! "${ld}" =~ "emul" ]]; then
rlAssertGrep ".stapsdt.base " $filename || rlLogError "This may be problem for SystemTap"
rlAssertGrep ".stapsdt.base " "$filename" || rlLogError "This may be problem for SystemTap"
fi
rlAssertNotGrep ".stapsdt.base.1" $filename || rlLogError "This may be problem for SystemTap"
rlAssertNotGrep ".stapsdt.base.1" "$filename" || rlLogError "This may be problem for SystemTap"
rlPhaseEnd
done

View file

@ -9,6 +9,18 @@ require+:
- gdb
adjust+:
- when: collection == gcc-toolset-14 and distro == rhel-9
require+:
- gdb
environment+:
REQUIRES: gdb
- when: collection == gcc-toolset-14 and distro == rhel-8
require+:
- gcc-toolset-14-gdb
environment+:
REQUIRES: gcc-toolset-14-gdb
- when: collection == gcc-toolset-13
require+:
- gcc-toolset-13-gdb

View file

@ -40,7 +40,7 @@ rlJournalStart
rlPhaseStartTest
rlRun "rpm -ql $PACKAGES | grep windmc > windmc.txt" 0,1
rlLogInfo "$(cat windmc.txt)"
rlRun "FILE_CNT=`cat windmc.txt | wc -l`"
rlRun "FILE_CNT=$(wc -l windmc.txt | awk '{print $1}')"
if [ "$FILE_CNT" == "1" ]; then
rlFail "Either windmg manpage or binary is present - both options are wrong."
elif [ "$FILE_CNT" == "2" ]; then

View file

@ -0,0 +1,10 @@
summary: Backport the -error-execstack option to RHEL9
duration: 5m
link:
- verifies: https://issues.redhat.com/browse/RHEL-59801
adjust+:
- when: distro < rhel-9.6.0
enabled: false

View file

@ -0,0 +1,7 @@
extern int foo (int (*)(int));
int bar (int arg)
{
int baz (int arg2) { return arg2 * arg; }
return foo (& baz) + arg;
}

View file

@ -0,0 +1,27 @@
#!/bin/bash
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers reproducer.c
rlPhaseEnd
rlPhaseStartTest "Verify the default is a warning"
rlRun -s "gcc -o reproducer reproducer.c" 1
rlAssertGrep "warning: .* requires executable stack" $rlRun_LOG
rlPhaseEnd
rlPhaseStartTest "Verify error an be requested"
rlRun -s "gcc -o reproducer reproducer.c -Wl,--error-execstack" 1
rlAssertGrep "error: .* is triggering the generation of an executable stack" $rlRun_LOG
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -0,0 +1,10 @@
summary: Backport the -error-execstack option to RHEL9
duration: 5m
link:
- verifies: https://issues.redhat.com/browse/RHEL-59801
adjust+:
- when: distro < rhel-9.6.0
enabled: false

View file

@ -0,0 +1,4 @@
int main(int argc, char **argv)
{
return 0;
}

View file

@ -0,0 +1,5 @@
SECTIONS
{
.text : { *(.text) }
.data : { *(.data) }
}

View file

@ -0,0 +1,27 @@
#!/bin/bash
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers "reproducer.c script.ld"
rlPhaseEnd
rlPhaseStartTest "Verify the default is a warning"
rlRun -s "gcc -o reproducer reproducer.c -Wl,-T,script.ld" 1
rlAssertGrep "warning: reproducer has a LOAD segment with RWX permissions" $rlRun_LOG
rlPhaseEnd
rlPhaseStartTest "Verify error an be requested"
rlRun -s "gcc -o reproducer reproducer.c -Wl,-T,script.ld -Wl,--error-rwx-segments" 1
rlAssertGrep "error: reproducer has a LOAD segment with RWX permissions" $rlRun_LOG
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -0,0 +1,13 @@
summary: Checks that 'as' supports CRC32 instructions on aarch64
link+:
- verifies: https://bugzilla.redhat.com/show_bug.cgi?id=1179810
contact+:
- Arjun Shankar <ashankar@redhat.com>
duration: 5m
adjust+:
- when: arch != aarch64
enabled: false

View file

@ -0,0 +1,5 @@
int
main (void)
{
return 0;
}

View file

@ -0,0 +1,51 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/binutils/Regression/bz1179810-aarch64-crc32-instruction-support
# Description: Checks that 'as' supports CRC32 instructions on aarch64
# Author: Arjun Shankar <ashankar@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2015 Red Hat, Inc.
#
# 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
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers minimal.c
rlPhaseEnd
rlPhaseStartTest
rlRun "gcc -Wa,-mcpu=generic+crc -o minimal minimal.c"
rlRun "./minimal" # this won't generate any CRC32 instructions, it's
# just a sanity test.
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -36,7 +36,7 @@ rlJournalStart
rlPhaseEnd
rlPhaseStartTest
rpm -qd $PACKAGES | grep 'man' | while read -r m; do
rpm -qd "$PACKAGES" | grep 'man' | while read -r m; do
rlLog "$m"
man "$m" | col -b > man.txt
rlRun "[[ $(wc -c <man.txt) -ge 2000 ]]"

View file

@ -56,7 +56,7 @@ rlJournalStart
if [ $HAS_SUPPORT = 1 ]; then
rlPhaseStartTest
rlAssertExists $KO_FILE
rlAssertExists "$KO_FILE"
rlRun "set -o pipefail" 0 "Conserve the non-zero return value through the pipe"
# As suggested by nickc@redhat.com:

View file

@ -1,4 +1,4 @@
summary: bytecode stream in file /opt/rh/gcc-toolset-13/root/usr/lib64/libbfd.a generated with LTO version 11.3 instead of the expected 13.0
summary: bytecode stream in file /opt/rh/gcc-toolset-13/root/usr/lib64/libbfd.a generated with LTO version 11.3
duration: 10m

View file

@ -9,8 +9,8 @@ link+:
- verifies: https://bugzilla.redhat.com/show_bug.cgi?id=1366145
adjust+:
# DWZ is not available in RHEL-6 - unless you have collection installed,
# then you can use (and test) dwz from collection package.
# DWZ is not available in RHEL-6 - unless you have collection installed,
# then you can use (and test) dwz from collection package.
- when: distro == rhel-6 and collection is not defined
enabled: false
@ -20,6 +20,12 @@ adjust+:
environment+:
REQUIRES: dwz
- when: collection == gcc-toolset-14
require+:
- gcc-toolset-14-dwz
environment+:
REQUIRES: gcc-toolset-14-dwz
- when: collection == gcc-toolset-13
require+:
- gcc-toolset-13-dwz

View file

@ -42,10 +42,10 @@ rlJournalStart
if [ "${EABI_file}" ]; then
rlLog "EABI_file = $EABI_file"
rlRun "cp -v $EABI_file $TmpDir" 0 "Copy file with GNU/Linux EABI"
local_binary="$(basename ${EABI_file})"
rlAssertExists ${local_binary}
rlRun "strip -R .comment ${local_binary}"
file $local_binary > out
local_binary="$(basename "$EABI_file")"
rlAssertExists "$local_binary"
rlRun "strip -R .comment $local_binary"
file "$local_binary" > out
rlAssertNotGrep "(SYSV)" out
else
rlDie "There's nothing to test."

View file

@ -1,3 +1,6 @@
extern void k(int);
extern void l(int, int*);
void f(int i) {
k(i);
}

View file

@ -47,7 +47,7 @@ rlJournalStart
rlLogInfo "$(cat out)"
rlAssertGrep "SONAME must not be empty string; ignored" out
rlRun "objdump -p libfoo.so | grep SONAME | awk '{print \$2}' > soname"
if [ "`stat -c '%s' soname`" != "0" ]; then
if [ "$(stat -c '%s' soname)" != "0" ]; then
rlLogInfo "SONAME='$(cat soname)'"
rlFail "Detected SONAME is empty"
fi

View file

@ -0,0 +1,13 @@
summary: objcopy doesn't align sections with --section-alignment/--set-section-alignment
duration: 15m
require+:
- python3-virt-firmware
link+:
- verifies: https://issues.redhat.com/browse/RHEL-30268
adjust+:
- when: distro < rhel-9
enabled: false

View file

@ -0,0 +1,15 @@
#!/bin/bash
set -eu
while read -r line; do
section="$(echo "$line" | sed -r 's/^.+\(\.([a-z]+)\)$/\1/')"
address="$(echo "$line" | sed -r 's/^.+ file (0x[0-9a-z]+).+$/\1/')"
echo "$section @$address"
if ((address % 512 != 0)); then
echo "Section $section alignment is not multiple of 512"
exit 1
fi
done < <(pe-inspect "$1" | grep --text "section")
echo "All OK"

View file

@ -0,0 +1,39 @@
#!/bin/bash
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
buEnterTmpDir
buCopyReproducers "repro.sh linuxx64.efi.stub linuxx64.elf.stub"
rlPhaseEnd
rlPhaseStartTest
rlRun "objcopy -v --file-alignment=512 --section-alignment=512 --target=efi-app-x86_64 -j .text -j .data -j .dynamic linuxx64.elf.stub foo.pe"
rlRun "pe-inspect foo.pe"
rlRun "./repro.sh foo.pe"
rlRun "objcopy -v --file-alignment=512 --section-alignment=512 --target=efi-app-x86_64 -j .text -j .data -j .dynamic -j .sbat linuxx64.elf.stub foo.pe"
rlRun "pe-inspect foo.pe"
rlRun "./repro.sh foo.pe"
rlRun "objcopy -v --file-alignment=512 --section-alignment=512 --target=efi-app-x86_64 -j .text -j .data -j .dynamic linuxx64.efi.stub foo.pe"
rlRun "pe-inspect foo.pe"
rlRun "./repro.sh foo.pe"
rlRun "objcopy -v --file-alignment=512 --section-alignment=512 --target=efi-app-x86_64 -j .text -j .data -j .dynamic -j .sbat linuxx64.efi.stub foo.pe"
rlRun "pe-inspect foo.pe"
rlRun "./repro.sh foo.pe"
rlPhaseEnd
rlPhaseStartCleanup
buExitTmpDir
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View file

@ -35,11 +35,11 @@ __have_kernel_debuginfo () {
local RELEASE ARCH
rlRun "RELEASE=$(uname -r)"
rlRun "ARCH=$(uname -m)"
if ! rpm -q kernel-debuginfo-$RELEASE &>/dev/null; then
if ! rpm -q "kernel-debuginfo-$RELEASE" &>/dev/null; then
rlLogInfo 'kernel-debuginfo not present, trying to install it'
rlRun "dnf install -y --enablerepo=\*debuginfo kernel-debuginfo-$RELEASE"
fi
rlAssertRpm kernel-debuginfo-$RELEASE
rlAssertRpm "kernel-debuginfo-$RELEASE"
}
rlJournalStart

View file

@ -5,7 +5,7 @@ description: |
stripping with strip works fine.
contact+:
- Michal Nowak <mnowak@redhat.com>
- Michal Nowak <mnowak@redhat.com>
require+:
- glibc-static

View file

@ -43,6 +43,16 @@ rlJournalStart
rlRun "strings -n 0 2>&1 | tee output"
if rlIsFedora "> 39"; then
rlAssertGrep "minimum string length is too small: 0" output
elif rlIsCentOS ">= 10"; then
rlAssertGrep "minimum string length is too small: 0" output
elif rlIsRHEL ">= 10"; then
rlAssertGrep "minimum string length is too small: 0" output
elif rlIsRHEL ">= 10" && [ "$TOOLSET" = "gcc-toolset-14" ]; then
rlAssertGrep "minimum string length is too small: 0" output
else
rlAssertGrep "invalid minimum string length 0" output
fi
@ -52,6 +62,16 @@ rlJournalStart
rlRun "strings --bytes 0 2>&1 | tee output"
if rlIsFedora "> 39"; then
rlAssertGrep "minimum string length is too small: 0" output
elif rlIsCentOS ">= 10"; then
rlAssertGrep "minimum string length is too small: 0" output
elif rlIsRHEL ">= 10"; then
rlAssertGrep "minimum string length is too small: 0" output
elif rlIsRHEL ">= 10" && [ "$TOOLSET" = "gcc-toolset-14" ]; then
rlAssertGrep "minimum string length is too small: 0" output
else
rlAssertGrep "invalid minimum string length 0" output
fi

View file

@ -24,6 +24,18 @@ require+:
environment+:
REQUIRES: "binutils gcc gcc-c++ glibc gdb"
# Older format of undefined symbols, the second `@` has been dropped in
# https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=3f2e9699234ca31d083bc93ea6e03903f10baeaf
LEGACY_UNDEFINED_SYMBOLS: "no"
adjust+:
- when: collection is not defined
enabled: false
- when: distro == rhel-8 and collection == gcc-toolset-14
environment+:
LEGACY_UNDEFINED_SYMBOLS: "yes"
- when: distro == rhel-8 and collection == gcc-toolset-13
environment+:
LEGACY_UNDEFINED_SYMBOLS: "yes"

View file

@ -61,6 +61,7 @@ rlJournalStart
rlLogInfo "READELF=$READELF"
rlLogInfo "SIZE=$SIZE"
rlLogInfo "STRINGS=$STRINGS"
rlLogInfo "LEGACY_UNDEFINED_SYMBOLS=$LEGACY_UNDEFINED_SYMBOLS"
buEnterTmpDir
@ -184,7 +185,7 @@ fi
rlAssertGrep "virtual2.C" o
fi
rlAssertGrep "_ZN1BD1Ev" o
if [ "$COLLECTIONS" != "devtoolset-11" ]; then
if [ "$TOOLSET" != "devtoolset-11" ]; then
rlAssertGrep ".dynstr" o
fi
# On PPC, we have .toc instead.
@ -196,8 +197,14 @@ fi
if [ "`rlGetPrimaryArch`" != "ppc64" ] || [ ! rlIsRHEL 7 ]; then
rlAssertGrep "__gmon_start__" u
fi
rlAssertGrep "printf@GLIBC" u
rlAssertGrep "__libc_start_main@GLIBC" u
# Older format, the second `@` has been dropped in https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=3f2e9699234ca31d083bc93ea6e03903f10baeaf
if [ "$LEGACY_UNDEFINED_SYMBOLS" = "yes" ]; then
rlAssertGrep "printf@@GLIBC" u
rlAssertGrep "__libc_start_main@@GLIBC" u
else
rlAssertGrep "printf@GLIBC" u
rlAssertGrep "__libc_start_main@GLIBC" u
fi
# Try -P --size-sort.
rlRun "nm -P --size-sort localplt > p"
if test $(uname -m) = "ppc64" -a $(rlGetDistroRelease) -gt 5; then

View file

@ -34,6 +34,7 @@ function buTestHeader () {
rlLogInfo "PACKAGES=$PACKAGES"
rlLogInfo "REQUIRES=$REQUIRES"
rlLogInfo "COLLECTIONS=$COLLECTIONS"
rlLogInfo "TOOLSET=$TOOLSET"
rlLogInfo "COLLECTION_PACKAGES=$COLLECTION_PACKAGES"
rlLogInfo "LD=$_LD"
rlLogInfo "GCC=$_GCC"
@ -70,9 +71,9 @@ function buTestHeader () {
function buEnterTmpDir () {
rlRun "export TmpDir=$(mktemp -d -p $BU_TMPDIR_PARENT)" 0 "Creating tmp directory"
rlRun "export TmpDir=$(mktemp -d -p "$BU_TMPDIR_PARENT")" 0 "Creating tmp directory"
if [ ! -z "$BU_AS_TEST_USER" ]; then
if [ -n "$BU_AS_TEST_USER" ]; then
username="${1:-$BU_TEST_USER}"
buEnterTestUser "$username"
@ -91,7 +92,7 @@ function buExitTmpDir () {
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
fi
if [ ! -z "$BU_AS_TEST_USER" ]; then
if [ -n "$BU_AS_TEST_USER" ]; then
username="${1:-$BU_TEST_USER}"
buExitTestUser "$username"
@ -105,18 +106,29 @@ function buPrepareSRPM () {
rlFetchSrcForInstalled "$installed_rpm"
rlRun "export SRPM=`find . -name '*.src.rpm'`"
rlRun "export SRPM=$(find . -name '*.src.rpm')"
rlRun "rpm -ivh --define=\"_topdir $TmpDir\" $SRPM"
rlRun "export SPECDIR=`rpm --define=\"_topdir $TmpDir\" --eval=%_specdir`"
rlRun "export SPECFILE=`find $SPECDIR/ -name '*.spec'`"
rlRun "export SPECDIR=$(rpm --define="_topdir $TmpDir" --eval=%_specdir)"
rlRun "export SPECFILE=$(find "$SPECDIR/" -name '*.spec')"
rlRun "yum-builddep -y --define=\"_topdir $TmpDir\" $builddep_options $SPECFILE"
}
function buConfigureSRPM () {
if [ -n "$BU_AS_TEST_USER" ]; then
username="${1:-$BU_TEST_USER}"
rlRun "su - $username -c 'rpmbuild -bp --define=\"_topdir $TmpDir\" $SPECFILE'"
else
rlRun " rpmbuild -bp --define=\"_topdir $TmpDir\" $SPECFILE"
fi
}
function buBuildSRPM () {
if [ ! -z "$BU_AS_TEST_USER" ]; then
if [ -n "$BU_AS_TEST_USER" ]; then
username="${1:-$BU_TEST_USER}"
rlRun "su - $username -c 'rpmbuild -bc --define=\"_topdir $TmpDir\" $SPECFILE'"

View file

@ -42,7 +42,12 @@ require+:
# Adjust rules
adjust+:
- because: "/tmp is not big enough to hold tmpdir for tests"
when: distro == fedora-rawhide,rhel-9
when: distro >= rhel-9
environment+:
BU_TMPDIR_PARENT: "/"
- because: "/tmp is not big enough to hold tmpdir for tests"
when: distro >= fedora-38
environment+:
BU_TMPDIR_PARENT: "/"
@ -60,13 +65,35 @@ adjust+:
# Environments:
#
# * `PACKAGES` shall be only `binutils` or its collection variant and nothing else
# * `TOOLSET` shall be either the collection name when testing a collection build,
# or left unset. Note that `COLLECTIONS` is left unset completely, it's not used
# by any test
# * `_REQUIRES` lists the default requirements - `gcc`, `gcc-c++` and so on
# * `WITH_SCL` shall be set to `scl enable ...` command to enable the collection before
# running the test script itself, or left unset for non-collection environments
# * `BINUTILS_PACKAGE`, `GCC_PACKAGE` list packages providing active binutils and gcc
# in the test environment. `BINUTILS_PACKAGE` is usually the same as `PACKAGES` but
# but complements `GCC_PACKAGE`
# * `COLLECTION_PACKAGES` lists other binutils packages in the collection
#
# RHEL-10 / no collection
- when: distro == rhel-10 and collection is not defined
require+:
- binutils
- binutils-devel
- binutils-gold
- glibc
- gcc
- gcc-c++
- annobin-annocheck
- annobin-plugin-gcc
environment+:
PACKAGES: binutils
_REQUIRES: gcc gcc-c++ glibc annobin-annocheck annobin-plugin-gcc
BINUTILS_PACKAGE: binutils
GCC_PACKAGE: gcc
# RHEL-9 / no collection
- when: distro == rhel-9 and collection is not defined
require+:
@ -83,8 +110,64 @@ adjust+:
BINUTILS_PACKAGE: binutils
GCC_PACKAGE: gcc
# RHEL-9 / gcc-toolset-14
- when: distro == rhel-9 and collection == gcc-toolset-14 and arch == x86_64,aarch64
require+:
- gcc-toolset-14-binutils
- gcc-toolset-14-binutils-devel
- gcc-toolset-14-binutils-gold
- gcc-toolset-14-binutils-gprofng
- gcc-toolset-14-gcc
- gcc-toolset-14-gcc-c++
- gcc-toolset-14-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-14-binutils
TOOLSET: gcc-toolset-14
_REQUIRES: gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-14
BINUTILS_PACKAGE: gcc-toolset-14-binutils
GCC_PACKAGE: gcc-toolset-14-gcc
# yamllint disable-line rule:line-length
COLLECTION_PACKAGES: gcc-toolset-14-binutils gcc-toolset-14-binutils-devel gcc-toolset-14-binutils-gold gcc-toolset-14-binutils-gprofng
- when: distro == rhel-9 and collection == gcc-toolset-14 and arch != x86_64 and arch != aarch64
require+:
- gcc-toolset-14-binutils
- gcc-toolset-14-binutils-devel
- gcc-toolset-14-binutils-gold
- gcc-toolset-14-gcc
- gcc-toolset-14-gcc-c++
- gcc-toolset-14-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-14-binutils
TOOLSET: gcc-toolset-14
_REQUIRES: gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-14
BINUTILS_PACKAGE: gcc-toolset-14-binutils
GCC_PACKAGE: gcc-toolset-14-gcc
COLLECTION_PACKAGES: gcc-toolset-14-binutils gcc-toolset-14-binutils-devel gcc-toolset-14-binutils-gold
# RHEL-9 / gcc-toolset-13
- when: distro == rhel-9 and collection == gcc-toolset-13
- when: distro == rhel-9 and collection == gcc-toolset-13 and arch == x86_64,aarch64
require+:
- gcc-toolset-13-binutils
- gcc-toolset-13-binutils-devel
- gcc-toolset-13-binutils-gold
- gcc-toolset-13-binutils-gprofng
- gcc-toolset-13-gcc
- gcc-toolset-13-gcc-c++
- gcc-toolset-13-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-13-binutils
TOOLSET: gcc-toolset-13
_REQUIRES: gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ gcc-toolset-13-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-13
BINUTILS_PACKAGE: gcc-toolset-13-binutils
GCC_PACKAGE: gcc-toolset-13-gcc
# yamllint disable-line rule:line-length
COLLECTION_PACKAGES: gcc-toolset-13-binutils gcc-toolset-13-binutils-devel gcc-toolset-13-binutils-gold gcc-toolset-13-binutils-gprofng
- when: distro == rhel-9 and collection == gcc-toolset-13 and arch != x86_64 and arch != aarch64
require+:
- gcc-toolset-13-binutils
- gcc-toolset-13-binutils-devel
@ -94,6 +177,7 @@ adjust+:
- gcc-toolset-13-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-13-binutils
TOOLSET: gcc-toolset-13
_REQUIRES: gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ gcc-toolset-13-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-13
BINUTILS_PACKAGE: gcc-toolset-13-binutils
@ -111,6 +195,7 @@ adjust+:
- gcc-toolset-12-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-12-binutils
TOOLSET: gcc-toolset-12
_REQUIRES: gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-12
BINUTILS_PACKAGE: gcc-toolset-12-binutils
@ -135,6 +220,43 @@ adjust+:
BINUTILS_PACKAGE: binutils
GCC_PACKAGE: gcc
# RHEL-8 / gcc-toolset-14
- when: distro == rhel-8 and collection == gcc-toolset-14 and arch == x86_64,aarch64
require+:
- gcc-toolset-14-binutils
- gcc-toolset-14-binutils-devel
- gcc-toolset-14-binutils-gold
- gcc-toolset-14-binutils-gprofng
- gcc-toolset-14-gcc
- gcc-toolset-14-gcc-c++
- gcc-toolset-14-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-14-binutils
TOOLSET: gcc-toolset-14
_REQUIRES: gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-14
BINUTILS_PACKAGE: gcc-toolset-14-binutils
GCC_PACKAGE: gcc-toolset-14-gcc
# yamllint disable-line rule:line-length
COLLECTION_PACKAGES: gcc-toolset-14-binutils gcc-toolset-14-binutils-devel gcc-toolset-14-binutils-gold gcc-toolset-14-binutils-gprofng
- when: distro == rhel-8 and collection == gcc-toolset-14 and arch != x86_64 and arch != aarch64
require+:
- gcc-toolset-14-binutils
- gcc-toolset-14-binutils-devel
- gcc-toolset-14-binutils-gold
- gcc-toolset-14-gcc
- gcc-toolset-14-gcc-c++
- gcc-toolset-14-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-14-binutils
TOOLSET: gcc-toolset-14
_REQUIRES: gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-14
BINUTILS_PACKAGE: gcc-toolset-14-binutils
GCC_PACKAGE: gcc-toolset-14-gcc
COLLECTION_PACKAGES: gcc-toolset-14-binutils gcc-toolset-14-binutils-devel gcc-toolset-14-binutils-gold
# RHEL-8 / gcc-toolset-13
- when: distro == rhel-8 and collection == gcc-toolset-13 and arch == x86_64,aarch64
require+:
@ -147,13 +269,15 @@ adjust+:
- gcc-toolset-13-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-13-binutils
TOOLSET: gcc-toolset-13
_REQUIRES: gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ gcc-toolset-13-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-13
BINUTILS_PACKAGE: gcc-toolset-13-binutils
GCC_PACKAGE: gcc-toolset-13-gcc
# yamllint disable-line rule:line-length
COLLECTION_PACKAGES: gcc-toolset-13-binutils gcc-toolset-13-binutils-devel gcc-toolset-13-binutils-gold gcc-toolset-13-binutils-gprofng
- when: distro == rhel-8 and collection == gcc-toolset-13 and arch != x86_64,aarch64
- when: distro == rhel-8 and collection == gcc-toolset-13 and arch != x86_64 and arch != aarch64
require+:
- gcc-toolset-13-binutils
- gcc-toolset-13-binutils-devel
@ -163,6 +287,7 @@ adjust+:
- gcc-toolset-13-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-13-binutils
TOOLSET: gcc-toolset-13
_REQUIRES: gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ gcc-toolset-13-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-13
BINUTILS_PACKAGE: gcc-toolset-13-binutils
@ -181,6 +306,8 @@ adjust+:
- gcc-toolset-12-annobin-plugin-gcc
environment+:
PACKAGES: gcc-toolset-12-binutils
TOOLSET: gcc-toolset-12
# yamllint disable-line rule:line-length
_REQUIRES: gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-gcc-plugin-annobin gcc-toolset-12-annobin-plugin-gcc glibc
WITH_SCL: scl enable gcc-toolset-12
BINUTILS_PACKAGE: gcc-toolset-12-binutils
@ -215,15 +342,35 @@ adjust+:
- devtoolset-13-gcc-c++
environment+:
PACKAGES: devtoolset-13-binutils
TOOLSET: devtoolset-13
_REQUIRES: devtoolset-13-gcc devtoolset-13-gcc-c++ glibc
WITH_SCL: scl enable devtoolset-13
BINUTILS_PACKAGE: devtoolset-13-binutils
GCC_PACKAGE: devtoolset-13-gcc
# yamllint disable-line rule:line-length
COLLECTION_PACKAGES: devtoolset-13-binutils devtoolset-13-binutils-devel devtoolset-13-binutils-gold devtoolset-13-binutils-gprofng
# RHEL-7 / devtoolset-12
# RHEL-7 / devtoolset-11
# CentOS Stream 10 / no collection
- when: distro == centos-stream-10 and collection is not defined
require+:
- binutils
- binutils-devel
- binutils-gold
- gcc
- gcc-c++
# TODO: CentOS Stream 10
# - annobin
environment+:
PACKAGES: binutils
# TODO: CentOS Stream 10
# _REQUIRES: gcc gcc-c++ glibc annobin
_REQUIRES: gcc gcc-c++ glibc
BINUTILS_PACKAGE: binutils
GCC_PACKAGE: gcc
# CentOS Stream 9 / no collection
- when: distro == centos-stream-9 and collection is not defined
require+:
@ -239,17 +386,40 @@ adjust+:
BINUTILS_PACKAGE: binutils
GCC_PACKAGE: gcc
# CentOS Stream 9 / gcc-toolset-14
- when: distro == centos-stream-9 and collection == gcc-toolset-14
require+:
- gcc-toolset-14-binutils
- gcc-toolset-14-binutils-devel
- gcc-toolset-14-binutils-gold
# TODO: why is it missing, not being shipped?
# - gcc-toolset-14-binutils-gprofng
- gcc-toolset-14-gcc
- gcc-toolset-14-gcc-c++
- gcc-toolset-14-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-14-binutils
TOOLSET: gcc-toolset-14
_REQUIRES: gcc-toolset-14-gcc gcc-toolset-14-gcc-c++ gcc-toolset-14-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-14
BINUTILS_PACKAGE: gcc-toolset-14-binutils
GCC_PACKAGE: gcc-toolset-14-gcc
COLLECTION_PACKAGES: gcc-toolset-14-binutils gcc-toolset-14-binutils-devel gcc-toolset-14-binutils-gold
# CentOS Stream 9 / gcc-toolset-13
- when: distro == centos-stream-9 and collection == gcc-toolset-13
require+:
- gcc-toolset-13-binutils
- gcc-toolset-13-binutils-devel
- gcc-toolset-13-binutils-gold
# TODO: why is it missing, not being shipped?
# - gcc-toolset-13-binutils-gprofng
- gcc-toolset-13-gcc
- gcc-toolset-13-gcc-c++
- gcc-toolset-13-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-13-binutils
TOOLSET: gcc-toolset-13
_REQUIRES: gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ gcc-toolset-13-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-13
BINUTILS_PACKAGE: gcc-toolset-13-binutils
@ -286,13 +456,14 @@ adjust+:
- gcc-toolset-13-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-13-binutils
TOOLSET: gcc-toolset-13
_REQUIRES: gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ gcc-toolset-13-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-13
BINUTILS_PACKAGE: gcc-toolset-13-binutils
GCC_PACKAGE: gcc-toolset-13-gcc
COLLECTION_PACKAGES: gcc-toolset-13-binutils gcc-toolset-13-binutils-devel gcc-toolset-13-binutils-gold
- when: distro == centos-stream-8 and collection == gcc-toolset-13 and arch != x86_64,aarch64
- when: distro == centos-stream-8 and collection == gcc-toolset-13 and arch != x86_64 and arch != aarch64
require+:
- gcc-toolset-13-binutils
- gcc-toolset-13-binutils-devel
@ -302,6 +473,7 @@ adjust+:
- gcc-toolset-13-gcc-plugin-annobin
environment+:
PACKAGES: gcc-toolset-13-binutils
TOOLSET: gcc-toolset-13
_REQUIRES: gcc-toolset-13-gcc gcc-toolset-13-gcc-c++ gcc-toolset-13-gcc-plugin-annobin glibc
WITH_SCL: scl enable gcc-toolset-13
BINUTILS_PACKAGE: gcc-toolset-13-binutils
@ -320,6 +492,8 @@ adjust+:
- gcc-toolset-12-annobin-plugin-gcc
environment+:
PACKAGES: gcc-toolset-12-binutils
TOOLSET: gcc-toolset-12
# yamllint disable-line rule:line-length
_REQUIRES: gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-gcc-plugin-annobin gcc-toolset-12-annobin-plugin-gcc glibc
WITH_SCL: scl enable gcc-toolset-12
BINUTILS_PACKAGE: gcc-toolset-12-binutils
@ -344,6 +518,22 @@ adjust+:
BINUTILS_PACKAGE: binutils
GCC_PACKAGE: gcc
# Fedora-40 / no collection
- when: distro == fedora-40 and collection is not defined
require+:
- binutils
- binutils-devel
- binutils-gold
- binutils-gprofng
- gcc
- gcc-c++
- annobin-plugin-gcc
environment+:
PACKAGES: binutils
_REQUIRES: gcc gcc-c++ glibc annobin-plugin-gcc
BINUTILS_PACKAGE: binutils
GCC_PACKAGE: gcc
# Fedora-39 / no collection
- when: distro == fedora-39 and collection is not defined
require+:

View file

@ -46,10 +46,10 @@ require+:
- net-tools
adjust+:
- because: "kernel package is gone from Fedora Rawhide default installation"
when: distro == fedora-rawhide
- because: "kernel package is gone from recent Fedora default installation"
when: distro >= fedora-38
environment+:
KERNEL: kernel-core
KERNEL: kernel-core
- because: "python-devel has different names in different distros"
when: distro >= rhel-8.6 and distro <= rhel-8.9
@ -66,8 +66,8 @@ adjust+:
require+:
- pesign
- because: "unifdef is available with RHEL-8.9 and newer"
when: distro >= rhel-8.9
- because: "unifdef is available with RHEL-8.9 and newer and not in RHEL-10"
when: distro >= rhel-8.9 and distro != rhel-10
require+:
- unifdef
@ -76,6 +76,10 @@ adjust+:
require+:
- ecj
- because: "kernel rebuild fails because of discovering build issues"
when: collection == gcc-toolset-14
enabled: false
- because: "kernel rebuild fails because of discovering build issues"
when: collection == gcc-toolset-13
enabled: false

View file

@ -89,7 +89,7 @@ rlJournalStart
rlLogInfo "REBOOTCOUNT=$REBOOTCOUNT"
rlLogInfo "RPM_BUILD_ID=$RPM_BUILD_ID"
rlRun "GCC=$(rpm -ql $GCC_PACKAGE | grep -E 'usr/bin/gcc$')"
rlRun "GCC=$(rpm -ql "$GCC_PACKAGE" | grep -E 'usr/bin/gcc$')"
rlLogInfo "GCC=$GCC"
rlRun "AFTER_REBOOT=no"
@ -125,13 +125,14 @@ rlJournalStart
rlRun "sed -i \"s/# define buildid .local/%define buildid $RPM_BUILD_ID/\" $SPECFILE"
fi
if [ "`rlGetPrimaryArch`" == "ppc64" ]; then
if [ "$(rlGetPrimaryArch)" == "ppc64" ]; then
TARGET="--target=ppc64"
else
TARGET="--target=$(uname -m)"
fi
if rlRun "CC=$GCC rpmbuild --define=\"_topdir $TmpDir\" -bb $TARGET --clean $SPECFILE &> BUILD_LOG"; then
set -o pipefail
if rlRun "CC=$GCC rpmbuild --define=\"_topdir $TmpDir\" -bb $TARGET --clean $SPECFILE |& tee BUILD_LOG"; then
rlRun "RPMBUILD_OK=yes"
else
rlLogInfo "rpmbuild kernel failed"
@ -140,6 +141,7 @@ rlJournalStart
log_disk_space
log_rpms
fi
set +o pipefail
rlBundleLogs "Build-log" BUILD_LOG
rlPhaseEnd
@ -156,7 +158,7 @@ rlJournalStart
if [ "$(arch)" = "s390x" ]; then
rlRun "grubby --info=ALL"
rlLogInfo "Default kernel is $(grubby --default-kernel), index $(grubby --default-index)"
rlRun "KERNEL_FILE=$(ls -1 /boot/vmlinuz-*${RPM_BUILD_ID}."$(arch)")"
rlRun "KERNEL_FILE=$(ls -1 "/boot/vmlinuz-*${RPM_BUILD_ID}.$(arch)")"
rlRun "ls -al $KERNEL_FILE"
rlRun "grubby --set-default $KERNEL_FILE"
rlLogInfo "Default kernel is $(grubby --default-kernel), index $(grubby --default-index)"

View file

@ -24,3 +24,7 @@ adjust+:
- when: collection == gcc-toolset-13
environment+:
COLLECTION_ROOT: /opt/rh/gcc-toolset-13/root
- when: collection == gcc-toolset-14
environment+:
COLLECTION_ROOT: /opt/rh/gcc-toolset-14/root

View file

@ -0,0 +1,16 @@
aarch64
arm
armv2
armv2a
armv3
armv3m
armv4
armv4t
armv5
armv5t
armv5te
xscale
ep9312
iwmmxt
iwmmxt2
plugin

View file

@ -0,0 +1,15 @@
elf64-littleaarch64
elf64-bigaarch64
elf32-littlearm
elf32-bigarm
elf64-little
elf64-big
elf32-little
elf32-big
plugin
srec
symbolsrec
verilog
tekhex
binary
ihex

View file

@ -0,0 +1,27 @@
rs6000:6000
rs6000:rs1
rs6000:rsc
rs6000:rs2
powerpc:common64
powerpc:common
powerpc:603
powerpc:EC603e
powerpc:604
powerpc:403
powerpc:601
powerpc:620
powerpc:630
powerpc:a35
powerpc:rs64ii
powerpc:rs64iii
powerpc:7400
powerpc:e500
powerpc:e500mc
powerpc:e500mc64
powerpc:MPC8XX
powerpc:750
powerpc:titan
powerpc:vle
powerpc:e5500
powerpc:e6500
plugin

View file

@ -0,0 +1,18 @@
elf64-powerpc
elf64-powerpcle
elf32-powerpc
elf32-powerpcle
aixcoff-rs6000
aixcoff64-rs6000
aix5coff64-rs6000
elf64-little
elf64-big
elf32-little
elf32-big
plugin
srec
symbolsrec
verilog
tekhex
binary
ihex

View file

@ -0,0 +1,27 @@
rs6000:6000
rs6000:rs1
rs6000:rsc
rs6000:rs2
powerpc:common64
powerpc:common
powerpc:603
powerpc:EC603e
powerpc:604
powerpc:403
powerpc:601
powerpc:620
powerpc:630
powerpc:a35
powerpc:rs64ii
powerpc:rs64iii
powerpc:7400
powerpc:e500
powerpc:e500mc
powerpc:e500mc64
powerpc:MPC8XX
powerpc:750
powerpc:titan
powerpc:vle
powerpc:e5500
powerpc:e6500
plugin

View file

@ -0,0 +1,19 @@
elf64-powerpcle
elf64-powerpc
elf32-powerpcle
elf32-powerpc
aixcoff-rs6000
aixcoff64-rs6000
aix5coff64-rs6000
elf64-little
elf64-big
elf32-little
elf32-big
ppcboot
plugin
srec
symbolsrec
verilog
tekhex
binary
ihex

View file

@ -0,0 +1,3 @@
s390:31-bit
s390:64-bit
plugin

View file

@ -0,0 +1,14 @@
elf64-s390
elf32-s390
elf64-little
elf64-big
elf32-little
elf32-big
plugin
srec
symbolsrec
verilog
tekhex
binary
ihex
trad-core

View file

@ -0,0 +1,12 @@
i386
i386:x86-64
i386:x64-32
i8086
i386:intel
i386:x86-64:intel
i386:x64-32:intel
l1om
l1om:intel
k1om
k1om:intel
plugin

View file

@ -0,0 +1,19 @@
elf64-x86-64
elf32-i386
elf32-x86-64
a.out-i386-linux
pei-i386
pei-x86-64
elf64-l1om
elf64-k1om
elf64-little
elf64-big
elf32-little
elf32-big
plugin
srec
symbolsrec
verilog
tekhex
binary
ihex

View file

@ -0,0 +1,11 @@
i386
i386:x86-64
i386:x64-32
i8086
i386:intel
i386:x86-64:intel
i386:x64-32:intel
iamcu
iamcu:intel
bpf
xbpf

View file

@ -0,0 +1,23 @@
elf64-x86-64
elf32-i386
elf32-iamcu
elf32-x86-64
pei-i386
pe-x86-64
pei-x86-64
elf64-little
elf64-big
elf32-little
elf32-big
pe-bigobj-x86-64
pe-i386
pdb
elf64-bpfle
elf64-bpfbe
srec
symbolsrec
verilog
tekhex
binary
ihex
plugin

View file

@ -8,8 +8,8 @@ contact+:
adjust+:
- when: distro == centos-stream-9
environment+:
BASELINE: "9"
BASELINE: "9"
- when: distro == centos-stream-8
environment+:
BASELINE: "8"
BASELINE: "8"

View file

@ -27,7 +27,6 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh || exit 1
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
@ -50,6 +49,10 @@ rlJournalStart
release=8
elif rlIsCentOS "=9"; then
release=9
elif rlIsCentOS "=10"; then
release=10
elif rlIsFedora ">= 40"; then
release=fedora_40
else
rlLog "$(cat /etc/redhat-release)"
rlFail "No Baseline available for this major release; using RHEL-7 as baseline"
@ -74,9 +77,9 @@ rlJournalStart
rlRun "objdump --help | grep 'supported architectures' | sed 's/objdump: supported architectures: //' | tr ' ' '\n' > actual_arch"
rlLog "expected targets:"
rlLog "$(cat $expected_tgt_file)"
rlLog "$(cat "$expected_tgt_file")"
rlLog "expected architectures:"
rlLog "$(cat $expected_arch_file)"
rlLog "$(cat "$expected_arch_file")"
rlLog "actual targets:"
rlLog "$(cat actual_tgt)"
rlLog "actual architectures:"

View file

@ -0,0 +1,132 @@
#!/bin/bash
function verify_test () {
local pattern="$1"
local log="$2"
local subject="$3"
local issue="$4"
rlRun "grep -E '^PASS: $pattern' $log.tests" 0 "$subject ($issue)"
}
function verify_interesting_cases () {
local tool="$1"
local tool_label="$2"
local tool_log="$3"
local arch="$(rlGetPrimaryArch)"
rlPhaseStartTest "$tool_label / Verify interesting test cases"
#
# RHEL-10.0
#
if rlIsRHEL ">=10"; then
if [ "$tool" = "ld" ]; then
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-align" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-data-pie" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-data-shared" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-got-pie" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-got-shared" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-text-pie" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-text-shared" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-discard-pie" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-discard-shared" \
"$tool_log" \
"Please support DT_RELR/pack-relative-relocs in RHEL10 on aarch64" \
"https://issues.redhat.com/browse/RHEL-31846"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-discard-pie" \
"$tool_log" \
"Aarch64: Fix DT_RELR with discarded sections" \
"https://issues.redhat.com/browse/RHEL-42765"
[ "$arch" == "aarch64" ] && verify_test "ld-aarch64/relr-discard-shared" \
"$tool_log" \
"Aarch64: Fix DT_RELR with discarded sections" \
"https://issues.redhat.com/browse/RHEL-42765"
verify_test "Text Section Ordering \(section-order-1a\)" \
"$tool_log" \
"Implement --section-ordering-file in the BFD linker" \
"https://issues.redhat.com/browse/RHEL-36305"
verify_test "Text Section Ordering \(section-order-1b\)" \
"$tool_log" \
"Implement --section-ordering-file in the BFD linker" \
"https://issues.redhat.com/browse/RHEL-36305"
verify_test "Data Section Ordering \(section-order-1c\)" \
"$tool_log" \
"Implement --section-ordering-file in the BFD linker" \
"https://issues.redhat.com/browse/RHEL-36305"
verify_test "Data Section Ordering \(section-order-1d\)" \
"$tool_log" \
"Implement --section-ordering-file in the BFD linker" \
"https://issues.redhat.com/browse/RHEL-36305"
else
rlLogInfo "No tests for $tool and RHEL-10"
fi
#
# RHEL-9.5.0
#
elif rlIsRHEL ">=9.5" && rlIsRHEL "<10"; then
if [ "$tool" = "binutils" ]; then
[ "$arch" == "aarch64" ] && verify_test "Check if efi app format is recognized" \
"$tool_log" \
"\"Check if efi app format is recognized\" upstream test case fails for aarch64 binutils builds" \
"https://issues.redhat.com/browse/RHEL-39953"
elif [ "$tool" = "ld" ]; then
verify_test "ld-elf/pr27590a" \
"$tool_log" \
"Perf tools compilation '.gnu.debuglto_.debug_macro' referenced in section '.gnu.debuglto_.debug_macro' of X defined in discarded section '.gnu.debuglto_.debug_macro[wm4.0.c5f57b9d27e9e0df712a778cc74f572d]' of X" \
"https://issues.redhat.com/browse/RHEL-43758"
verify_test "ld-elf/pr27590b" \
"$tool_log" \
"Perf tools compilation '.gnu.debuglto_.debug_macro' referenced in section '.gnu.debuglto_.debug_macro' of X defined in discarded section '.gnu.debuglto_.debug_macro[wm4.0.c5f57b9d27e9e0df712a778cc74f572d]' of X" \
"https://issues.redhat.com/browse/RHEL-43758"
else
rlLogInfo "No tests for $tool and RHEL-9.5.0"
fi
fi
rlPhaseEnd
}

View file

@ -11,69 +11,98 @@ require+:
- dejagnu
- bison
- flex
- zlib-static
- sharutils
- yum-utils
- libstdc++-static
- rpm-build
link+:
- verifies: https://issues.redhat.com/browse/RHEL-31846
- verifies: https://issues.redhat.com/browse/RHEL-42765
- verifies: https://issues.redhat.com/browse/RHEL-36305
- verifies: https://issues.redhat.com/browse/RHEL-39953
- verifies: https://issues.redhat.com/browse/RHEL-43758
adjust+:
- because: "On RHEL-9.3.0 and newer, system binutils build extra binaries for cross compilation"
when: distro == rhel-9.3 and collection is not defined
- because: "On RHEL-10, zlib-static is missing"
when: distro != rhel-10
require+:
- zlib-static
- because: "On RHEL-10 and newer, system binutils build extra binaries for cross compilation"
when: distro >= rhel-10 and collection is not defined
test: "$WITH_SCL ./test-with-cross.sh"
- because: "On RHEL-9.3.0 and newer, system binutils build extra binaries for cross compilation"
when: distro == rhel-9.4 and collection is not defined
when: distro >= rhel-9.3 and collection is not defined
test: "$WITH_SCL ./test-with-cross.sh"
- because: "On RHEL-9.3.0 and newer, gcc-toolset-14 binutils build has extra directory levels"
when: distro >= rhel-9.3 and collection == gcc-toolset-14
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On RHEL-9.3.0 and newer, gcc-toolset-13 binutils build has extra directory levels"
when: distro == rhel-9.3 and collection == gcc-toolset-13
when: distro >= rhel-9.3 and collection == gcc-toolset-13
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On RHEL-9.3.0 and newer, gcc-toolset-13 binutils build has extra directory levels"
when: distro == rhel-9.4 and collection == gcc-toolset-13
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
# - because: "On RHEL-8.10.0 and newer, system binutils build extra binaries for cross compilation"
# when: distro == rhel-8.10 and collection is not defined
# test: "$WITH_SCL ./test-with-cross.sh"
# environment+:
# MAY_BUILD_OTHER_ARCHES: "no"
- because: "On RHEL-8.10.0 and newer, system binutils build extra binaries for cross compilation"
when: distro == rhel-8.10 and collection is not defined
- because: "On RHEL-8.10.0 and newer, gcc-toolset-14 binutils build has extra directory levels"
when: distro == rhel-8.10 and collection == gcc-toolset-14
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On RHEL-8.10.0 and newer, gcc-toolset-13 binutils build has extra directory levels"
when: distro == rhel-8.10 and collection == gcc-toolset-13
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On RHEL-8.8.0, gcc-toolset-13 binutils build has extra directory levels"
when: distro == rhel-8.8 and collection == gcc-toolset-13
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On RHEL-8.6.0, gcc-toolset-13 binutils build has extra directory levels"
when: distro == rhel-8.6 and collection == gcc-toolset-13
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On CentOS Stream 9, system binutils build extra binaries for cross compilation"
when: distro == centos-stream-9 and collection is not defined
test: "$WITH_SCL ./test-with-cross.sh"
- because: "On CentOS Stream 9, gcc-toolset-14 build has extra directory levels"
when: distro == centos-stream-9 and collection == gcc-toolset-14
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On CentOS Stream 9, gcc-toolset-13 build has extra directory levels"
when: distro == centos-stream-9 and collection == gcc-toolset-13
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On Fedora 39 and newer, system binutils build extra binaries for cross compilation"
when: distro == fedora-rawhide
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On Fedora 39 and newer, system binutils build extra binaries for cross compilation"
when: distro == fedora-39
- because: "On Fedora 40 and newer, system binutils build extra binaries for cross compilation"
when: distro >= fedora-38
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
- because: "On Fedora 38 and newer, system binutils build extra binaries for cross compilation"
when: distro == fedora-38
test: "$WITH_SCL ./test-with-cross.sh"
environment+:
MAY_BUILD_OTHER_ARCHES: "no"
MAY_BUILD_OTHER_ARCHES: "no"

View file

@ -31,6 +31,7 @@
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
. ./interesting-cases.sh || exit 1
rlJournalStart
rlPhaseStartSetup
@ -101,6 +102,8 @@ rlJournalStart
rlLogInfo "Failed tests:\n$(sort < "$tool_log.failed")"
rlLogInfo "All tests:\n$(grep -E '^[A-Z]+:' "$tool_log.tests" | sort)"
rlPhaseEnd
verify_interesting_cases "$TOOL" "$tool_label" "$tool_log"
done
done

View file

@ -31,11 +31,18 @@
. /usr/share/beakerlib/beakerlib.sh || exit 1
. "$TMT_TREE/tests/lib.sh" || exit 1
. ./interesting-cases.sh || exit 1
rlJournalStart
rlPhaseStartSetup
buTestHeader
ARCH="$(rlGetPrimaryArch)"
BUILD_ARCHS="$ARCH"
rlLogInfo "ARCH=$ARCH"
rlLogInfo "BUILD_ARCHS=$BUILD_ARCHS"
buEnterTmpDir
rlRun "LOGDIR=$TmpDir/LOGS"
@ -50,19 +57,19 @@ rlJournalStart
rlPhaseStartSetup "Rebuild binutils"
buBuildSRPM
rlRun "cp $CURRENT_BUILD/binutils/binutils.log $LOGDIR/binutils-$build_arch.log"
rlRun "cp $CURRENT_BUILD/binutils/binutils.sum $LOGDIR/binutils-$build_arch.sum"
rlRun "cp $CURRENT_BUILD/binutils/binutils.log $LOGDIR/binutils-$ARCH.log"
rlRun "cp $CURRENT_BUILD/binutils/binutils.sum $LOGDIR/binutils-$ARCH.sum"
rlRun "cp $CURRENT_BUILD/ld/ld.log $LOGDIR/ld-$build_arch.log"
rlRun "cp $CURRENT_BUILD/ld/ld.sum $LOGDIR/ld-$build_arch.sum"
rlRun "cp $CURRENT_BUILD/ld/ld.log $LOGDIR/ld-$ARCH.log"
rlRun "cp $CURRENT_BUILD/ld/ld.sum $LOGDIR/ld-$ARCH.sum"
rlRun "cp $CURRENT_BUILD/gas/testsuite/gas.log $LOGDIR/gas-$build_arch.log"
rlRun "cp $CURRENT_BUILD/gas/testsuite/gas.sum $LOGDIR/gas-$build_arch.sum"
rlRun "cp $CURRENT_BUILD/gas/testsuite/gas.log $LOGDIR/gas-$ARCH.log"
rlRun "cp $CURRENT_BUILD/gas/testsuite/gas.sum $LOGDIR/gas-$ARCH.sum"
rlPhaseEnd
for TOOL in binutils ld gas; do
tool_label="$TOOL / $build_arch"
tool_log="$LOGDIR/$TOOL-$build_arch"
tool_label="$TOOL / $ARCH"
tool_log="$LOGDIR/$TOOL-$ARCH"
rlPhaseStartTest "$tool_label"
rlLogInfo "$tool_label Summary"
@ -75,6 +82,8 @@ rlJournalStart
rlLogInfo "Failed tests:\n$(sort < "$tool_log.failed")"
rlLogInfo "All tests:\n$(grep -E '^[A-Z]+:' "$tool_log.tests" | sort)"
rlPhaseEnd
verify_interesting_cases "$TOOL" "$tool_label" "$tool_log"
done
rlPhaseStartCleanup