Hi Liming, I don't feel we can release the stable tag with the toolchain profile still holding this name. Do you have any comments?
Best Regards, Leif On Fri, Oct 25, 2019 at 11:45:10AM -0700, Andrew Fish via Groups.Io wrote: > Liming, > > Sorry I missed this mail. Thanks for the info! I was doing some > research into this too and now I think I finally understand. I think > the name for the tool chain really confused me and we should think > about changing the name. > > From what I understand CLANG9 means produce PE/COFF directly and > used the PDB debugging format. I see from the llvm site that the > linker can produce PDB directly as you mention. This all makes sense > to me now as LLVM tries to make it easy to be a drop in replacement > for VC++ or GCC. So this tool chain is designed to be able to cross > build a "Windows App" on a Linux or macOS. It also looks like the > llvm debugger, lldb, is lagging in its support for PDB based > debugging. > > Anyway I think Leif and I agree the toolchain name is very > confusing. I'd rather see it called CLANG9_WIN or CLANG_PDB. > > > On Oct 18, 2019, at 7:27 AM, Liming Gao <liming....@intel.com> wrote: > > > > Andrew: > > Here is the cover letter on CLANG9 introduction. > > https://edk2.groups.io/g/devel/message/49157 > > <https://edk2.groups.io/g/devel/message/49157> > > > > 1) Yes. CLANG9 tool chain is added to directly generate PE/COFF image > > (EFI image). > > This tool chain uses LLVM clang C compiler and lld linker, generates PE/COFF > > image and PDB compatible debug symbol format. Now, it supports IA32/X64 > > Archs. > > LLVM clang C compiler and lld linker are the standalone tool set. They > > don’t depend other lib to generate PE/COFF image. > > > > 2) Yes. CLANG9 is the cross OS tool chain. It can work on > > Windows/Linux/Mac host OS. > > LLVM LLD linker uses Windows style arguments. I verify CLANG9 for Ovmf3264 > > in Windows/Linux host OS. > > > > On Linux can you source level debug Ovmf? > > > 3) This patch enables WinHost in Windows. It doesn’t enable UnixHost. > > Now, EmulatorPkg with CLANG9 only works on Windows Host. > > This patch can make other modules pass build in Windows/Linux/Mac only if > > LLVM9 tool set is installed. > > But, the generated image may not work on Linux/Mac. I agree below linker > > flags are specific to windows host. > > So, I suggest to add the conditional statement of $(WIN_HOST_BUILD) == TRUE > > for them. > > > > For the EmulatorPkg the Host is a native App for that OS you build on, but it > seems like CLANG9 is targeted to build Windows Apps. I'm not sure but you > might be able to override all the linker commands to build a native app, or > just use the system linker for the Host? > > I'm not sure how well debugging will work mixing PDB and DWARF symbol > formats? > > Thanks, > > Andrew Fish > > > > !if $(WIN_HOST_BUILD) == TRUE > > GCC:*_CLANG9_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 > > /SUBSYSTEM:CONSOLE > > GCC:DEBUG_CLANG9_*_DLINK_FLAGS = > > /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 > > GCC:NOOPT_CLANG9_*_DLINK_FLAGS = > > /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 > > !endif > > > > Thanks > > Liming > > <>From: af...@apple.com <af...@apple.com> > > Sent: Friday, October 18, 2019 1:15 AM > > To: Ni, Ray <ray...@intel.com> > > Cc: Gao, Liming <liming....@intel.com>; devel@edk2.groups.io; Justen, > > Jordan L <jordan.l.jus...@intel.com> > > Subject: Re: [Patch v3 10/11] EmulatorPkg: Enable CLANG9 tool chain > > > > Ray, > > > > Sorry I'm coming a little late to this and I'm confused. I have some > > questions? > > 1) Does CLANG9 imply CLANGPE? > > 2) Does CLANGPE work on Linux and macOS? Can you pass the Windows style > > arguments to CLANGPE linker on Linux and macOS? > > 3) For the EmulatorPkg don't you have the extra requirement that compiler > > needs a standard C lib (or platform specific libs) to function? > > a) GCC:*_CLANG9_*_DLINK_FLAGS in EmulatorPkg.dsc seems to imply the > > Linux and macOS systems will have a Windows SKD dir and a lot of Windows > > DLLs? Does all that come when you install CLANG9 when you install it on > > Linux or macOS? > > > > > > So I guess I'm asking is the linker really the same for CLANG9 on all > > systems? I guess the answer could be yes, but it seems the C lib for the > > Host App is still an App for that OS and is OS dependent? > > > > > > Sorry if I'm missing something fundamental and this is a dumb question. > > > > > > Thanks, > > > > > > Andrew Fish > > > > > > > > > > > > On Oct 17, 2019, at 12:27 AM, Ni, Ray <ray...@intel.com > > <mailto:ray...@intel.com>> wrote: > > > > Liming, > > Emulator is using a generic SEC module. The host specific module is called > > "Host". > > So I prefer to change the macro to "WIN_HOST_BUILD", with this change, > > Reviewed-by: Ray Ni <ray...@intel.com <mailto:ray...@intel.com>> > > > > > > -----Original Message----- > > From: Gao, Liming <liming....@intel.com <mailto:liming....@intel.com>> > > Sent: Thursday, October 17, 2019 2:56 PM > > To: devel@edk2.groups.io <mailto:devel@edk2.groups.io> > > Cc: Justen, Jordan L <jordan.l.jus...@intel.com > > <mailto:jordan.l.jus...@intel.com>>; Andrew Fish > > <af...@apple.com <mailto:af...@apple.com>>; Ni, Ray <ray...@intel.com > > <mailto:ray...@intel.com>> > > Subject: [Patch v3 10/11] EmulatorPkg: Enable CLANG9 tool chain > > > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1603 > > <https://bugzilla.tianocore.org/show_bug.cgi?id=1603> > > 1. Add WIN_SEC_BUILD macro check for CLANG9 tool chain build -p > > EmulatorPkg\EmulatorPkg.dsc -a IA32 -DWIN_SEC_BUILD=TRUE -t CLANG9 > > build -p EmulatorPkg\EmulatorPkg.dsc -a X64 -DWIN_SEC_BUILD=TRUE -t > > CLANG9 2. Append CLANG CC and LINK flags to generate windows HOST. > > 3. Fix WinHost issue to call GetProcessAffinityMask() API. > > The input parameter should be UINTN pointer instead of UINT32 pointer. > > > > Cc: Jordan Justen <jordan.l.jus...@intel.com > > <mailto:jordan.l.jus...@intel.com>> > > Cc: Andrew Fish <af...@apple.com <mailto:af...@apple.com>> > > Cc: Ray Ni <ray...@intel.com <mailto:ray...@intel.com>> > > Signed-off-by: Liming Gao <liming....@intel.com > > <mailto:liming....@intel.com>> > > --- > > EmulatorPkg/Win/Host/WinHost.c | 6 +++--- > > EmulatorPkg/EmulatorPkg.dsc | 7 ++++++- > > EmulatorPkg/Win/Host/WinHost.inf | 6 ++++++ > > 3 files changed, 15 insertions(+), 4 deletions(-) > > > > diff --git a/EmulatorPkg/Win/Host/WinHost.c > > b/EmulatorPkg/Win/Host/WinHost.c index 9aba3c8959..e40ce32548 100644 > > --- a/EmulatorPkg/Win/Host/WinHost.c > > +++ b/EmulatorPkg/Win/Host/WinHost.c > > @@ -356,7 +356,7 @@ Returns: > > INTN > > EFIAPI > > main ( > > - IN INTN Argc, > > + IN INT Argc, > > IN CHAR8 **Argv, > > IN CHAR8 **Envp > > ) > > @@ -391,8 +391,8 @@ Returns: > > VOID *SecFile; > > CHAR16 *MemorySizeStr; > > CHAR16 *FirmwareVolumesStr; > > - UINT32 ProcessAffinityMask; > > - UINT32 SystemAffinityMask; > > + UINTN ProcessAffinityMask; > > + UINTN SystemAffinityMask; > > INT32 LowBit; > > > > // > > diff --git a/EmulatorPkg/EmulatorPkg.dsc b/EmulatorPkg/EmulatorPkg.dsc > > index 20f1187713..72532f5daf 100644 > > --- a/EmulatorPkg/EmulatorPkg.dsc > > +++ b/EmulatorPkg/EmulatorPkg.dsc > > @@ -237,9 +237,10 @@ > > > > [Components] > > !if "IA32" in $(ARCH) || "X64" in $(ARCH) > > - !if "MSFT" in $(FAMILY) > > + !if "MSFT" in $(FAMILY) || $(WIN_SEC_BUILD) == TRUE > > ## > > # Emulator, OS WIN application > > + # CLANG9 is cross OS tool chain. It depends on WIN_SEC_BUILD macro. > > ## > > EmulatorPkg/Win/Host/WinHost.inf > > !else > > @@ -419,7 +420,11 @@ > > > > MSFT:DEBUG_*_*_CC_FLAGS = /Od /Oy- > > MSFT:NOOPT_*_*_CC_FLAGS = /Od /Oy- > > + GCC:DEBUG_CLANG9_*_CC_FLAGS =-O0 -Wno-unused-command-line- > > argument > > + -Wno-incompatible-pointer-types -Wno-enum-conversion > > + -Wno-incompatible-pointer-types -Wno-sometimes-uninitialized > > + -Wno-constant-conversion -Wno-main-return-type > > > > MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 > > /SUBSYSTEM:CONSOLE > > MSFT:DEBUG_*_*_DLINK_FLAGS = > > /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 > > MSFT:NOOPT_*_*_DLINK_FLAGS = > > /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 > > + GCC:*_CLANG9_*_DLINK_FLAGS = /ALIGN:4096 /FILEALIGN:4096 > > /SUBSYSTEM:CONSOLE > > + GCC:DEBUG_CLANG9_*_DLINK_FLAGS = > > + /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 > > + GCC:NOOPT_CLANG9_*_DLINK_FLAGS = > > + /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000 > > diff --git a/EmulatorPkg/Win/Host/WinHost.inf > > b/EmulatorPkg/Win/Host/WinHost.inf > > index 631d5a6470..1adca10d79 100644 > > --- a/EmulatorPkg/Win/Host/WinHost.inf > > +++ b/EmulatorPkg/Win/Host/WinHost.inf > > @@ -95,3 +95,9 @@ > > MSFT:*_VS2017_X64_DLINK_FLAGS = > > /LIBPATH:"%VCToolsInstallDir%lib\x64" > > /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" > > /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" > > /NOLOGO /SUBSYSTEM:CONSOLE /NODEFAULTLIB /IGNORE:4086 /MAP > > /OPT:REF /DEBUG /MACHINE:AMD64 /LTCG Kernel32.lib MSVCRTD.lib > > vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib Winmm.lib Advapi32.lib > > MSFT:*_*_X64_ASM_FLAGS == /nologo /W3 /WX /c /Cx /Zd /W0 /Zi > > MSFT:*_*_X64_ASMLINK_FLAGS == /link /nologo > > + > > + GCC:*_CLANG9_X64_DLINK_FLAGS == > > /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 > > /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" > > /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x64" > > /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x64" > > /LIBPATH:"%VCToolsInstallDir%lib\x64" /NOLOGO /SUBSYSTEM:CONSOLE > > /NODEFAULTLIB /IGNORE:4086 /OPT:REF /DEBUG /MACHINE:AMD64 > > Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib > > Winmm.lib Advapi32.lib /lldmap > > /EXPORT:InitializeDriver=_ModuleEntryPoint > > + GCC:*_CLANG9_X64_CC_FLAGS == -m64 -g -fshort-wchar > > + -fno-strict-aliasing -Wall -c -include AutoGen.h -D > > + _CRT_SECURE_NO_WARNINGS -Wnonportable-include-path -D UNICODE > > -D > > + _CRT_SECURE_NO_DEPRECATE > > + > > + GCC:*_CLANG9_IA32_DLINK_FLAGS == > > /out:"$(BIN_DIR)\$(BASE_NAME).exe" /base:0x10000000 > > /pdb:"$(BIN_DIR)\$(BASE_NAME).pdb" > > /LIBPATH:"%UniversalCRTSdkDir%lib\%UCRTVersion%\ucrt\x86" > > /LIBPATH:"%WindowsSdkDir%lib\%WindowsSDKLibVersion%\um\x86" > > /LIBPATH:"%VCToolsInstallDir%ib\x86" /NOLOGO /SUBSYSTEM:CONSOLE > > /NODEFAULTLIB /IGNORE:4086 /OPT:REF /DEBUG /MACHINE:I386 > > Kernel32.lib MSVCRTD.lib vcruntimed.lib ucrtd.lib Gdi32.lib User32.lib > > Winmm.lib Advapi32.lib /lldmap > > /EXPORT:InitializeDriver=_ModuleEntryPoint > > + GCC:*_CLANG9_IA32_CC_FLAGS == -m32 -g -fshort-wchar > > + -fno-strict-aliasing -Wall -c -include AutoGen.h -D > > + _CRT_SECURE_NO_WARNINGS -Wnonportable-include-path -D UNICODE > > -D > > + _CRT_SECURE_NO_DEPRECATE > > -- > > 2.13.0.windows.1 > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#50246): https://edk2.groups.io/g/devel/message/50246 Mute This Topic: https://groups.io/mt/34694476/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-