From c951edb7b22e709e50b8ae2ea6bce46f1d7d2741 Mon Sep 17 00:00:00 2001 From: Pengxuan Zheng Date: Mon, 8 Aug 2022 17:49:08 -0700 Subject: [PATCH] [LLD][COFF] Identify /GL object files which are inside libraries With D26647, we can already identify input object files compiled by cl.exe with /GL. It seems to be helpful to do the same and print an error message for those object files compiled with /GL but are inside libraries/archives too. Reviewed By: rnk, thieta Differential Revision: https://reviews.llvm.org/D131458 --- lld/COFF/Driver.cpp | 4 ++++ lld/test/COFF/Inputs/cl-gl.lib | Bin 0 -> 4038 bytes lld/test/COFF/cl-gl.test | 2 ++ 3 files changed, 6 insertions(+) create mode 100755 lld/test/COFF/Inputs/cl-gl.lib diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index 1e080b1..4f7b9e4 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -279,6 +279,10 @@ void LinkerDriver::addArchiveBuffer(MemoryBufferRef mb, StringRef symName, } else if (magic == file_magic::bitcode) { obj = make(ctx, mb, parentName, offsetInArchive, /*lazy=*/false); + } else if (magic == file_magic::coff_cl_gl_object) { + error(mb.getBufferIdentifier() + + ": is not a native COFF file. Recompile without /GL?"); + return; } else { error("unknown file type: " + mb.getBufferIdentifier()); return; diff --git a/lld/test/COFF/Inputs/cl-gl.lib b/lld/test/COFF/Inputs/cl-gl.lib new file mode 100755 index 0000000000000000000000000000000000000000..7a6d454cbcc929961805bc8d231040a6546ac408 GIT binary patch literal 4038 zcmeHKPiWI%6n|gSY_os1uHqP?tcncxCt3Q(ZtFxkryYVbXzO&E!_p+(DybQ5shg)L zGCX?sBqD+e3W7HgJbM;AdGj=oRq?p^eP5fbnTm+lJm{DA=hxTw-j~Ar9XTmimDN*$ ziI`jB>9imSCni&Iw_j+R@uclv4gdhcpYIj9d=vgX)AVj8nx>r&K|9}`(*9OiBC(tA zc1Bv&)=O2nqDhL*t?0Z_ya5w-6Lv4HUQ<&}C9ObQ5Yp*%ES8*1rdl4-t7RcjH^0n| zUY*)`9eVQV`NE5bAKx4u&cAQ;0_+cU1BqP<14M8qM0mBTDfNcdvH(V~GEQ3Ult2V{ zrK}$-tvKFmSi8IjmxV}{;#PDAcOPpn|AfO=Vhe#x`fRK9bnsmE4mysH^cuHEFlTM$zAjuUqosyIUuj+a% zh!b%2jWtaz>%f)ZOhzgh2Co2j1>(SoMFBX~r~#KVa7fo16{&6*dJU^8MUq?Ra%w|~ zrv!ctm&VQKfm&ID5gkOrgF|0`BZ{t_7NtC|p zEeBRT@h0F+z?*J=AmDd_{8hiM|dGAl;s3sAsIuw^YUNM?rsp)d;jxkIp*?cLZ`_|kZgy2DDfGpj=N^`sW0Qm02>H{W&ztWc_ z6oD_R%_TpwEC2?wB~7mLg7APY;Kb9(ut*&YA{@&to$QK`8wL@6<(5unh1mec5N_ob yifOYd(mR9f&UbMX(`HnpO9l~6-8jS`!lm3oYWNA-1M8Lm literal 0 HcmV?d00001 diff --git a/lld/test/COFF/cl-gl.test b/lld/test/COFF/cl-gl.test index 3061150..2c1e7bd 100644 --- a/lld/test/COFF/cl-gl.test +++ b/lld/test/COFF/cl-gl.test @@ -1,4 +1,6 @@ # RUN: not lld-link /out:%t.exe /entry:main %S/Inputs/cl-gl.obj >& %t.log # RUN: FileCheck %s < %t.log +# RUN: not lld-link /out:%t.exe /entry:main %S/Inputs/cl-gl.lib >& %t1.log +# RUN: FileCheck %s < %t1.log # CHECK: is not a native COFF file. Recompile without /GL -- 2.7.4