
When the Dwarf Version metadata was initially added (r184276) there was no support for Module::Max - though the comment suggested that was the desired behavior. The original behavior was Module::Warn which would warn and then pick whichever version came first - which is pretty arbitrary/luck-based if the consumer has some need for one version or the other. Now that the functionality's been added (r303590) this change updates the implementation to match the desired goal. The general logic here is - if you compile /some/ of your program with a more recent DWARF version, you must have a consumer that can handle it, so might as well use it for /everything/. The only place where this might fall down is if you have a need to use an old tool (supporting only the older DWARF version) for some subset of your program. In which case now it'll all be the higher version. That seems pretty narrow (& the inverse could happen too - you specifically /need/ the higher DWARF version for some extra expressivity, etc, in some part of the program)
50 lines
2.7 KiB
C
50 lines
2.7 KiB
C
// RUN: %clang -target x86_64-linux-gnu -gdwarf-2 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER2
|
|
// RUN: %clang -target x86_64-linux-gnu -gdwarf-3 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER3
|
|
// RUN: %clang -target x86_64-linux-gnu -gdwarf-4 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
|
|
// RUN: %clang -target x86_64-linux-gnu -gdwarf-5 -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER5
|
|
// RUN: %clang -target x86_64-linux-gnu -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
|
|
// RUN: %clang -target x86_64-linux-gnu -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER4
|
|
|
|
// The -isysroot is used as a hack to avoid LIT messing with the SDKROOT
|
|
// environment variable which indirecty overrides the version in the target
|
|
// triple used here.
|
|
// RUN: %clang -target x86_64-apple-macosx10.11 -g -S -emit-llvm -o - %s -isysroot %t | FileCheck %s --check-prefix=VER4
|
|
// RUN: %clang -target x86_64-apple-darwin14 -g -S -emit-llvm -o - %s -isysroot %t | FileCheck %s --check-prefix=VER2
|
|
|
|
// RUN: %clang -target powerpc-unknown-openbsd -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER2
|
|
// RUN: %clang -target powerpc-unknown-freebsd -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER2
|
|
// RUN: %clang -target i386-pc-solaris -g -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER2
|
|
// RUN: %clang -target i386-pc-solaris -gdwarf -S -emit-llvm -o - %s | FileCheck %s --check-prefix=VER2
|
|
|
|
// Check which debug info formats we use on Windows. By default, in an MSVC
|
|
// environment, we should use codeview. You can enable dwarf, which implicitly
|
|
// disables codeview, of you can explicitly ask for both if you don't know how
|
|
// the app will be debugged.
|
|
// Default is codeview.
|
|
// RUN: %clang -target i686-pc-windows-msvc -g -S -emit-llvm -o - %s \
|
|
// RUN: | FileCheck %s --check-prefixes=NODWARF,CODEVIEW
|
|
// Explicitly request codeview.
|
|
// RUN: %clang -target i686-pc-windows-msvc -gcodeview -S -emit-llvm -o - %s \
|
|
// RUN: | FileCheck %s --check-prefixes=NODWARF,CODEVIEW
|
|
// Explicitly request DWARF.
|
|
// RUN: %clang -target i686-pc-windows-msvc -gdwarf -S -emit-llvm -o - %s \
|
|
// RUN: | FileCheck %s --check-prefixes=VER4,NOCODEVIEW
|
|
// Explicitly request both.
|
|
// RUN: %clang -target i686-pc-windows-msvc -gdwarf -gcodeview -S -emit-llvm -o - %s \
|
|
// RUN: | FileCheck %s --check-prefixes=VER4,CODEVIEW
|
|
int main (void) {
|
|
return 0;
|
|
}
|
|
|
|
// NOCODEVIEW-NOT: !"CodeView"
|
|
|
|
// VER2: !{i32 7, !"Dwarf Version", i32 2}
|
|
// VER3: !{i32 7, !"Dwarf Version", i32 3}
|
|
// VER4: !{i32 7, !"Dwarf Version", i32 4}
|
|
// VER5: !{i32 7, !"Dwarf Version", i32 5}
|
|
|
|
// NODWARF-NOT: !"Dwarf Version"
|
|
// CODEVIEW: !{i32 2, !"CodeView", i32 1}
|
|
// NOCODEVIEW-NOT: !"CodeView"
|
|
// NODWARF-NOT: !"Dwarf Version"
|