[PATCH] D134559: [LLD][COFF] Generate map file even if no /out flag is present

Pengxuan Zheng via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 25 11:51:08 PDT 2022


pzheng updated this revision to Diff 462746.
pzheng added a comment.

Add a dedicated test


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134559/new/

https://reviews.llvm.org/D134559

Files:
  lld/COFF/Driver.cpp
  lld/test/COFF/map.test


Index: lld/test/COFF/map.test
===================================================================
--- lld/test/COFF/map.test
+++ lld/test/COFF/map.test
@@ -11,6 +11,11 @@
 # RUN: lld-link /out:%t.dll /dll %t-dll.obj /export:exportfn1 \
 # RUN:   /export:foo=exportfn2 /map /mapinfo:exports
 # RUN: FileCheck -check-prefix=MAPINFO -strict-whitespace %s < %t.map
+# RUN: rm -rf %t && mkdir -p %t && cd %t
+# RUN: cp %t.obj map.test.tmp.obj
+# RUN: cp %t-dll.lib map.test.tmp-dll.lib
+# RUN: lld-link /entry:main map.test.tmp.obj map.test.tmp-dll.lib /map
+# RUN: FileCheck -check-prefix=MAP -strict-whitespace %s < map.test.tmp.map
 
 # MAP: {{.*}}
 # MAP-EMPTY:
Index: lld/COFF/Driver.cpp
===================================================================
--- lld/COFF/Driver.cpp
+++ lld/COFF/Driver.cpp
@@ -1919,25 +1919,6 @@
   if (config->mingw || config->debugDwarf)
     config->warnLongSectionNames = false;
 
-  config->lldmapFile = getMapFile(args, OPT_lldmap, OPT_lldmap_file);
-  config->mapFile = getMapFile(args, OPT_map, OPT_map_file);
-
-  if (config->mapFile != "" && args.hasArg(OPT_map_info)) {
-    for (auto *arg : args.filtered(OPT_map_info)) {
-      std::string s = StringRef(arg->getValue()).lower();
-      if (s == "exports")
-        config->mapInfo = true;
-      else
-        error("unknown option: /mapinfo:" + s);
-    }
-  }
-
-  if (config->lldmapFile != "" && config->lldmapFile == config->mapFile) {
-    warn("/lldmap and /map have the same output file '" + config->mapFile +
-         "'.\n>>> ignoring /lldmap");
-    config->lldmapFile.clear();
-  }
-
   if (config->incremental && args.hasArg(OPT_profile)) {
     warn("ignoring '/incremental' due to '/profile' specification");
     config->incremental = false;
@@ -2143,6 +2124,25 @@
     return;
   }
 
+  config->lldmapFile = getMapFile(args, OPT_lldmap, OPT_lldmap_file);
+  config->mapFile = getMapFile(args, OPT_map, OPT_map_file);
+
+  if (config->mapFile != "" && args.hasArg(OPT_map_info)) {
+    for (auto *arg : args.filtered(OPT_map_info)) {
+      std::string s = StringRef(arg->getValue()).lower();
+      if (s == "exports")
+        config->mapInfo = true;
+      else
+        error("unknown option: /mapinfo:" + s);
+    }
+  }
+
+  if (config->lldmapFile != "" && config->lldmapFile == config->mapFile) {
+    warn("/lldmap and /map have the same output file '" + config->mapFile +
+         "'.\n>>> ignoring /lldmap");
+    config->lldmapFile.clear();
+  }
+
   if (shouldCreatePDB) {
     // Put the PDB next to the image if no /pdb flag was passed.
     if (config->pdbPath.empty()) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134559.462746.patch
Type: text/x-patch
Size: 2599 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220925/b0c391a1/attachment.bin>


More information about the llvm-commits mailing list