diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index be5f77a..45a70af 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -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 diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..5f9db0a --- /dev/null +++ b/.yamllint @@ -0,0 +1,10 @@ +--- + +extends: default + +rules: + document-start: + present: false + + line-length: + max: 120 diff --git a/custom-lint-checks.sh b/custom-lint-checks.sh new file mode 100755 index 0000000..760ad15 --- /dev/null +++ b/custom-lint-checks.sh @@ -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 diff --git a/plans/build-gating.fmf b/plans/build-gating.fmf index 271e935..025e356 100644 --- a/plans/build-gating.fmf +++ b/plans/build-gating.fmf @@ -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$' diff --git a/plans/regression.fmf b/plans/regression.fmf index 068f1b3..fda6502 100644 --- a/plans/regression.fmf +++ b/plans/regression.fmf @@ -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+: diff --git a/tests/bugs/AVX-512-support-in-binutils/main.fmf b/tests/bugs/AVX-512-support-in-binutils/main.fmf new file mode 100644 index 0000000..5f4342b --- /dev/null +++ b/tests/bugs/AVX-512-support-in-binutils/main.fmf @@ -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 + +duration: 5m + +adjust+: + - when: arch != x86_64 + enabled: false diff --git a/tests/bugs/AVX-512-support-in-binutils/test.sh b/tests/bugs/AVX-512-support-in-binutils/test.sh new file mode 100755 index 0000000..19807b7 --- /dev/null +++ b/tests/bugs/AVX-512-support-in-binutils/test.sh @@ -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 +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# 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 diff --git a/tests/bugs/AVX-512-support-in-binutils/tst-auditmod10a.s b/tests/bugs/AVX-512-support-in-binutils/tst-auditmod10a.s new file mode 100644 index 0000000..511275a --- /dev/null +++ b/tests/bugs/AVX-512-support-in-binutils/tst-auditmod10a.s @@ -0,0 +1,3002 @@ + .file "tst-auditmod10a.c" + .text +.Ltext0: + .section .rodata.str1.1,"aMS",@progbits,1 +.LC0: + .string "audit_test:abort 1" +.LC1: + .string "audit_test:abort 2" +.LC2: + .string "audit_test:abort 3" +.LC3: + .string "audit_test:abort 4" +.LC4: + .string "audit_test:abort 5" +.LC5: + .string "audit_test:abort 6" +.LC6: + .string "audit_test:abort 7" +.LC7: + .string "audit_test:abort 8" + .section .text.unlikely,"ax",@progbits +.LCOLDB16: + .text +.LHOTB16: + .p2align 4,,15 + .section .text.unlikely +.Ltext_cold0: + .text + .globl audit_test + .type audit_test, @function +audit_test: +.LFB2253: + .file 1 "../sysdeps/x86_64/tst-auditmod10a.c" + .loc 1 29 0 + .cfi_startproc +.LVL0: + leaq 8(%rsp), %r10 + .cfi_def_cfa 10, 0 + andq $-64, %rsp +.LBB38: +.LBB39: + .file 2 "/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/avx512fintrin.h" + .loc 2 3628 0 + movl $1, %eax +.LBE39: +.LBE38: + .loc 1 33 0 + movl $64, %edx + .loc 1 29 0 + pushq -8(%r10) + pushq %rbp + .cfi_escape 0x10,0x6,0x2,0x76,0 + movq %rsp, %rbp + pushq %r10 + .cfi_escape 0xf,0x3,0x76,0x78,0x6 + pushq %rbx + .cfi_escape 0x10,0x3,0x2,0x76,0x70 + .loc 1 33 0 + leaq -112(%rbp), %rbx + leaq -176(%rbp), %rsi + .loc 1 29 0 + subq $608, %rsp + .loc 1 29 0 + vmovdqa64 %zmm0, -176(%rbp) +.LBB41: +.LBB40: + .loc 2 3628 0 + vpbroadcastq %rax, %zmm0 +.LBE40: +.LBE41: + .loc 1 33 0 + movq %rbx, %rdi + .loc 1 29 0 + vmovdqa64 %zmm1, -240(%rbp) + vmovdqa64 %zmm2, -304(%rbp) + vmovdqa64 %zmm3, -368(%rbp) + vmovdqa64 %zmm4, -432(%rbp) + vmovdqa64 %zmm5, -496(%rbp) + vmovdqa64 %zmm6, -560(%rbp) + vmovdqa64 %zmm7, -624(%rbp) + .loc 1 32 0 + vmovdqa64 %zmm0, -112(%rbp) + .loc 1 33 0 + call memcmp@PLT +.LVL1: + testl %eax, %eax + jne .L12 +.LVL2: +.LBB42: +.LBB43: + .loc 2 3628 0 + movl $2, %eax +.LBE43: +.LBE42: + .loc 1 40 0 + leaq -240(%rbp), %rsi + movl $64, %edx +.LBB45: +.LBB44: + .loc 2 3628 0 + vpbroadcastq %rax, %zmm0 +.LBE44: +.LBE45: + .loc 1 40 0 + movq %rbx, %rdi + .loc 1 39 0 + vmovdqa64 %zmm0, -112(%rbp) + .loc 1 40 0 + call memcmp@PLT +.LVL3: + testl %eax, %eax + jne .L13 +.LVL4: +.LBB46: +.LBB47: + .loc 2 3628 0 + movl $3, %eax +.LBE47: +.LBE46: + .loc 1 46 0 + leaq -304(%rbp), %rsi + movl $64, %edx +.LBB49: +.LBB48: + .loc 2 3628 0 + vpbroadcastq %rax, %zmm0 +.LBE48: +.LBE49: + .loc 1 46 0 + movq %rbx, %rdi + .loc 1 45 0 + vmovdqa64 %zmm0, -112(%rbp) + .loc 1 46 0 + call memcmp@PLT +.LVL5: + testl %eax, %eax + jne .L14 +.LVL6: +.LBB50: +.LBB51: + .loc 2 3628 0 + movl $4, %eax +.LBE51: +.LBE50: + .loc 1 52 0 + leaq -368(%rbp), %rsi + movl $64, %edx +.LBB53: +.LBB52: + .loc 2 3628 0 + vpbroadcastq %rax, %zmm0 +.LBE52: +.LBE53: + .loc 1 52 0 + movq %rbx, %rdi + .loc 1 51 0 + vmovdqa64 %zmm0, -112(%rbp) + .loc 1 52 0 + call memcmp@PLT +.LVL7: + testl %eax, %eax + jne .L15 +.LVL8: +.LBB54: +.LBB55: + .loc 2 3628 0 + movl $5, %eax +.LBE55: +.LBE54: + .loc 1 58 0 + leaq -432(%rbp), %rsi + movl $64, %edx +.LBB57: +.LBB56: + .loc 2 3628 0 + vpbroadcastq %rax, %zmm0 +.LBE56: +.LBE57: + .loc 1 58 0 + movq %rbx, %rdi + .loc 1 57 0 + vmovdqa64 %zmm0, -112(%rbp) + .loc 1 58 0 + call memcmp@PLT +.LVL9: + testl %eax, %eax + jne .L16 +.LVL10: +.LBB58: +.LBB59: + .loc 2 3628 0 + movl $6, %eax +.LBE59: +.LBE58: + .loc 1 64 0 + leaq -496(%rbp), %rsi + movl $64, %edx +.LBB61: +.LBB60: + .loc 2 3628 0 + vpbroadcastq %rax, %zmm0 +.LBE60: +.LBE61: + .loc 1 64 0 + movq %rbx, %rdi + .loc 1 63 0 + vmovdqa64 %zmm0, -112(%rbp) + .loc 1 64 0 + call memcmp@PLT +.LVL11: + testl %eax, %eax + jne .L17 +.LVL12: +.LBB62: +.LBB63: + .loc 2 3628 0 + movl $7, %eax +.LBE63: +.LBE62: + .loc 1 70 0 + leaq -560(%rbp), %rsi + movl $64, %edx +.LBB65: +.LBB64: + .loc 2 3628 0 + vpbroadcastq %rax, %zmm0 +.LBE64: +.LBE65: + .loc 1 70 0 + movq %rbx, %rdi + .loc 1 69 0 + vmovdqa64 %zmm0, -112(%rbp) + .loc 1 70 0 + call memcmp@PLT +.LVL13: + testl %eax, %eax + jne .L18 +.LVL14: +.LBB66: +.LBB67: + .loc 2 3628 0 + movl $8, %eax +.LBE67: +.LBE66: + .loc 1 76 0 + leaq -624(%rbp), %rsi + movl $64, %edx +.LBB69: +.LBB68: + .loc 2 3628 0 + vpbroadcastq %rax, %zmm0 +.LBE68: +.LBE69: + .loc 1 76 0 + movq %rbx, %rdi + .loc 1 75 0 + vmovdqa64 %zmm0, -112(%rbp) + .loc 1 76 0 + call memcmp@PLT +.LVL15: + testl %eax, %eax + jne .L19 + .loc 1 82 0 + addq $608, %rsp + vpxord %zmm0, %zmm0, %zmm0 + popq %rbx + popq %r10 + .cfi_remember_state + .cfi_def_cfa 10, 0 + popq %rbp + leaq -8(%r10), %rsp + .cfi_def_cfa 7, 8 + ret +.LVL16: +.L12: + .cfi_restore_state + .loc 1 35 0 + leaq .LC0(%rip), %rdi + call puts@PLT +.LVL17: + .loc 1 36 0 + call abort@PLT +.LVL18: +.L19: + .loc 1 78 0 + leaq .LC7(%rip), %rdi + call puts@PLT +.LVL19: + .loc 1 79 0 + call abort@PLT +.LVL20: +.L18: + .loc 1 72 0 + leaq .LC6(%rip), %rdi + call puts@PLT +.LVL21: + .loc 1 73 0 + call abort@PLT +.LVL22: +.L17: + .loc 1 66 0 + leaq .LC5(%rip), %rdi + call puts@PLT +.LVL23: + .loc 1 67 0 + call abort@PLT +.LVL24: +.L16: + .loc 1 60 0 + leaq .LC4(%rip), %rdi + call puts@PLT +.LVL25: + .loc 1 61 0 + call abort@PLT +.LVL26: +.L15: + .loc 1 54 0 + leaq .LC3(%rip), %rdi + call puts@PLT +.LVL27: + .loc 1 55 0 + call abort@PLT +.LVL28: +.L14: + .loc 1 48 0 + leaq .LC2(%rip), %rdi + call puts@PLT +.LVL29: + .loc 1 49 0 + call abort@PLT +.LVL30: +.L13: + .loc 1 42 0 + leaq .LC1(%rip), %rdi + call puts@PLT +.LVL31: + .loc 1 43 0 + call abort@PLT +.LVL32: + .cfi_endproc +.LFE2253: + .size audit_test, .-audit_test + .section .text.unlikely +.LCOLDE16: + .text +.LHOTE16: +.Letext0: + .section .text.unlikely +.Letext_cold0: + .file 3 "/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include/stddef.h" + .file 4 "../bits/types.h" + .file 5 "../libio/libio.h" + .file 6 "../wcsmbs/wchar.h" + .file 7 "../iconv/gconv.h" + .file 8 "../sysdeps/unix/sysv/linux/_G_config.h" + .file 9 "../libio/stdio.h" + .file 10 "" + .file 11 "../string/string.h" + .file 12 "../stdlib/stdlib.h" + .section .debug_info,"",@progbits +.Ldebug_info0: + .long 0xd6d + .value 0x4 + .long .Ldebug_abbrev0 + .byte 0x8 + .uleb128 0x1 + .long .LASF119 + .byte 0x1 + .long .LASF120 + .long .LASF121 + .quad .Ltext0 + .quad .Letext0-.Ltext0 + .long .Ldebug_line0 + .uleb128 0x2 + .byte 0x8 + .byte 0x5 + .long .LASF0 + .uleb128 0x3 + .long .LASF2 + .byte 0x3 + .byte 0xd4 + .long 0x3f + .uleb128 0x2 + .byte 0x8 + .byte 0x7 + .long .LASF1 + .uleb128 0x4 + .long .LASF3 + .byte 0x3 + .value 0x144 + .long 0x52 + .uleb128 0x5 + .byte 0x4 + .byte 0x5 + .string "int" + .uleb128 0x2 + .byte 0x1 + .byte 0x8 + .long .LASF4 + .uleb128 0x2 + .byte 0x2 + .byte 0x7 + .long .LASF5 + .uleb128 0x2 + .byte 0x4 + .byte 0x7 + .long .LASF6 + .uleb128 0x2 + .byte 0x1 + .byte 0x6 + .long .LASF7 + .uleb128 0x2 + .byte 0x2 + .byte 0x5 + .long .LASF8 + .uleb128 0x3 + .long .LASF9 + .byte 0x4 + .byte 0x83 + .long 0x2d + .uleb128 0x3 + .long .LASF10 + .byte 0x4 + .byte 0x84 + .long 0x2d + .uleb128 0x2 + .byte 0x8 + .byte 0x7 + .long .LASF11 + .uleb128 0x6 + .byte 0x8 + .uleb128 0x7 + .byte 0x8 + .long 0xa1 + .uleb128 0x2 + .byte 0x1 + .byte 0x6 + .long .LASF12 + .uleb128 0x2 + .byte 0x8 + .byte 0x5 + .long .LASF13 + .uleb128 0x7 + .byte 0x8 + .long 0xb5 + .uleb128 0x8 + .long 0xa1 + .uleb128 0x9 + .long 0xa1 + .long 0xca + .uleb128 0xa + .long 0x92 + .byte 0x3 + .byte 0 + .uleb128 0x2 + .byte 0x8 + .byte 0x7 + .long .LASF14 + .uleb128 0x7 + .byte 0x8 + .long 0xd7 + .uleb128 0xb + .uleb128 0x2 + .byte 0x4 + .byte 0x4 + .long .LASF15 + .uleb128 0x2 + .byte 0x8 + .byte 0x4 + .long .LASF16 + .uleb128 0x3 + .long .LASF17 + .byte 0x2 + .byte 0x28 + .long 0xf1 + .uleb128 0xc + .long 0xa8 + .long 0xfd + .uleb128 0xd + .byte 0x7 + .byte 0 + .uleb128 0xc + .long 0xa8 + .long 0x109 + .uleb128 0xd + .byte 0x7 + .byte 0 + .uleb128 0x3 + .long .LASF18 + .byte 0x2 + .byte 0x33 + .long 0x59 + .uleb128 0xe + .long .LASF55 + .byte 0xd8 + .byte 0x5 + .byte 0xf5 + .long 0x294 + .uleb128 0xf + .long .LASF19 + .byte 0x5 + .byte 0xf6 + .long 0x52 + .byte 0 + .uleb128 0xf + .long .LASF20 + .byte 0x5 + .byte 0xfb + .long 0x9b + .byte 0x8 + .uleb128 0xf + .long .LASF21 + .byte 0x5 + .byte 0xfc + .long 0x9b + .byte 0x10 + .uleb128 0xf + .long .LASF22 + .byte 0x5 + .byte 0xfd + .long 0x9b + .byte 0x18 + .uleb128 0xf + .long .LASF23 + .byte 0x5 + .byte 0xfe + .long 0x9b + .byte 0x20 + .uleb128 0xf + .long .LASF24 + .byte 0x5 + .byte 0xff + .long 0x9b + .byte 0x28 + .uleb128 0x10 + .long .LASF25 + .byte 0x5 + .value 0x100 + .long 0x9b + .byte 0x30 + .uleb128 0x10 + .long .LASF26 + .byte 0x5 + .value 0x101 + .long 0x9b + .byte 0x38 + .uleb128 0x10 + .long .LASF27 + .byte 0x5 + .value 0x102 + .long 0x9b + .byte 0x40 + .uleb128 0x10 + .long .LASF28 + .byte 0x5 + .value 0x104 + .long 0x9b + .byte 0x48 + .uleb128 0x10 + .long .LASF29 + .byte 0x5 + .value 0x105 + .long 0x9b + .byte 0x50 + .uleb128 0x10 + .long .LASF30 + .byte 0x5 + .value 0x106 + .long 0x9b + .byte 0x58 + .uleb128 0x10 + .long .LASF31 + .byte 0x5 + .value 0x108 + .long 0x5b4 + .byte 0x60 + .uleb128 0x10 + .long .LASF32 + .byte 0x5 + .value 0x10a + .long 0x5ba + .byte 0x68 + .uleb128 0x10 + .long .LASF33 + .byte 0x5 + .value 0x10c + .long 0x52 + .byte 0x70 + .uleb128 0x10 + .long .LASF34 + .byte 0x5 + .value 0x110 + .long 0x52 + .byte 0x74 + .uleb128 0x10 + .long .LASF35 + .byte 0x5 + .value 0x112 + .long 0x7c + .byte 0x78 + .uleb128 0x10 + .long .LASF36 + .byte 0x5 + .value 0x116 + .long 0x60 + .byte 0x80 + .uleb128 0x10 + .long .LASF37 + .byte 0x5 + .value 0x117 + .long 0x6e + .byte 0x82 + .uleb128 0x10 + .long .LASF38 + .byte 0x5 + .value 0x118 + .long 0x871 + .byte 0x83 + .uleb128 0x10 + .long .LASF39 + .byte 0x5 + .value 0x11c + .long 0x881 + .byte 0x88 + .uleb128 0x10 + .long .LASF40 + .byte 0x5 + .value 0x125 + .long 0x87 + .byte 0x90 + .uleb128 0x10 + .long .LASF41 + .byte 0x5 + .value 0x128 + .long 0x675 + .byte 0x98 + .uleb128 0x10 + .long .LASF42 + .byte 0x5 + .value 0x129 + .long 0x887 + .byte 0xa0 + .uleb128 0x10 + .long .LASF43 + .byte 0x5 + .value 0x12a + .long 0x5ba + .byte 0xa8 + .uleb128 0x10 + .long .LASF44 + .byte 0x5 + .value 0x12b + .long 0x99 + .byte 0xb0 + .uleb128 0x10 + .long .LASF45 + .byte 0x5 + .value 0x12c + .long 0x34 + .byte 0xb8 + .uleb128 0x10 + .long .LASF46 + .byte 0x5 + .value 0x134 + .long 0x52 + .byte 0xc0 + .uleb128 0x10 + .long .LASF47 + .byte 0x5 + .value 0x136 + .long 0x88d + .byte 0xc4 + .byte 0 + .uleb128 0x4 + .long .LASF48 + .byte 0x3 + .value 0x161 + .long 0x67 + .uleb128 0x11 + .byte 0x4 + .byte 0x6 + .byte 0x55 + .long 0x2bf + .uleb128 0x12 + .long .LASF49 + .byte 0x6 + .byte 0x58 + .long 0x67 + .uleb128 0x12 + .long .LASF50 + .byte 0x6 + .byte 0x5c + .long 0xba + .byte 0 + .uleb128 0x13 + .byte 0x8 + .byte 0x6 + .byte 0x52 + .long 0x2e0 + .uleb128 0xf + .long .LASF51 + .byte 0x6 + .byte 0x54 + .long 0x52 + .byte 0 + .uleb128 0xf + .long .LASF52 + .byte 0x6 + .byte 0x5d + .long 0x2a0 + .byte 0x4 + .byte 0 + .uleb128 0x3 + .long .LASF53 + .byte 0x6 + .byte 0x5e + .long 0x2bf + .uleb128 0x3 + .long .LASF54 + .byte 0x7 + .byte 0x47 + .long 0x2f6 + .uleb128 0x7 + .byte 0x8 + .long 0x2fc + .uleb128 0x14 + .long 0x52 + .long 0x32e + .uleb128 0x15 + .long 0x32e + .uleb128 0x15 + .long 0x3f5 + .uleb128 0x15 + .long 0x45c + .uleb128 0x15 + .long 0x462 + .uleb128 0x15 + .long 0x46d + .uleb128 0x15 + .long 0x479 + .uleb128 0x15 + .long 0x52 + .uleb128 0x15 + .long 0x52 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x334 + .uleb128 0xe + .long .LASF56 + .byte 0x68 + .byte 0x7 + .byte 0x54 + .long 0x3f5 + .uleb128 0xf + .long .LASF57 + .byte 0x7 + .byte 0x56 + .long 0x4e5 + .byte 0 + .uleb128 0xf + .long .LASF58 + .byte 0x7 + .byte 0x57 + .long 0xaf + .byte 0x8 + .uleb128 0xf + .long .LASF59 + .byte 0x7 + .byte 0x59 + .long 0x52 + .byte 0x10 + .uleb128 0xf + .long .LASF60 + .byte 0x7 + .byte 0x5b + .long 0x9b + .byte 0x18 + .uleb128 0xf + .long .LASF61 + .byte 0x7 + .byte 0x5c + .long 0x9b + .byte 0x20 + .uleb128 0xf + .long .LASF62 + .byte 0x7 + .byte 0x5e + .long 0x2eb + .byte 0x28 + .uleb128 0xf + .long .LASF63 + .byte 0x7 + .byte 0x5f + .long 0x47f + .byte 0x30 + .uleb128 0xf + .long .LASF64 + .byte 0x7 + .byte 0x60 + .long 0x4a4 + .byte 0x38 + .uleb128 0xf + .long .LASF65 + .byte 0x7 + .byte 0x61 + .long 0x4c4 + .byte 0x40 + .uleb128 0xf + .long .LASF66 + .byte 0x7 + .byte 0x65 + .long 0x52 + .byte 0x48 + .uleb128 0xf + .long .LASF67 + .byte 0x7 + .byte 0x66 + .long 0x52 + .byte 0x4c + .uleb128 0xf + .long .LASF68 + .byte 0x7 + .byte 0x67 + .long 0x52 + .byte 0x50 + .uleb128 0xf + .long .LASF69 + .byte 0x7 + .byte 0x68 + .long 0x52 + .byte 0x54 + .uleb128 0xf + .long .LASF70 + .byte 0x7 + .byte 0x6b + .long 0x52 + .byte 0x58 + .uleb128 0xf + .long .LASF71 + .byte 0x7 + .byte 0x6d + .long 0x99 + .byte 0x60 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x3fb + .uleb128 0xe + .long .LASF72 + .byte 0x30 + .byte 0x7 + .byte 0x72 + .long 0x45c + .uleb128 0xf + .long .LASF73 + .byte 0x7 + .byte 0x74 + .long 0x473 + .byte 0 + .uleb128 0xf + .long .LASF74 + .byte 0x7 + .byte 0x75 + .long 0x473 + .byte 0x8 + .uleb128 0xf + .long .LASF75 + .byte 0x7 + .byte 0x79 + .long 0x52 + .byte 0x10 + .uleb128 0xf + .long .LASF76 + .byte 0x7 + .byte 0x7d + .long 0x52 + .byte 0x14 + .uleb128 0xf + .long .LASF77 + .byte 0x7 + .byte 0x81 + .long 0x52 + .byte 0x18 + .uleb128 0xf + .long .LASF78 + .byte 0x7 + .byte 0x83 + .long 0x4eb + .byte 0x20 + .uleb128 0xf + .long .LASF79 + .byte 0x7 + .byte 0x84 + .long 0x2e0 + .byte 0x28 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x462 + .uleb128 0x7 + .byte 0x8 + .long 0x468 + .uleb128 0x8 + .long 0x59 + .uleb128 0x7 + .byte 0x8 + .long 0x473 + .uleb128 0x7 + .byte 0x8 + .long 0x59 + .uleb128 0x7 + .byte 0x8 + .long 0x34 + .uleb128 0x3 + .long .LASF80 + .byte 0x7 + .byte 0x4c + .long 0x48a + .uleb128 0x7 + .byte 0x8 + .long 0x490 + .uleb128 0x14 + .long 0x294 + .long 0x4a4 + .uleb128 0x15 + .long 0x32e + .uleb128 0x15 + .long 0x59 + .byte 0 + .uleb128 0x3 + .long .LASF81 + .byte 0x7 + .byte 0x4f + .long 0x4af + .uleb128 0x7 + .byte 0x8 + .long 0x4b5 + .uleb128 0x14 + .long 0x52 + .long 0x4c4 + .uleb128 0x15 + .long 0x32e + .byte 0 + .uleb128 0x3 + .long .LASF82 + .byte 0x7 + .byte 0x50 + .long 0x4cf + .uleb128 0x7 + .byte 0x8 + .long 0x4d5 + .uleb128 0x16 + .long 0x4e0 + .uleb128 0x15 + .long 0x32e + .byte 0 + .uleb128 0x17 + .long .LASF112 + .uleb128 0x7 + .byte 0x8 + .long 0x4e0 + .uleb128 0x7 + .byte 0x8 + .long 0x2e0 + .uleb128 0xe + .long .LASF83 + .byte 0x10 + .byte 0x7 + .byte 0x8a + .long 0x522 + .uleb128 0xf + .long .LASF84 + .byte 0x7 + .byte 0x8c + .long 0x34 + .byte 0 + .uleb128 0xf + .long .LASF85 + .byte 0x7 + .byte 0x8d + .long 0x32e + .byte 0x8 + .uleb128 0xf + .long .LASF71 + .byte 0x7 + .byte 0x8e + .long 0x522 + .byte 0x10 + .byte 0 + .uleb128 0x9 + .long 0x3fb + .long 0x531 + .uleb128 0x18 + .long 0x92 + .byte 0 + .uleb128 0x13 + .byte 0x40 + .byte 0x8 + .byte 0x24 + .long 0x552 + .uleb128 0xf + .long .LASF86 + .byte 0x8 + .byte 0x26 + .long 0x4f1 + .byte 0 + .uleb128 0xf + .long .LASF71 + .byte 0x8 + .byte 0x27 + .long 0x3fb + .byte 0x10 + .byte 0 + .uleb128 0x11 + .byte 0x40 + .byte 0x8 + .byte 0x21 + .long 0x571 + .uleb128 0x12 + .long .LASF86 + .byte 0x8 + .byte 0x23 + .long 0x4f1 + .uleb128 0x12 + .long .LASF87 + .byte 0x8 + .byte 0x28 + .long 0x531 + .byte 0 + .uleb128 0x3 + .long .LASF88 + .byte 0x8 + .byte 0x29 + .long 0x552 + .uleb128 0x19 + .long .LASF122 + .byte 0x5 + .byte 0x9a + .uleb128 0xe + .long .LASF89 + .byte 0x18 + .byte 0x5 + .byte 0xa0 + .long 0x5b4 + .uleb128 0xf + .long .LASF90 + .byte 0x5 + .byte 0xa1 + .long 0x5b4 + .byte 0 + .uleb128 0xf + .long .LASF91 + .byte 0x5 + .byte 0xa2 + .long 0x5ba + .byte 0x8 + .uleb128 0xf + .long .LASF92 + .byte 0x5 + .byte 0xa6 + .long 0x52 + .byte 0x10 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x583 + .uleb128 0x7 + .byte 0x8 + .long 0x114 + .uleb128 0x1a + .long .LASF123 + .byte 0x4 + .byte 0x5 + .byte 0xb4 + .long 0x5e5 + .uleb128 0x1b + .long .LASF93 + .sleb128 0 + .uleb128 0x1b + .long .LASF94 + .sleb128 1 + .uleb128 0x1b + .long .LASF95 + .sleb128 2 + .uleb128 0x1b + .long .LASF96 + .sleb128 3 + .byte 0 + .uleb128 0xe + .long .LASF97 + .byte 0xc0 + .byte 0x5 + .byte 0xbf + .long 0x66a + .uleb128 0xf + .long .LASF98 + .byte 0x5 + .byte 0xc1 + .long 0x67b + .byte 0 + .uleb128 0xf + .long .LASF99 + .byte 0x5 + .byte 0xc2 + .long 0x6ca + .byte 0x8 + .uleb128 0xf + .long .LASF100 + .byte 0x5 + .byte 0xc8 + .long 0x6f3 + .byte 0x10 + .uleb128 0xf + .long .LASF101 + .byte 0x5 + .byte 0xcb + .long 0x73d + .byte 0x18 + .uleb128 0xf + .long .LASF102 + .byte 0x5 + .byte 0xd0 + .long 0x752 + .byte 0x20 + .uleb128 0xf + .long .LASF103 + .byte 0x5 + .byte 0xd1 + .long 0x752 + .byte 0x28 + .uleb128 0xf + .long .LASF104 + .byte 0x5 + .byte 0xd2 + .long 0x77b + .byte 0x30 + .uleb128 0xf + .long .LASF105 + .byte 0x5 + .byte 0xd4 + .long 0x752 + .byte 0x38 + .uleb128 0xf + .long .LASF106 + .byte 0x5 + .byte 0xd6 + .long 0x571 + .byte 0x40 + .uleb128 0xf + .long .LASF107 + .byte 0x5 + .byte 0xd7 + .long 0x571 + .byte 0x80 + .byte 0 + .uleb128 0x16 + .long 0x675 + .uleb128 0x15 + .long 0x675 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x5e5 + .uleb128 0x7 + .byte 0x8 + .long 0x66a + .uleb128 0x14 + .long 0x5c0 + .long 0x6b3 + .uleb128 0x15 + .long 0x675 + .uleb128 0x15 + .long 0x4eb + .uleb128 0x15 + .long 0x6b3 + .uleb128 0x15 + .long 0x6b3 + .uleb128 0x15 + .long 0x6be + .uleb128 0x15 + .long 0x9b + .uleb128 0x15 + .long 0x9b + .uleb128 0x15 + .long 0x6c4 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x6b9 + .uleb128 0x8 + .long 0x46 + .uleb128 0x7 + .byte 0x8 + .long 0x6b3 + .uleb128 0x7 + .byte 0x8 + .long 0x9b + .uleb128 0x7 + .byte 0x8 + .long 0x681 + .uleb128 0x14 + .long 0x5c0 + .long 0x6f3 + .uleb128 0x15 + .long 0x675 + .uleb128 0x15 + .long 0x4eb + .uleb128 0x15 + .long 0x9b + .uleb128 0x15 + .long 0x9b + .uleb128 0x15 + .long 0x6c4 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x6d0 + .uleb128 0x14 + .long 0x5c0 + .long 0x72b + .uleb128 0x15 + .long 0x675 + .uleb128 0x15 + .long 0x4eb + .uleb128 0x15 + .long 0xaf + .uleb128 0x15 + .long 0xaf + .uleb128 0x15 + .long 0x72b + .uleb128 0x15 + .long 0x731 + .uleb128 0x15 + .long 0x731 + .uleb128 0x15 + .long 0x737 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0xaf + .uleb128 0x7 + .byte 0x8 + .long 0x46 + .uleb128 0x7 + .byte 0x8 + .long 0x731 + .uleb128 0x7 + .byte 0x8 + .long 0x6f9 + .uleb128 0x14 + .long 0x52 + .long 0x752 + .uleb128 0x15 + .long 0x675 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x743 + .uleb128 0x14 + .long 0x52 + .long 0x77b + .uleb128 0x15 + .long 0x675 + .uleb128 0x15 + .long 0x4eb + .uleb128 0x15 + .long 0xaf + .uleb128 0x15 + .long 0xaf + .uleb128 0x15 + .long 0x34 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x758 + .uleb128 0x1c + .long .LASF108 + .value 0x138 + .byte 0x5 + .byte 0xdb + .long 0x851 + .uleb128 0xf + .long .LASF20 + .byte 0x5 + .byte 0xdd + .long 0x731 + .byte 0 + .uleb128 0xf + .long .LASF21 + .byte 0x5 + .byte 0xde + .long 0x731 + .byte 0x8 + .uleb128 0xf + .long .LASF22 + .byte 0x5 + .byte 0xdf + .long 0x731 + .byte 0x10 + .uleb128 0xf + .long .LASF23 + .byte 0x5 + .byte 0xe0 + .long 0x731 + .byte 0x18 + .uleb128 0xf + .long .LASF24 + .byte 0x5 + .byte 0xe1 + .long 0x731 + .byte 0x20 + .uleb128 0xf + .long .LASF25 + .byte 0x5 + .byte 0xe2 + .long 0x731 + .byte 0x28 + .uleb128 0xf + .long .LASF26 + .byte 0x5 + .byte 0xe3 + .long 0x731 + .byte 0x30 + .uleb128 0xf + .long .LASF27 + .byte 0x5 + .byte 0xe4 + .long 0x731 + .byte 0x38 + .uleb128 0xf + .long .LASF28 + .byte 0x5 + .byte 0xe6 + .long 0x731 + .byte 0x40 + .uleb128 0xf + .long .LASF29 + .byte 0x5 + .byte 0xe7 + .long 0x731 + .byte 0x48 + .uleb128 0xf + .long .LASF30 + .byte 0x5 + .byte 0xe9 + .long 0x731 + .byte 0x50 + .uleb128 0xf + .long .LASF109 + .byte 0x5 + .byte 0xeb + .long 0x2e0 + .byte 0x58 + .uleb128 0xf + .long .LASF110 + .byte 0x5 + .byte 0xec + .long 0x2e0 + .byte 0x60 + .uleb128 0xf + .long .LASF41 + .byte 0x5 + .byte 0xed + .long 0x5e5 + .byte 0x68 + .uleb128 0x1d + .long .LASF38 + .byte 0x5 + .byte 0xef + .long 0x851 + .value 0x128 + .uleb128 0x1d + .long .LASF111 + .byte 0x5 + .byte 0xf1 + .long 0x866 + .value 0x130 + .byte 0 + .uleb128 0x9 + .long 0x46 + .long 0x861 + .uleb128 0xa + .long 0x92 + .byte 0 + .byte 0 + .uleb128 0x17 + .long .LASF113 + .uleb128 0x7 + .byte 0x8 + .long 0x86c + .uleb128 0x8 + .long 0x861 + .uleb128 0x9 + .long 0xa1 + .long 0x881 + .uleb128 0xa + .long 0x92 + .byte 0 + .byte 0 + .uleb128 0x7 + .byte 0x8 + .long 0x57c + .uleb128 0x7 + .byte 0x8 + .long 0x781 + .uleb128 0x9 + .long 0xa1 + .long 0x89d + .uleb128 0xa + .long 0x92 + .byte 0x13 + .byte 0 + .uleb128 0x1e + .long .LASF124 + .long 0xa8 + .uleb128 0x1f + .long .LASF114 + .byte 0x2 + .byte 0x81 + .long 0x89d + .byte 0x3 + .long 0x8c2 + .uleb128 0x20 + .string "__Y" + .byte 0x2 + .byte 0x83 + .long 0x89d + .byte 0 + .uleb128 0x21 + .long .LASF115 + .byte 0x2 + .value 0xe24 + .long 0x89d + .byte 0x3 + .long 0x8e0 + .uleb128 0x22 + .string "__A" + .byte 0x2 + .value 0xe24 + .long 0xa8 + .byte 0 + .uleb128 0x23 + .long .LASF125 + .byte 0x2 + .byte 0xff + .long 0x89d + .byte 0x3 + .uleb128 0x24 + .long .LASF126 + .byte 0x1 + .byte 0x1b + .long 0xfd + .quad .LFB2253 + .quad .LFE2253-.LFB2253 + .uleb128 0x1 + .byte 0x9c + .long 0xd1a + .uleb128 0x25 + .string "x0" + .byte 0x1 + .byte 0x1b + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -176 + .uleb128 0x25 + .string "x1" + .byte 0x1 + .byte 0x1b + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -240 + .uleb128 0x25 + .string "x2" + .byte 0x1 + .byte 0x1b + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -304 + .uleb128 0x25 + .string "x3" + .byte 0x1 + .byte 0x1b + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -368 + .uleb128 0x25 + .string "x4" + .byte 0x1 + .byte 0x1c + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -432 + .uleb128 0x25 + .string "x5" + .byte 0x1 + .byte 0x1c + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -496 + .uleb128 0x25 + .string "x6" + .byte 0x1 + .byte 0x1c + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -560 + .uleb128 0x25 + .string "x7" + .byte 0x1 + .byte 0x1c + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -624 + .uleb128 0x26 + .string "zmm" + .byte 0x1 + .byte 0x1e + .long 0xfd + .uleb128 0x3 + .byte 0x76 + .sleb128 -112 + .uleb128 0x27 + .long 0x8c2 + .quad .LBB38 + .long .Ldebug_ranges0+0 + .byte 0x1 + .byte 0x20 + .long 0x9aa + .uleb128 0x28 + .long 0x8d3 + .byte 0x1 + .byte 0 + .uleb128 0x27 + .long 0x8c2 + .quad .LBB42 + .long .Ldebug_ranges0+0x30 + .byte 0x1 + .byte 0x27 + .long 0x9cb + .uleb128 0x29 + .long 0x8d3 + .long .LLST0 + .byte 0 + .uleb128 0x27 + .long 0x8c2 + .quad .LBB46 + .long .Ldebug_ranges0+0x60 + .byte 0x1 + .byte 0x2d + .long 0x9ec + .uleb128 0x29 + .long 0x8d3 + .long .LLST1 + .byte 0 + .uleb128 0x27 + .long 0x8c2 + .quad .LBB50 + .long .Ldebug_ranges0+0x90 + .byte 0x1 + .byte 0x33 + .long 0xa0d + .uleb128 0x29 + .long 0x8d3 + .long .LLST2 + .byte 0 + .uleb128 0x27 + .long 0x8c2 + .quad .LBB54 + .long .Ldebug_ranges0+0xc0 + .byte 0x1 + .byte 0x39 + .long 0xa2e + .uleb128 0x29 + .long 0x8d3 + .long .LLST3 + .byte 0 + .uleb128 0x27 + .long 0x8c2 + .quad .LBB58 + .long .Ldebug_ranges0+0xf0 + .byte 0x1 + .byte 0x3f + .long 0xa4f + .uleb128 0x29 + .long 0x8d3 + .long .LLST4 + .byte 0 + .uleb128 0x27 + .long 0x8c2 + .quad .LBB62 + .long .Ldebug_ranges0+0x120 + .byte 0x1 + .byte 0x45 + .long 0xa70 + .uleb128 0x29 + .long 0x8d3 + .long .LLST5 + .byte 0 + .uleb128 0x27 + .long 0x8c2 + .quad .LBB66 + .long .Ldebug_ranges0+0x150 + .byte 0x1 + .byte 0x4b + .long 0xa91 + .uleb128 0x29 + .long 0x8d3 + .long .LLST6 + .byte 0 + .uleb128 0x2a + .quad .LVL1 + .long 0xd30 + .long 0xab6 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x54 + .uleb128 0x3 + .byte 0x76 + .sleb128 -176 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x51 + .uleb128 0x2 + .byte 0x8 + .byte 0x40 + .byte 0 + .uleb128 0x2a + .quad .LVL3 + .long 0xd30 + .long 0xadb + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x54 + .uleb128 0x3 + .byte 0x76 + .sleb128 -240 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x51 + .uleb128 0x2 + .byte 0x8 + .byte 0x40 + .byte 0 + .uleb128 0x2a + .quad .LVL5 + .long 0xd30 + .long 0xb00 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x54 + .uleb128 0x3 + .byte 0x76 + .sleb128 -304 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x51 + .uleb128 0x2 + .byte 0x8 + .byte 0x40 + .byte 0 + .uleb128 0x2a + .quad .LVL7 + .long 0xd30 + .long 0xb25 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x54 + .uleb128 0x3 + .byte 0x76 + .sleb128 -368 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x51 + .uleb128 0x2 + .byte 0x8 + .byte 0x40 + .byte 0 + .uleb128 0x2a + .quad .LVL9 + .long 0xd30 + .long 0xb4a + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x54 + .uleb128 0x3 + .byte 0x76 + .sleb128 -432 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x51 + .uleb128 0x2 + .byte 0x8 + .byte 0x40 + .byte 0 + .uleb128 0x2a + .quad .LVL11 + .long 0xd30 + .long 0xb6f + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x54 + .uleb128 0x3 + .byte 0x76 + .sleb128 -496 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x51 + .uleb128 0x2 + .byte 0x8 + .byte 0x40 + .byte 0 + .uleb128 0x2a + .quad .LVL13 + .long 0xd30 + .long 0xb94 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x54 + .uleb128 0x3 + .byte 0x76 + .sleb128 -560 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x51 + .uleb128 0x2 + .byte 0x8 + .byte 0x40 + .byte 0 + .uleb128 0x2a + .quad .LVL15 + .long 0xd30 + .long 0xbb9 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x2 + .byte 0x73 + .sleb128 0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x54 + .uleb128 0x3 + .byte 0x76 + .sleb128 -624 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x51 + .uleb128 0x2 + .byte 0x8 + .byte 0x40 + .byte 0 + .uleb128 0x2a + .quad .LVL17 + .long 0xd4f + .long 0xbd8 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x9 + .byte 0x3 + .quad .LC0 + .byte 0 + .uleb128 0x2c + .quad .LVL18 + .long 0xd68 + .uleb128 0x2a + .quad .LVL19 + .long 0xd4f + .long 0xc04 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x9 + .byte 0x3 + .quad .LC7 + .byte 0 + .uleb128 0x2c + .quad .LVL20 + .long 0xd68 + .uleb128 0x2a + .quad .LVL21 + .long 0xd4f + .long 0xc30 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x9 + .byte 0x3 + .quad .LC6 + .byte 0 + .uleb128 0x2c + .quad .LVL22 + .long 0xd68 + .uleb128 0x2a + .quad .LVL23 + .long 0xd4f + .long 0xc5c + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x9 + .byte 0x3 + .quad .LC5 + .byte 0 + .uleb128 0x2c + .quad .LVL24 + .long 0xd68 + .uleb128 0x2a + .quad .LVL25 + .long 0xd4f + .long 0xc88 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x9 + .byte 0x3 + .quad .LC4 + .byte 0 + .uleb128 0x2c + .quad .LVL26 + .long 0xd68 + .uleb128 0x2a + .quad .LVL27 + .long 0xd4f + .long 0xcb4 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x9 + .byte 0x3 + .quad .LC3 + .byte 0 + .uleb128 0x2c + .quad .LVL28 + .long 0xd68 + .uleb128 0x2a + .quad .LVL29 + .long 0xd4f + .long 0xce0 + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x9 + .byte 0x3 + .quad .LC2 + .byte 0 + .uleb128 0x2c + .quad .LVL30 + .long 0xd68 + .uleb128 0x2a + .quad .LVL31 + .long 0xd4f + .long 0xd0c + .uleb128 0x2b + .uleb128 0x1 + .byte 0x55 + .uleb128 0x9 + .byte 0x3 + .quad .LC1 + .byte 0 + .uleb128 0x2c + .quad .LVL32 + .long 0xd68 + .byte 0 + .uleb128 0x2d + .long .LASF116 + .byte 0x9 + .byte 0xa8 + .long 0x5ba + .uleb128 0x2d + .long .LASF117 + .byte 0x9 + .byte 0xa9 + .long 0x5ba + .uleb128 0x2e + .long .LASF127 + .byte 0xb + .byte 0x45 + .long 0x52 + .long 0xd4f + .uleb128 0x15 + .long 0xd1 + .uleb128 0x15 + .long 0xd1 + .uleb128 0x15 + .long 0x34 + .byte 0 + .uleb128 0x2f + .long .LASF118 + .byte 0xa + .byte 0 + .long .LASF128 + .long 0x52 + .long 0xd68 + .uleb128 0x15 + .long 0xaf + .byte 0 + .uleb128 0x30 + .long .LASF129 + .byte 0xc + .value 0x203 + .byte 0 + .section .debug_abbrev,"",@progbits +.Ldebug_abbrev0: + .uleb128 0x1 + .uleb128 0x11 + .byte 0x1 + .uleb128 0x25 + .uleb128 0xe + .uleb128 0x13 + .uleb128 0xb + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x1b + .uleb128 0xe + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x10 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2 + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0xe + .byte 0 + .byte 0 + .uleb128 0x3 + .uleb128 0x16 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x4 + .uleb128 0x16 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0x5 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x5 + .uleb128 0x24 + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3e + .uleb128 0xb + .uleb128 0x3 + .uleb128 0x8 + .byte 0 + .byte 0 + .uleb128 0x6 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x7 + .uleb128 0xf + .byte 0 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x8 + .uleb128 0x26 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x9 + .uleb128 0x1 + .byte 0x1 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xa + .uleb128 0x21 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2f + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0xb + .uleb128 0x26 + .byte 0 + .byte 0 + .byte 0 + .uleb128 0xc + .uleb128 0x1 + .byte 0x1 + .uleb128 0x2107 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xd + .uleb128 0x21 + .byte 0 + .uleb128 0x2f + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0xe + .uleb128 0x13 + .byte 0x1 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0xf + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x10 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0x5 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x11 + .uleb128 0x17 + .byte 0x1 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x12 + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x13 + .uleb128 0x13 + .byte 0x1 + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x14 + .uleb128 0x15 + .byte 0x1 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x15 + .uleb128 0x5 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x16 + .uleb128 0x15 + .byte 0x1 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x17 + .uleb128 0x13 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x18 + .uleb128 0x21 + .byte 0 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x19 + .uleb128 0x16 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x1a + .uleb128 0x4 + .byte 0x1 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0xb + .uleb128 0xb + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x1b + .uleb128 0x28 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x1c + .uleb128 0xd + .byte 0 + .byte 0 + .uleb128 0x1c + .uleb128 0x13 + .byte 0x1 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0xb + .uleb128 0x5 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x1d + .uleb128 0xd + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x38 + .uleb128 0x5 + .byte 0 + .byte 0 + .uleb128 0x1e + .uleb128 0x1 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x2107 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x1f + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x20 + .uleb128 0xb + .uleb128 0x34 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x20 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x21 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0x5 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x20 + .uleb128 0xb + .uleb128 0x34 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x22 + .uleb128 0x5 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0x5 + .uleb128 0x49 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x23 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x20 + .uleb128 0xb + .uleb128 0x34 + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x24 + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x12 + .uleb128 0x7 + .uleb128 0x40 + .uleb128 0x18 + .uleb128 0x2117 + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x25 + .uleb128 0x5 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x26 + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0x8 + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x27 + .uleb128 0x1d + .byte 0x1 + .uleb128 0x31 + .uleb128 0x13 + .uleb128 0x52 + .uleb128 0x1 + .uleb128 0x55 + .uleb128 0x17 + .uleb128 0x58 + .uleb128 0xb + .uleb128 0x59 + .uleb128 0xb + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x28 + .uleb128 0x5 + .byte 0 + .uleb128 0x31 + .uleb128 0x13 + .uleb128 0x1c + .uleb128 0xb + .byte 0 + .byte 0 + .uleb128 0x29 + .uleb128 0x5 + .byte 0 + .uleb128 0x31 + .uleb128 0x13 + .uleb128 0x2 + .uleb128 0x17 + .byte 0 + .byte 0 + .uleb128 0x2a + .uleb128 0x4109 + .byte 0x1 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x31 + .uleb128 0x13 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x2b + .uleb128 0x410a + .byte 0 + .uleb128 0x2 + .uleb128 0x18 + .uleb128 0x2111 + .uleb128 0x18 + .byte 0 + .byte 0 + .uleb128 0x2c + .uleb128 0x4109 + .byte 0 + .uleb128 0x11 + .uleb128 0x1 + .uleb128 0x31 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x2d + .uleb128 0x34 + .byte 0 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .uleb128 0x2e + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x2f + .uleb128 0x2e + .byte 0x1 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0xb + .uleb128 0x6e + .uleb128 0xe + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x49 + .uleb128 0x13 + .uleb128 0x3c + .uleb128 0x19 + .uleb128 0x1 + .uleb128 0x13 + .byte 0 + .byte 0 + .uleb128 0x30 + .uleb128 0x2e + .byte 0 + .uleb128 0x3f + .uleb128 0x19 + .uleb128 0x3 + .uleb128 0xe + .uleb128 0x3a + .uleb128 0xb + .uleb128 0x3b + .uleb128 0x5 + .uleb128 0x27 + .uleb128 0x19 + .uleb128 0x3c + .uleb128 0x19 + .byte 0 + .byte 0 + .byte 0 + .section .debug_loc,"",@progbits +.Ldebug_loc0: +.LLST0: + .quad .LVL2-.Ltext0 + .quad .LVL16-.Ltext0 + .value 0x2 + .byte 0x32 + .byte 0x9f + .quad .LVL18-.Ltext0 + .quad .LFE2253-.Ltext0 + .value 0x2 + .byte 0x32 + .byte 0x9f + .quad 0 + .quad 0 +.LLST1: + .quad .LVL4-.Ltext0 + .quad .LVL16-.Ltext0 + .value 0x2 + .byte 0x33 + .byte 0x9f + .quad .LVL18-.Ltext0 + .quad .LVL30-.Ltext0 + .value 0x2 + .byte 0x33 + .byte 0x9f + .quad 0 + .quad 0 +.LLST2: + .quad .LVL6-.Ltext0 + .quad .LVL16-.Ltext0 + .value 0x2 + .byte 0x34 + .byte 0x9f + .quad .LVL18-.Ltext0 + .quad .LVL28-.Ltext0 + .value 0x2 + .byte 0x34 + .byte 0x9f + .quad 0 + .quad 0 +.LLST3: + .quad .LVL8-.Ltext0 + .quad .LVL16-.Ltext0 + .value 0x2 + .byte 0x35 + .byte 0x9f + .quad .LVL18-.Ltext0 + .quad .LVL26-.Ltext0 + .value 0x2 + .byte 0x35 + .byte 0x9f + .quad 0 + .quad 0 +.LLST4: + .quad .LVL10-.Ltext0 + .quad .LVL16-.Ltext0 + .value 0x2 + .byte 0x36 + .byte 0x9f + .quad .LVL18-.Ltext0 + .quad .LVL24-.Ltext0 + .value 0x2 + .byte 0x36 + .byte 0x9f + .quad 0 + .quad 0 +.LLST5: + .quad .LVL12-.Ltext0 + .quad .LVL16-.Ltext0 + .value 0x2 + .byte 0x37 + .byte 0x9f + .quad .LVL18-.Ltext0 + .quad .LVL22-.Ltext0 + .value 0x2 + .byte 0x37 + .byte 0x9f + .quad 0 + .quad 0 +.LLST6: + .quad .LVL14-.Ltext0 + .quad .LVL16-.Ltext0 + .value 0x2 + .byte 0x38 + .byte 0x9f + .quad .LVL18-.Ltext0 + .quad .LVL20-.Ltext0 + .value 0x2 + .byte 0x38 + .byte 0x9f + .quad 0 + .quad 0 + .section .debug_aranges,"",@progbits + .long 0x2c + .value 0x2 + .long .Ldebug_info0 + .byte 0x8 + .byte 0 + .value 0 + .value 0 + .quad .Ltext0 + .quad .Letext0-.Ltext0 + .quad 0 + .quad 0 + .section .debug_ranges,"",@progbits +.Ldebug_ranges0: + .quad .LBB38-.Ltext0 + .quad .LBE38-.Ltext0 + .quad .LBB41-.Ltext0 + .quad .LBE41-.Ltext0 + .quad 0 + .quad 0 + .quad .LBB42-.Ltext0 + .quad .LBE42-.Ltext0 + .quad .LBB45-.Ltext0 + .quad .LBE45-.Ltext0 + .quad 0 + .quad 0 + .quad .LBB46-.Ltext0 + .quad .LBE46-.Ltext0 + .quad .LBB49-.Ltext0 + .quad .LBE49-.Ltext0 + .quad 0 + .quad 0 + .quad .LBB50-.Ltext0 + .quad .LBE50-.Ltext0 + .quad .LBB53-.Ltext0 + .quad .LBE53-.Ltext0 + .quad 0 + .quad 0 + .quad .LBB54-.Ltext0 + .quad .LBE54-.Ltext0 + .quad .LBB57-.Ltext0 + .quad .LBE57-.Ltext0 + .quad 0 + .quad 0 + .quad .LBB58-.Ltext0 + .quad .LBE58-.Ltext0 + .quad .LBB61-.Ltext0 + .quad .LBE61-.Ltext0 + .quad 0 + .quad 0 + .quad .LBB62-.Ltext0 + .quad .LBE62-.Ltext0 + .quad .LBB65-.Ltext0 + .quad .LBE65-.Ltext0 + .quad 0 + .quad 0 + .quad .LBB66-.Ltext0 + .quad .LBE66-.Ltext0 + .quad .LBB69-.Ltext0 + .quad .LBE69-.Ltext0 + .quad 0 + .quad 0 + .section .debug_line,"",@progbits +.Ldebug_line0: + .section .debug_str,"MS",@progbits,1 +.LASF9: + .string "__off_t" +.LASF8: + .string "short int" +.LASF20: + .string "_IO_read_ptr" +.LASF32: + .string "_chain" +.LASF38: + .string "_shortbuf" +.LASF2: + .string "size_t" +.LASF66: + .string "__min_needed_from" +.LASF78: + .string "__statep" +.LASF120: + .string "../sysdeps/x86_64/tst-auditmod10a.c" +.LASF45: + .string "_freeres_size" +.LASF114: + .string "_mm512_undefined_si512" +.LASF26: + .string "_IO_buf_base" +.LASF113: + .string "_IO_jump_t" +.LASF14: + .string "long long unsigned int" +.LASF67: + .string "__max_needed_from" +.LASF53: + .string "__mbstate_t" +.LASF73: + .string "__outbuf" +.LASF13: + .string "long long int" +.LASF7: + .string "signed char" +.LASF18: + .string "__mmask8" +.LASF33: + .string "_fileno" +.LASF21: + .string "_IO_read_end" +.LASF0: + .string "long int" +.LASF115: + .string "_mm512_set1_epi64" +.LASF82: + .string "__gconv_end_fct" +.LASF19: + .string "_flags" +.LASF42: + .string "_wide_data" +.LASF118: + .string "__builtin_puts" +.LASF36: + .string "_cur_column" +.LASF97: + .string "_IO_codecvt" +.LASF16: + .string "double" +.LASF76: + .string "__invocation_counter" +.LASF94: + .string "__codecvt_partial" +.LASF35: + .string "_old_offset" +.LASF40: + .string "_offset" +.LASF106: + .string "__cd_in" +.LASF95: + .string "__codecvt_error" +.LASF103: + .string "__codecvt_do_always_noconv" +.LASF100: + .string "__codecvt_do_unshift" +.LASF88: + .string "_G_iconv_t" +.LASF57: + .string "__shlib_handle" +.LASF80: + .string "__gconv_btowc_fct" +.LASF111: + .string "_wide_vtable" +.LASF90: + .string "_next" +.LASF89: + .string "_IO_marker" +.LASF116: + .string "stdin" +.LASF6: + .string "unsigned int" +.LASF50: + .string "__wchb" +.LASF1: + .string "long unsigned int" +.LASF123: + .string "__codecvt_result" +.LASF71: + .string "__data" +.LASF24: + .string "_IO_write_ptr" +.LASF54: + .string "__gconv_fct" +.LASF126: + .string "audit_test" +.LASF91: + .string "_sbuf" +.LASF5: + .string "short unsigned int" +.LASF85: + .string "__steps" +.LASF28: + .string "_IO_save_base" +.LASF49: + .string "__wch" +.LASF93: + .string "__codecvt_ok" +.LASF96: + .string "__codecvt_noconv" +.LASF39: + .string "_lock" +.LASF34: + .string "_flags2" +.LASF46: + .string "_mode" +.LASF117: + .string "stdout" +.LASF44: + .string "_freeres_buf" +.LASF63: + .string "__btowc_fct" +.LASF69: + .string "__max_needed_to" +.LASF41: + .string "_codecvt" +.LASF128: + .string "puts" +.LASF11: + .string "sizetype" +.LASF61: + .string "__to_name" +.LASF62: + .string "__fct" +.LASF102: + .string "__codecvt_do_encoding" +.LASF68: + .string "__min_needed_to" +.LASF98: + .string "__codecvt_destr" +.LASF81: + .string "__gconv_init_fct" +.LASF83: + .string "__gconv_info" +.LASF122: + .string "_IO_lock_t" +.LASF55: + .string "_IO_FILE" +.LASF119: + .string "GNU C 4.9.2 20141101 (Red Hat 4.9.2-1) -fpreprocessed -mavx512f -mtune=generic -march=x86-64 -g -O2 -std=gnu99 -fgnu89-inline -fmerge-all-constants -frounding-math -fPIC" +.LASF101: + .string "__codecvt_do_in" +.LASF15: + .string "float" +.LASF92: + .string "_pos" +.LASF84: + .string "__nsteps" +.LASF31: + .string "_markers" +.LASF104: + .string "__codecvt_do_length" +.LASF56: + .string "__gconv_step" +.LASF75: + .string "__flags" +.LASF4: + .string "unsigned char" +.LASF27: + .string "_IO_buf_end" +.LASF110: + .string "_IO_last_state" +.LASF125: + .string "_mm512_setzero_si512" +.LASF64: + .string "__init_fct" +.LASF37: + .string "_vtable_offset" +.LASF17: + .string "__v8di" +.LASF105: + .string "__codecvt_do_max_length" +.LASF86: + .string "__cd" +.LASF51: + .string "__count" +.LASF70: + .string "__stateful" +.LASF52: + .string "__value" +.LASF87: + .string "__combined" +.LASF58: + .string "__modname" +.LASF107: + .string "__cd_out" +.LASF12: + .string "char" +.LASF124: + .string "__m512i" +.LASF77: + .string "__internal_use" +.LASF129: + .string "abort" +.LASF10: + .string "__off64_t" +.LASF22: + .string "_IO_read_base" +.LASF30: + .string "_IO_save_end" +.LASF59: + .string "__counter" +.LASF74: + .string "__outbufend" +.LASF3: + .string "wchar_t" +.LASF25: + .string "_IO_write_end" +.LASF47: + .string "_unused2" +.LASF48: + .string "wint_t" +.LASF99: + .string "__codecvt_do_out" +.LASF29: + .string "_IO_backup_base" +.LASF43: + .string "_freeres_list" +.LASF60: + .string "__from_name" +.LASF108: + .string "_IO_wide_data" +.LASF72: + .string "__gconv_step_data" +.LASF79: + .string "__state" +.LASF65: + .string "__end_fct" +.LASF23: + .string "_IO_write_base" +.LASF121: + .string "/root/glibc/sysdeps" +.LASF109: + .string "_IO_state" +.LASF127: + .string "memcmp" +.LASF112: + .string "__gconv_loaded_object" + .ident "GCC: (GNU) 4.9.2 20141101 (Red Hat 4.9.2-1)" + .section .note.GNU-stack,"",@progbits diff --git a/tests/bugs/Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script/main.fmf b/tests/bugs/Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script/main.fmf index c4202d8..51d9c05 100644 --- a/tests/bugs/Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script/main.fmf +++ b/tests/bugs/Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script/main.fmf @@ -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" diff --git a/tests/bugs/Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script/test.sh b/tests/bugs/Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script/test.sh index b9e4187..99c8fdc 100755 --- a/tests/bugs/Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script/test.sh +++ b/tests/bugs/Add-.debug_pubtypes-and-.debug_ranges-to-builtin-ld-linker-script/test.sh @@ -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" diff --git a/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/main.fmf b/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/main.fmf new file mode 100644 index 0000000..edb6df9 --- /dev/null +++ b/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/main.fmf @@ -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 diff --git a/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/repro.sh b/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/repro.sh new file mode 100755 index 0000000..a537ee4 --- /dev/null +++ b/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/repro.sh @@ -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 < +#include +#include +#include +#include + +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 diff --git a/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/test.sh b/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/test.sh new file mode 100755 index 0000000..d8adb1a --- /dev/null +++ b/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/test.sh @@ -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 diff --git a/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/tst-load-segment-gaps.py b/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/tst-load-segment-gaps.py new file mode 100644 index 0000000..85ae734 --- /dev/null +++ b/tests/bugs/Avoid-creating-gaps-between-adjacent-LOAD-segments/tst-load-segment-gaps.py @@ -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 +# . + +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) diff --git a/tests/bugs/Backport-relro_padding-entsize-fix/libclang.so.18.1.xz b/tests/bugs/Backport-relro_padding-entsize-fix/libclang.so.18.1.xz new file mode 100644 index 0000000..fe1b6a5 Binary files /dev/null and b/tests/bugs/Backport-relro_padding-entsize-fix/libclang.so.18.1.xz differ diff --git a/tests/bugs/Backport-relro_padding-entsize-fix/main.fmf b/tests/bugs/Backport-relro_padding-entsize-fix/main.fmf new file mode 100644 index 0000000..61e9bf2 --- /dev/null +++ b/tests/bugs/Backport-relro_padding-entsize-fix/main.fmf @@ -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 diff --git a/tests/bugs/Backport-relro_padding-entsize-fix/test.sh b/tests/bugs/Backport-relro_padding-entsize-fix/test.sh new file mode 100755 index 0000000..a62fb24 --- /dev/null +++ b/tests/bugs/Backport-relro_padding-entsize-fix/test.sh @@ -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 diff --git a/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/main.fmf b/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/main.fmf new file mode 100644 index 0000000..c60d4cb --- /dev/null +++ b/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/main.fmf @@ -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 diff --git a/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/repr.s b/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/repr.s new file mode 100644 index 0000000..bf0f878 --- /dev/null +++ b/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/repr.s @@ -0,0 +1,4 @@ + .text + .global fred +fred: + nop diff --git a/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/test.sh b/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/test.sh new file mode 100755 index 0000000..2aaab4a --- /dev/null +++ b/tests/bugs/Backport-selective-allocation-of-PGSTE-to-avoid/test.sh @@ -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 +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# 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 diff --git a/tests/bugs/Bogus-warning-about-cross-object-references-to/test.sh b/tests/bugs/Bogus-warning-about-cross-object-references-to/test.sh index 526167f..f76296a 100755 --- a/tests/bugs/Bogus-warning-about-cross-object-references-to/test.sh +++ b/tests/bugs/Bogus-warning-about-cross-object-references-to/test.sh @@ -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" diff --git a/tests/bugs/Disable-separate-code-for-aarch64/main.fmf b/tests/bugs/Disable-separate-code-for-aarch64/main.fmf new file mode 100644 index 0000000..d096cc0 --- /dev/null +++ b/tests/bugs/Disable-separate-code-for-aarch64/main.fmf @@ -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 diff --git a/tests/bugs/Disable-separate-code-for-aarch64/reproducer.c b/tests/bugs/Disable-separate-code-for-aarch64/reproducer.c new file mode 100644 index 0000000..cf601ce --- /dev/null +++ b/tests/bugs/Disable-separate-code-for-aarch64/reproducer.c @@ -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); } diff --git a/tests/bugs/Disable-separate-code-for-aarch64/test.sh b/tests/bugs/Disable-separate-code-for-aarch64/test.sh new file mode 100755 index 0000000..1e24ed9 --- /dev/null +++ b/tests/bugs/Disable-separate-code-for-aarch64/test.sh @@ -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 diff --git a/tests/bugs/ELFv2-localentry-not-supported-by-RHEL7-1-LE/main.fmf b/tests/bugs/ELFv2-localentry-not-supported-by-RHEL7-1-LE/main.fmf new file mode 100644 index 0000000..dd34400 --- /dev/null +++ b/tests/bugs/ELFv2-localentry-not-supported-by-RHEL7-1-LE/main.fmf @@ -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 diff --git a/tests/bugs/ELFv2-localentry-not-supported-by-RHEL7-1-LE/test.sh b/tests/bugs/ELFv2-localentry-not-supported-by-RHEL7-1-LE/test.sh new file mode 100755 index 0000000..08dfd11 --- /dev/null +++ b/tests/bugs/ELFv2-localentry-not-supported-by-RHEL7-1-LE/test.sh @@ -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 +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# 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 diff --git a/tests/bugs/Static-linking-results-in-misleading-error-message/main.fmf b/tests/bugs/Static-linking-results-in-misleading-error-message/main.fmf new file mode 100644 index 0000000..9a3c2d6 --- /dev/null +++ b/tests/bugs/Static-linking-results-in-misleading-error-message/main.fmf @@ -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 diff --git a/tests/bugs/Static-linking-results-in-misleading-error-message/test.sh b/tests/bugs/Static-linking-results-in-misleading-error-message/test.sh new file mode 100755 index 0000000..81b79a2 --- /dev/null +++ b/tests/bugs/Static-linking-results-in-misleading-error-message/test.sh @@ -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 diff --git a/tests/bugs/SystemTap-affected-by-stapsdt-base-1/test.sh b/tests/bugs/SystemTap-affected-by-stapsdt-base-1/test.sh index dae48f7..da389b8 100755 --- a/tests/bugs/SystemTap-affected-by-stapsdt-base-1/test.sh +++ b/tests/bugs/SystemTap-affected-by-stapsdt-base-1/test.sh @@ -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 diff --git a/tests/bugs/TLS-variable-wrongly-relocated-on-debug-info/main.fmf b/tests/bugs/TLS-variable-wrongly-relocated-on-debug-info/main.fmf index c8f3b18..1b558a8 100644 --- a/tests/bugs/TLS-variable-wrongly-relocated-on-debug-info/main.fmf +++ b/tests/bugs/TLS-variable-wrongly-relocated-on-debug-info/main.fmf @@ -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 diff --git a/tests/bugs/The-binutils-package-contains-the-windmc-1-manual/test.sh b/tests/bugs/The-binutils-package-contains-the-windmc-1-manual/test.sh index 0db8a85..07c6e53 100755 --- a/tests/bugs/The-binutils-package-contains-the-windmc-1-manual/test.sh +++ b/tests/bugs/The-binutils-package-contains-the-windmc-1-manual/test.sh @@ -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 diff --git a/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/main.fmf b/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/main.fmf new file mode 100644 index 0000000..39b4b30 --- /dev/null +++ b/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/main.fmf @@ -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 diff --git a/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/reproducer.c b/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/reproducer.c new file mode 100644 index 0000000..55a861b --- /dev/null +++ b/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/reproducer.c @@ -0,0 +1,7 @@ +extern int foo (int (*)(int)); + +int bar (int arg) +{ + int baz (int arg2) { return arg2 * arg; } + return foo (& baz) + arg; +} diff --git a/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/test.sh b/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/test.sh new file mode 100755 index 0000000..85ebfbe --- /dev/null +++ b/tests/bugs/The-error-execstack-option-is-not-available-in-RHEL9/test.sh @@ -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 diff --git a/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/main.fmf b/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/main.fmf new file mode 100644 index 0000000..39b4b30 --- /dev/null +++ b/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/main.fmf @@ -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 diff --git a/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/reproducer.c b/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/reproducer.c new file mode 100644 index 0000000..c05c0c4 --- /dev/null +++ b/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/reproducer.c @@ -0,0 +1,4 @@ +int main(int argc, char **argv) +{ + return 0; +} diff --git a/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/script.ld b/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/script.ld new file mode 100644 index 0000000..094b47b --- /dev/null +++ b/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/script.ld @@ -0,0 +1,5 @@ +SECTIONS +{ + .text : { *(.text) } + .data : { *(.data) } +} diff --git a/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/test.sh b/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/test.sh new file mode 100755 index 0000000..ffec541 --- /dev/null +++ b/tests/bugs/The-error-rwx-segments-option-is-not-available-in-RHEL9/test.sh @@ -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 diff --git a/tests/bugs/aarch64-crc32-instruction-support/main.fmf b/tests/bugs/aarch64-crc32-instruction-support/main.fmf new file mode 100644 index 0000000..f69da4b --- /dev/null +++ b/tests/bugs/aarch64-crc32-instruction-support/main.fmf @@ -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 + +duration: 5m + +adjust+: + - when: arch != aarch64 + enabled: false diff --git a/tests/bugs/aarch64-crc32-instruction-support/minimal.c b/tests/bugs/aarch64-crc32-instruction-support/minimal.c new file mode 100644 index 0000000..398ec67 --- /dev/null +++ b/tests/bugs/aarch64-crc32-instruction-support/minimal.c @@ -0,0 +1,5 @@ +int +main (void) +{ + return 0; +} diff --git a/tests/bugs/aarch64-crc32-instruction-support/test.sh b/tests/bugs/aarch64-crc32-instruction-support/test.sh new file mode 100755 index 0000000..7561553 --- /dev/null +++ b/tests/bugs/aarch64-crc32-instruction-support/test.sh @@ -0,0 +1,51 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/binutils/Regression/bz1179810-aarch64-crc32-instruction-support +# Description: Checks that 'as' supports CRC32 instructions on aarch64 +# Author: Arjun Shankar +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# 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 diff --git a/tests/bugs/binutils-contains-empty-man-pages/test.sh b/tests/bugs/binutils-contains-empty-man-pages/test.sh index 9c319cb..167f731 100755 --- a/tests/bugs/binutils-contains-empty-man-pages/test.sh +++ b/tests/bugs/binutils-contains-empty-man-pages/test.sh @@ -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 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." diff --git a/tests/bugs/holes-in-debuginfo/test.c b/tests/bugs/holes-in-debuginfo/test.c index 80e7cc4..950d892 100644 --- a/tests/bugs/holes-in-debuginfo/test.c +++ b/tests/bugs/holes-in-debuginfo/test.c @@ -1,3 +1,6 @@ +extern void k(int); +extern void l(int, int*); + void f(int i) { k(i); } diff --git a/tests/bugs/ld-from-devtoolset-copies-SONAME-to-DT-NEEDED/test.sh b/tests/bugs/ld-from-devtoolset-copies-SONAME-to-DT-NEEDED/test.sh index 7b23a81..07d8825 100755 --- a/tests/bugs/ld-from-devtoolset-copies-SONAME-to-DT-NEEDED/test.sh +++ b/tests/bugs/ld-from-devtoolset-copies-SONAME-to-DT-NEEDED/test.sh @@ -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 diff --git a/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/linuxx64.efi.stub b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/linuxx64.efi.stub new file mode 100644 index 0000000..27a6304 Binary files /dev/null and b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/linuxx64.efi.stub differ diff --git a/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/linuxx64.elf.stub b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/linuxx64.elf.stub new file mode 100644 index 0000000..70c789e Binary files /dev/null and b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/linuxx64.elf.stub differ diff --git a/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/main.fmf b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/main.fmf new file mode 100644 index 0000000..8ab965b --- /dev/null +++ b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/main.fmf @@ -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 diff --git a/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/repro.sh b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/repro.sh new file mode 100755 index 0000000..20ade25 --- /dev/null +++ b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/repro.sh @@ -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" diff --git a/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/test.sh b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/test.sh new file mode 100755 index 0000000..c12d5fb --- /dev/null +++ b/tests/bugs/objcopy-doesnt-align-sections-with-section-alignment-set-section-alignment/test.sh @@ -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 diff --git a/tests/bugs/ppc64-segv-in-libbfd/test.sh b/tests/bugs/ppc64-segv-in-libbfd/test.sh index 93047e6..16731fd 100755 --- a/tests/bugs/ppc64-segv-in-libbfd/test.sh +++ b/tests/bugs/ppc64-segv-in-libbfd/test.sh @@ -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 diff --git a/tests/bugs/programs-linked-with-gcc-static-s-fail-with-unexpected-reloc-type-in-static-binary/main.fmf b/tests/bugs/programs-linked-with-gcc-static-s-fail-with-unexpected-reloc-type-in-static-binary/main.fmf index 840bc1a..ada52cc 100644 --- a/tests/bugs/programs-linked-with-gcc-static-s-fail-with-unexpected-reloc-type-in-static-binary/main.fmf +++ b/tests/bugs/programs-linked-with-gcc-static-s-fail-with-unexpected-reloc-type-in-static-binary/main.fmf @@ -5,7 +5,7 @@ description: | stripping with strip works fine. contact+: - - Michal Nowak + - Michal Nowak require+: - glibc-static diff --git a/tests/bugs/when-mistaking-argument-of-strings/test.sh b/tests/bugs/when-mistaking-argument-of-strings/test.sh index b2ebef1..242c318 100755 --- a/tests/bugs/when-mistaking-argument-of-strings/test.sh +++ b/tests/bugs/when-mistaking-argument-of-strings/test.sh @@ -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 diff --git a/tests/dts-probe-binaries/main.fmf b/tests/dts-probe-binaries/main.fmf index 53bc93d..e08cd32 100644 --- a/tests/dts-probe-binaries/main.fmf +++ b/tests/dts-probe-binaries/main.fmf @@ -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" diff --git a/tests/dts-probe-binaries/test.sh b/tests/dts-probe-binaries/test.sh index 6b4c997..f2a12ef 100755 --- a/tests/dts-probe-binaries/test.sh +++ b/tests/dts-probe-binaries/test.sh @@ -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 diff --git a/tests/lib.sh b/tests/lib.sh index 9c75473..8fff10d 100644 --- a/tests/lib.sh +++ b/tests/lib.sh @@ -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'" diff --git a/tests/main.fmf b/tests/main.fmf index 61e8585..7c3ae22 100644 --- a/tests/main.fmf +++ b/tests/main.fmf @@ -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+: diff --git a/tests/rebuilds/kernel/main.fmf b/tests/rebuilds/kernel/main.fmf index 1e47cb7..dadeaa7 100644 --- a/tests/rebuilds/kernel/main.fmf +++ b/tests/rebuilds/kernel/main.fmf @@ -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 diff --git a/tests/rebuilds/kernel/test.sh b/tests/rebuilds/kernel/test.sh index 756fe70..d9693c0 100755 --- a/tests/rebuilds/kernel/test.sh +++ b/tests/rebuilds/kernel/test.sh @@ -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)" diff --git a/tests/selinux-context/main.fmf b/tests/selinux-context/main.fmf index 1286d8e..f1b553f 100644 --- a/tests/selinux-context/main.fmf +++ b/tests/selinux-context/main.fmf @@ -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 diff --git a/tests/supported-targets/10_aarch64_arch b/tests/supported-targets/10_aarch64_arch new file mode 100644 index 0000000..40eb53d --- /dev/null +++ b/tests/supported-targets/10_aarch64_arch @@ -0,0 +1,16 @@ +aarch64 +arm +armv2 +armv2a +armv3 +armv3m +armv4 +armv4t +armv5 +armv5t +armv5te +xscale +ep9312 +iwmmxt +iwmmxt2 +plugin diff --git a/tests/supported-targets/10_aarch64_tgt b/tests/supported-targets/10_aarch64_tgt new file mode 100644 index 0000000..f587143 --- /dev/null +++ b/tests/supported-targets/10_aarch64_tgt @@ -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 diff --git a/tests/supported-targets/10_ppc64_arch b/tests/supported-targets/10_ppc64_arch new file mode 100644 index 0000000..cf3789b --- /dev/null +++ b/tests/supported-targets/10_ppc64_arch @@ -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 diff --git a/tests/supported-targets/10_ppc64_tgt b/tests/supported-targets/10_ppc64_tgt new file mode 100644 index 0000000..19faa60 --- /dev/null +++ b/tests/supported-targets/10_ppc64_tgt @@ -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 diff --git a/tests/supported-targets/10_ppc64le_arch b/tests/supported-targets/10_ppc64le_arch new file mode 100644 index 0000000..cf3789b --- /dev/null +++ b/tests/supported-targets/10_ppc64le_arch @@ -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 diff --git a/tests/supported-targets/10_ppc64le_tgt b/tests/supported-targets/10_ppc64le_tgt new file mode 100644 index 0000000..40dd3f9 --- /dev/null +++ b/tests/supported-targets/10_ppc64le_tgt @@ -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 diff --git a/tests/supported-targets/10_s390x_arch b/tests/supported-targets/10_s390x_arch new file mode 100644 index 0000000..1dcd6fa --- /dev/null +++ b/tests/supported-targets/10_s390x_arch @@ -0,0 +1,3 @@ +s390:31-bit +s390:64-bit +plugin diff --git a/tests/supported-targets/10_s390x_tgt b/tests/supported-targets/10_s390x_tgt new file mode 100644 index 0000000..34a9dfd --- /dev/null +++ b/tests/supported-targets/10_s390x_tgt @@ -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 diff --git a/tests/supported-targets/10_x86_64_arch b/tests/supported-targets/10_x86_64_arch new file mode 100644 index 0000000..b2cf7d6 --- /dev/null +++ b/tests/supported-targets/10_x86_64_arch @@ -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 diff --git a/tests/supported-targets/10_x86_64_tgt b/tests/supported-targets/10_x86_64_tgt new file mode 100644 index 0000000..76f6081 --- /dev/null +++ b/tests/supported-targets/10_x86_64_tgt @@ -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 diff --git a/tests/supported-targets/fedora_40_x86_64_arch b/tests/supported-targets/fedora_40_x86_64_arch new file mode 100644 index 0000000..4807977 --- /dev/null +++ b/tests/supported-targets/fedora_40_x86_64_arch @@ -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 diff --git a/tests/supported-targets/fedora_40_x86_64_tgt b/tests/supported-targets/fedora_40_x86_64_tgt new file mode 100644 index 0000000..a3b589f --- /dev/null +++ b/tests/supported-targets/fedora_40_x86_64_tgt @@ -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 diff --git a/tests/supported-targets/main.fmf b/tests/supported-targets/main.fmf index 6cf5c60..5bbcb0c 100644 --- a/tests/supported-targets/main.fmf +++ b/tests/supported-targets/main.fmf @@ -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" diff --git a/tests/supported-targets/test.sh b/tests/supported-targets/test.sh index 75c4f9f..a5bc224 100755 --- a/tests/supported-targets/test.sh +++ b/tests/supported-targets/test.sh @@ -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:" diff --git a/tests/testsuite/interesting-cases.sh b/tests/testsuite/interesting-cases.sh new file mode 100644 index 0000000..fa80413 --- /dev/null +++ b/tests/testsuite/interesting-cases.sh @@ -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 +} diff --git a/tests/testsuite/main.fmf b/tests/testsuite/main.fmf index 3868add..344df55 100644 --- a/tests/testsuite/main.fmf +++ b/tests/testsuite/main.fmf @@ -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" diff --git a/tests/testsuite/test-with-cross.sh b/tests/testsuite/test-with-cross.sh index 1c56495..8f5ada8 100755 --- a/tests/testsuite/test-with-cross.sh +++ b/tests/testsuite/test-with-cross.sh @@ -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 diff --git a/tests/testsuite/test.sh b/tests/testsuite/test.sh index 383862b..bdc9272 100755 --- a/tests/testsuite/test.sh +++ b/tests/testsuite/test.sh @@ -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