diff --git a/lld/MachO/Writer.cpp b/lld/MachO/Writer.cpp --- a/lld/MachO/Writer.cpp +++ b/lld/MachO/Writer.cpp @@ -1175,7 +1175,13 @@ sortSegmentsAndSections(); createLoadCommands(); finalizeAddresses(); - threadPool.async(writeMapFile); + threadPool.async([&] { + if (LLVM_ENABLE_THREADS && config->timeTraceEnabled) + timeTraceProfilerInitialize(config->timeTraceGranularity, "writeMapFile"); + writeMapFile(); + if (LLVM_ENABLE_THREADS && config->timeTraceEnabled) + timeTraceProfilerFinishThread(); + }); finalizeLinkEditSegment(); writeOutputFile(); } diff --git a/lld/test/MachO/map-file.s b/lld/test/MachO/map-file.s --- a/lld/test/MachO/map-file.s +++ b/lld/test/MachO/map-file.s @@ -3,10 +3,11 @@ # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/foo.s -o %t/foo.o # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/test.s -o %t/test.o -# RUN: %lld -map %t/map %t/test.o %t/foo.o -o %t/test-map +# RUN: %lld -map %t/map %t/test.o %t/foo.o --time-trace -o %t/test-map # RUN: llvm-objdump --syms --section-headers %t/test-map > %t/objdump # RUN: cat %t/objdump %t/map > %t/out # RUN: FileCheck %s < %t/out +# RUN: FileCheck %s --check-prefix=MAPFILE < %t/test-map.time-trace #--- foo.s .section __TEXT,obj @@ -49,3 +50,5 @@ # CHECK-NEXT: 0x[[#NUMBER]] [ 1] _number # CHECK-NEXT: 0x[[#MAIN]] [ 1] _main # CHECK-NEXT: 0x[[#FOO]] [ 2] _foo + +# MAPFILE: "name":"Write map file"