On Wed, Aug 27, 2014 at 8:43 PM, Sergey Isakov <isakov...@bk.ru> wrote: > Jordan, > There was no issue with gcc49 toolchain in x86_64. > I made an attempt to use nasm with XCLANG toolset but failed on ld: > I seems have to wait while Andrew make XCODE5 fully working.
Since this change will affect all toolchains except Visual Studio and ICC, I think we need to make sure we don't break builds that use XCLANG. Would you (or Andrew) be able to help debug the build issue you are seeing? (Arg, we really need to get clang working on Linux...) -Jordan > On 28 авг. 2014 г., at 7:32, Andrew Fish <af...@apple.com> wrote: > > On Aug 27, 2014, at 8:08 PM, Gao, Liming <liming....@intel.com> wrote: > > Hi, > What change do you make? In previous mail, you mention x86_64 there is no > issue. > > Liming, > > On the various GNU (including clang) toolchains __USER_LABEL_PREFIX__ is the > prefix applied to user labels (symbols visible to C) in assembly. Some > versions set it to '', and some version have it set to ‘_' > > #define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name) > > So you can have a bug that passes on one version and fails on another. > > Thanks, > > Andrew Fish > > Thanks > Liming > From: Sergey Isakov [mailto:isakov...@bk.ru] > Sent: Thursday, August 28, 2014 4:42 AM > To: edk2-devel@lists.sourceforge.net > Subject: Re: [edk2] [PATCH 0/8] NASM: Object files; Thunk16; Require for > non-MSVC > > The error disappeared but I still have other mistakes > ld: illegal text-relocation to '_NullSeg' in … BaseLib.lib(Thunk16.obj) > from '_16GdtrBase’ in … BaseLib.lib(Thunk16.obj) for architecture x86_64 > Still in work > > On 28 авг. 2014 г., at 0:33, Jordan Justen <jljus...@gmail.com> wrote: > > > On Wed, Aug 27, 2014 at 1:08 PM, Sergey Isakov <isakov...@bk.ru> wrote: > > And one new question. Why _16GdtrBase with underscore while m16Start without > it? > > Does replacing m16Start with ASM_PFX(m16Start) help? > > It looks like I didn't convert this up properly. The MASM code didn't > use ASM_PFX... > > -Jordan > > > —— > ; > ; These are global constant to convey information to C code. > ; > ASM_PFX(m16Size) DW InternalAsmThunk16 - m16Start > ASM_PFX(mThunk16Attr) DW _BackFromUserCode.ThunkAttrEnd - 4 - > m16Start > ASM_PFX(m16Gdt) DW _NullSeg - m16Start > ASM_PFX(m16GdtrBase) DW _16GdtrBase - m16Start > ASM_PFX(mTransition) DW _EntryPoint - m16Start > > — > I got an error with this > Thunk16.iii:60: error: symbol `m16Start' undefined > > > On 27 авг. 2014 г., at 22:04, Jordan Justen <jljus...@gmail.com> wrote: > > On Wed, Aug 27, 2014 at 5:18 AM, Sergey Isakov <isakov...@bk.ru> wrote: > > Hi sirs, > I tested Thunk16.nasm too. For x86_64 there is no issue. > For ia32 compilation disasm shows not good codes > --------- > 00000000 <m16Start>: > 0: 00 00 add %al,(%eax) > 2: 00 00 add %al,(%eax) > ... > > 00000006 <_BackFromUserCode>: > 6: 16 push %ss > 7: 0e push %cs > 8: 67 e8 00 00 66 9c addr16 call 9c66000e > <InternalAsmThunk16+0x9c65ff36> > > 0000000c <_BackFromUserCode.Base>: > c: 66 9c pushfw > e: fa cli > > --------- > to compare gcc-4.9.1 cvompilation > --------- > 00000000 <m16Start>: > 0: 00 00 add %al,(%eax) > 2: 00 00 add %al,(%eax) > ... > > 00000006 <BackFromUserCode>: > 6: 16 push %ss > 7: 0e push %cs > 8: 66 e8 00 00 callw c <BackFromUserCode+0x6> > ... > > 0000000e <L_Base1>: > e: 66 9c pushfw > 10: fa cli > > ---------- > May be change a32 prefix to o32 in the line: > "a32 call .Base ; push eip" > ? > > > In the X64 file, I used: > call dword .Base > > I notice this produced the same code as: > o32 call dword .Base > > But, > o32 call .Base > seems to produce invalid code. (OVMF hangs.) > > It does seem like: > a32 call .Base > is functional as well, but I know we are attempting to make the new > nasm code produce similar code to the old asm code where reasonable. > > I think I only changed it in the X64 file to try to match the old 'db' code. > > -Jordan > > On 27.08.2014, at 9:50, Jordan Justen wrote: > > On Tue, Aug 19, 2014 at 4:57 PM, Jordan Justen > <jordan.l.jus...@intel.com> wrote: > > This series: > > * Adds support for creating object files from .nasm source files to > > allow NASM source files to be linked into libraries and images > > * Adds NASM source files for Thunk16 on IA32 and X64 > > * Convert BaseLib to use NASM Source Files for Thunk16 rather than > > GNU Assembler (.S) files > > - This will make NASM a build requirement for MdePkg with IA32 & > > X64 on all toolchains except MSVC and ICC. > > > Thanks for Liming Gao for the tools_def changes for MSVC. (But, these > > have not been tested very well yet.) > > > This series is available in this git branch: > > https://github.com/jljusten/edk2.git nasm-v1 > > > I update my nasm branch based on the feedback. > > The differences vs. v1 are in the attached patch. > > Is anyone interested in seeing a v2 posted to the list? > > Liming, in patch 1, I mentioned I only tested with GCC49. Did you have > any testing to add to that? > > -Jordan > > Jordan Justen (8): > > BaseTools/tools_def: Add NASM_FLAGS > > BaseTools/build_rule: Add .nasm => .obj build rule > > MdePkg/Base.h: Always define ASM_PFX > > MdePkg/BaseLib Thunk16: Replace IA32 GAS Thunk16 with NASM version > > MdePkg/BaseLib Thunk16: Replace X64 GAS Thunk16 with NASM version > > MdePkg/BaseLib NASM Thunk16: Use NASM local labels > > MdePkg/BaseLib NASM Thunk16: Use bits 16 for 16-bit code > > MdePkg/BaseLib NASM Thunk16: Remove remaining 'DB' code > > > BaseTools/Conf/build_rule.template | 15 ++ > > BaseTools/Conf/tools_def.template | 287 ++++++++++++++++++++++++++- > > MdePkg/Include/AArch64/ProcessorBind.h | 4 + > > MdePkg/Include/Arm/ProcessorBind.h | 4 + > > MdePkg/Include/Base.h | 25 ++- > > MdePkg/Include/Ebc/ProcessorBind.h | 4 + > > MdePkg/Include/Ia32/ProcessorBind.h | 4 + > > MdePkg/Include/Ipf/ProcessorBind.h | 4 + > > MdePkg/Include/X64/ProcessorBind.h | 4 + > > MdePkg/Library/BaseLib/BaseLib.inf | 4 +- > > MdePkg/Library/BaseLib/Ia32/Thunk16.nasm | 260 +++++++++++++++++++++++++ > > MdePkg/Library/BaseLib/X64/Thunk16.nasm | 321 > +++++++++++++++++++++++++++++++ > > 12 files changed, 914 insertions(+), 22 deletions(-) > > create mode 100644 MdePkg/Library/BaseLib/Ia32/Thunk16.nasm > > create mode 100644 MdePkg/Library/BaseLib/X64/Thunk16.nasm > > > -- > > 2.1.0 > > > > ------------------------------------------------------------------------------ > > Slashdot TV. > > Video for Nerds. Stuff that matters. > > http://tv.slashdot.org/ > > _______________________________________________ > > edk2-devel mailing list > > edk2-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > <compare-nasm-to-nasm-v1.patch>------------------------------------------------------------------------------ > > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/_______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/_______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/_______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > > > > ------------------------------------------------------------------------------ > Slashdot TV. > Video for Nerds. Stuff that matters. > http://tv.slashdot.org/ > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel > ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel