use-correct-dwarf-default: Update test

* The default version is now 5. If clang version is older than 18 then
  fall back to version 4.
* Added optional env var to overwrite required dwarf version.
* Updated fmf metadata to use dwarf4 in distros that don't support v5
* Fedora 38 is EOL, removed dead code.
This commit is contained in:
Jesus Checa Hidalgo 2024-06-10 11:39:04 +02:00
commit dade06cfdd
2 changed files with 11 additions and 14 deletions

View file

@ -25,3 +25,7 @@ adjust+:
- llvm-toolset-15.0-clang
- llvm-toolset-15.0-llvm
when: "collection == llvm-toolset-15.0"
- environment+:
DWARF_VERSION: 4
when: distro < rhel-10 or distro < centos-stream-10

View file

@ -1,23 +1,16 @@
#!/bin/sh -eux
# Determine correct DWARF version to use. If Clang is newer or equal to version
# 18, we want to use DWARF5 except for Fedora 38 where we still want DWARF4.
required_dwarf_version=4
# Determine correct DWARF version to use. Defaults to version 5, but older
# distros might need to use version 4, which can be configured using the
# DWARF_VERSION env var
required_dwarf_version=${DWARF_VERSION:-5}
# Get clang version
CLANG_PKG=$(rpm -qf --queryformat '%{name}' $(readlink -f $(type -p clang)))
clang_version=$(rpm -q --queryformat "%{version}" $CLANG_PKG | grep -ioP "^[0-9]+")
if [ $clang_version -ge 18 ]; then
>&2 echo "clang is greater or equal version 18";
required_dwarf_version=5
fi
if [ -e /etc/fedora-release ]; then
fedora_version=$(grep -ioP "Fedora release \K[0-9]+" /etc/fedora-release)
if [ $fedora_version -le 38 ]; then
required_dwarf_version=4
fi
if [ $clang_version -lt 18 ]; then
>&2 echo "clang is older than version 18";
required_dwarf_version=4
fi
echo "int main(){ return 0; }" | clang -g -v -x c - 2> build.log