diff --git a/use-correct-dwarf-default/.gitignore b/use-correct-dwarf-default/.gitignore new file mode 100644 index 0000000..0acf80b --- /dev/null +++ b/use-correct-dwarf-default/.gitignore @@ -0,0 +1,2 @@ +a.out +build.log \ No newline at end of file diff --git a/use-dwarf4-by-default/main.fmf b/use-correct-dwarf-default/main.fmf similarity index 87% rename from use-dwarf4-by-default/main.fmf rename to use-correct-dwarf-default/main.fmf index 3e54df0..b20851d 100644 --- a/use-dwarf4-by-default/main.fmf +++ b/use-correct-dwarf-default/main.fmf @@ -7,8 +7,8 @@ tier: 1 component: - llvm-toolset - clang -extra-summary: /tools/clang/use-dwarf4-by-default -extra-task: /tools/clang/use-dwarf4-by-default +extra-summary: /tools/clang/use-correct-dwarf-default +extra-task: /tools/clang/use-correct-dwarf-default extra-nitrate: TC#0614134 adjust: diff --git a/use-correct-dwarf-default/test.sh b/use-correct-dwarf-default/test.sh new file mode 100755 index 0000000..ac9b23a --- /dev/null +++ b/use-correct-dwarf-default/test.sh @@ -0,0 +1,26 @@ +#!/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 + +# Get clang version +clang_version=$(rpm -q --queryformat "%{version}" clang | 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 +fi + +echo "int main(){ return 0; }" | clang -g -v -x c - 2> build.log +# Make sure that clang is using the expected flag to use the required DWARF version +grep -q "\-dwarf-version=$required_dwarf_version" build.log +# Inspect the binary to double check expected DWARF version +llvm-dwarfdump a.out | grep -ioP "version\s*=\s*0x000$required_dwarf_version" diff --git a/use-dwarf4-by-default/test.sh b/use-dwarf4-by-default/test.sh deleted file mode 100755 index 5da8196..0000000 --- a/use-dwarf4-by-default/test.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -eux - -echo "int main(){ return 0; }" | clang -g -v -x c - 2> build.log -# Make sure that clang is using the expected flag to use DWARF 4 -grep -q "\-dwarf-version=4" build.log -# Inspect the binary to double check expected DWARF version -llvm-dwarfdump a.out | grep -i version | grep 0x0004