84038cf914
This patch relaxes the constraints on the error message saved in PDBInputFile when failing to load a pdb file. Storing an `Error` member infers that it must be accessed exactly once, which doesn't fit in several scenarios: - If an invalid PDB file is provided as input file but never used, a loading error is created but never handled, causing an assert at shutdown. - PDB file created using MSVC's `/Zi` option : The loading error message must be displayed once per obj file. Also, the state of `PDBInputFile` was altered when reading (taking) the `Error` member, causing issues: - accessing it (taking the `Error`) makes the object look valid whereas it's not properly initialized - read vs write concurrency on a same `PDBInputFile` in the ghash parallel algorithm The solution adopted here was to instead store an optional error string, and generate Error objects from it on demand. Differential Revision: https://reviews.llvm.org/D140333
15 lines
406 B
LLVM
15 lines
406 B
LLVM
; REQUIRES: x86
|
|
; RUN: llvm-as -o %t.obj %s
|
|
|
|
; Verify that an invalid but unused input pdb file doesn't trigger any warning or error.
|
|
; RUN: lld-link /out:%t.exe %t.obj %S/Inputs/bad-block-size.pdb /entry:main /subsystem:console /WX
|
|
|
|
target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-pc-windows-msvc"
|
|
|
|
define void @main() {
|
|
ret void
|
|
}
|
|
|
|
|