aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineOperand.cpp
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2021-06-17 21:51:37 +0300
committerMartin Storsjö <martin@martin.st>2021-07-02 09:49:14 +0300
commitce211c505b82e5bbb68b936968d9b54608285416 (patch)
tree6fc8139d22d65a6b419deb6a1bc34613b87dc817 /llvm/lib/CodeGen/MachineOperand.cpp
parentc09e5e50b13aa1f5a2eafc81097ffe8a5799e5b3 (diff)
downloadllvm-ce211c505b82e5bbb68b936968d9b54608285416.zip
llvm-ce211c505b82e5bbb68b936968d9b54608285416.tar.gz
llvm-ce211c505b82e5bbb68b936968d9b54608285416.tar.bz2
[LLD] [COFF] Fix up missing stdcall decorations in MinGW mode
If linking directly against a DLL without an import library, the DLL export symbols might not contain stdcall decorations. If we have an undefined symbol with decoration, and we happen to have a matching undecorated symbol (which either is lazy and can be loaded, or already defined), then alias it against that instead. This matches what's done in reverse, when we have a def file declaring to export a symbol without decoration, but we only have a defined decorated symbol. In that case we do a fuzzy match (SymbolTable::findMangle). This case is more straightforward; if we have a decorated undefined symbol, just strip the decoration and look for the corresponding undecorated symbol name. Add warnings and options for either silencing the warning or disabling the whole feature, corresponding to how ld.bfd does it. (This feature works for any symbol decoration mismatch, not only when linking against a DLL directly; ld.bfd also tolerates it anywhere, and also fixes up mismatches in the other direction, like SymbolTable::findMangle, for any symbol, not only exports. But in practice, at least for lld, it would primarily end up used for linking against DLLs.) Differential Revision: https://reviews.llvm.org/D104532
Diffstat (limited to 'llvm/lib/CodeGen/MachineOperand.cpp')
0 files changed, 0 insertions, 0 deletions