[llvm-dev] LLD COFF not closing mmaps to input files?
Andrew Kelley via llvm-dev
llvm-dev at lists.llvm.org
Sun Oct 15 18:57:48 PDT 2017
I believe this line is the culprit:
COFF/Driver.cpp:102:
make<std::unique_ptr<MemoryBuffer>>(std::move(MB)); // take ownership
Patch forthcoming.
On Sun, Oct 15, 2017 at 9:45 PM, Andrew Kelley <superjoe30 at gmail.com> wrote:
> I've got a patched LLD 5.0.0 like this:
>
> diff --git a/deps/lld/COFF/Driver.cpp b/deps/lld/COFF/Driver.cpp
> index 854c3e69..8bab1c11 100644
> --- a/deps/lld/COFF/Driver.cpp
> +++ b/deps/lld/COFF/Driver.cpp
> @@ -1030,7 +1030,7 @@ void LinkerDriver::link(ArrayRef<const char *>
> ArgsArr) {
> if (!Args.hasArgNoClaim(OPT_INPUT)) {
> fixupExports();
> createImportLibrary(/*AsLib=*/true);
> - exit(0);
> + return;
> }
>
> // Handle /delayload
> @@ -1172,9 +1172,6 @@ void LinkerDriver::link(ArrayRef<const char *>
> ArgsArr) {
>
> // Write the result.
> writeResult(&Symtab);
> -
> - // Call exit to avoid calling destructors.
> - exit(0);
> }
>
> } // namespace coff
>
>
> I'm getting this error from LLVM:
> unable to write object file c:\msys64\home\andy\zig\zig-cache\compiler_rt.obj:
> The requested operation cannot be performed on a file with a user-mapped
> section open.
>
> The same process calls LLD with this .obj as a linker input file, then
> tries to write to the same .obj file later.
>
> I believe LLD is mmapping the .obj file and then not cleaning it up.
>
> Can I have some guidance as to where in the code I could discover this and
> clean it up?
>
> Regards,
> Andrew
> http://ziglang.org/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171015/7847f6ba/attachment.html>
More information about the llvm-dev
mailing list