Hi,
What change do you make? In previous mail, you mention x86_64 there is no
issue.
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<mailto:jljus...@gmail.com>> wrote:
On Wed, Aug 27, 2014 at 1:08 PM, Sergey Isakov
<isakov...@bk.ru<mailto: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<mailto:jljus...@gmail.com>> wrote:
On Wed, Aug 27, 2014 at 5:18 AM, Sergey Isakov
<isakov...@bk.ru<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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<mailto: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