Is it possible to include new family?
-------
Ia32/Thunk16.s | CLANG
Ia32/Thunk16.nasm | GCC
-------
On 28.08.2014, at 8:27, Andrew Fish wrote:
>
> On Aug 27, 2014, at 8:51 PM, Jordan Justen <jljus...@gmail.com> wrote:
>
>> 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?
>>
>
> Is there any way to still use the current .S files with XCODE? I was hoping
> we could use the BUILDRULEFAMILY, but that does not seem to be supported.
> I’ve never tried nasm, so I have no idea how well it works?
>
>> (Arg, we really need to get clang working on Linux…)
>
> If you send me the error messages I can point you in the right direction.
>
> Thanks,
>
> Andrew Fish
>
>> -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
>
>
> ------------------------------------------------------------------------------
> 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