public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
@ 2016-11-11 15:50 Pete Batard
  2016-11-11 17:41 ` Kinney, Michael D
  2016-11-11 23:48 ` Yao, Jiewen
  0 siblings, 2 replies; 11+ messages in thread
From: Pete Batard @ 2016-11-11 15:50 UTC (permalink / raw)
  To: edk2-devel@lists.01.org

The EBC Debugger [1], which was present in Tianocore [2], is an 
invaluable tool for EBC development.
This patch adds it back into the EDK2, allowing, for instance, the 
compilation of an AARCH64 EBC debugger.

Note 1: The patch is split in two, so that the changes to the existing 
EbcDxe code are clearer.

Note 2: The diff between the original and the new sources can be found 
at [3]. Most of the changes were for whitespaces/API names/compiler 
warnings, with the notable exception of:
- Bumping of the EBCdebugger version to 1.0.
- Dropping of the DebuggerConfiguration protocol (which would require 
introducing a new global GUID and protocol). I didn't see it as 
particularly useful to caary on and would rather see if there is actual 
demand for it, before adding it back.
- Add of an EFIAPI qualifier for most of the support functions, 
especially the ones dealing with VPrint() ouput. This is required to 
avoid garbage text output in some instances.
- Fixing of the erroneous display of 32 and 64 bit indexes in the 
disassembly.
- Replacement of one assignation with CopyMem() to avoid an intrinsic 
memcpy().

Note 3: I tested the debugger built for AARCH64 and X64 using gcc on 
Linux (Debian/Sid) as well as the one built for IA32 and X64 using 
VS2015 on Windows. I haven't tested an IA64 version for lack of a toolchain.

Regards,

/Pete

[1] http://www.uefi.org/node/550
[2] https://github.com/tianocore/edk/tree/master/Sample/Universal/Ebc/Dxe
[3] 
https://github.com/pbatard/EbcDebugger/commit/906e87ed6ceab1c361ba6f681bef48179baf549e


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-11 15:50 [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger Pete Batard
@ 2016-11-11 17:41 ` Kinney, Michael D
  2016-11-11 18:13   ` Pete Batard
  2016-11-11 23:48 ` Yao, Jiewen
  1 sibling, 1 reply; 11+ messages in thread
From: Kinney, Michael D @ 2016-11-11 17:41 UTC (permalink / raw)
  To: Pete Batard, edk2-devel@lists.01.org, Kinney, Michael D

Hi Pete,

I see the new INF files uses '..' in the [Sources]
section, which is not allowed.  Can we move that INF
file up one directory, so it can remove use of ..?

I also see that this code defined its own 
EFI_EBC_DEBUGGER_CODE macro.  Could these be changed
to the standard DEBUG_CODE() macro that can be enabled
and disabled with a PCD?  Or do you think we should add
a new Feature Flag PCD to enable/disable the EBC
debugger?

Thanks,

Mike

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Pete
> Batard
> Sent: Friday, November 11, 2016 7:51 AM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
> 
> The EBC Debugger [1], which was present in Tianocore [2], is an
> invaluable tool for EBC development.
> This patch adds it back into the EDK2, allowing, for instance, the
> compilation of an AARCH64 EBC debugger.
> 
> Note 1: The patch is split in two, so that the changes to the existing
> EbcDxe code are clearer.
> 
> Note 2: The diff between the original and the new sources can be found
> at [3]. Most of the changes were for whitespaces/API names/compiler
> warnings, with the notable exception of:
> - Bumping of the EBCdebugger version to 1.0.
> - Dropping of the DebuggerConfiguration protocol (which would require
> introducing a new global GUID and protocol). I didn't see it as
> particularly useful to caary on and would rather see if there is actual
> demand for it, before adding it back.
> - Add of an EFIAPI qualifier for most of the support functions,
> especially the ones dealing with VPrint() ouput. This is required to
> avoid garbage text output in some instances.
> - Fixing of the erroneous display of 32 and 64 bit indexes in the
> disassembly.
> - Replacement of one assignation with CopyMem() to avoid an intrinsic
> memcpy().
> 
> Note 3: I tested the debugger built for AARCH64 and X64 using gcc on
> Linux (Debian/Sid) as well as the one built for IA32 and X64 using
> VS2015 on Windows. I haven't tested an IA64 version for lack of a toolchain.
> 
> Regards,
> 
> /Pete
> 
> [1] http://www.uefi.org/node/550
> [2] https://github.com/tianocore/edk/tree/master/Sample/Universal/Ebc/Dxe
> [3]
> https://github.com/pbatard/EbcDebugger/commit/906e87ed6ceab1c361ba6f681bef48179ba
> f549e
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-11 17:41 ` Kinney, Michael D
@ 2016-11-11 18:13   ` Pete Batard
  0 siblings, 0 replies; 11+ messages in thread
From: Pete Batard @ 2016-11-11 18:13 UTC (permalink / raw)
  To: Kinney, Michael D, edk2-devel@lists.01.org

Hi Mike,

On 2016.11.11 17:41, Kinney, Michael D wrote:
> I see the new INF files uses '..' in the [Sources]
> section, which is not allowed.  Can we move that INF
> file up one directory, so it can remove use of ..?

Sure. I'll work on this and submit a V2.

> I also see that this code defined its own
> EFI_EBC_DEBUGGER_CODE macro.  Could these be changed
> to the standard DEBUG_CODE() macro that can be enabled
> and disabled with a PCD?  Or do you think we should add
> a new Feature Flag PCD to enable/disable the EBC
> debugger?

I've been wondering about keeping the macro as well, which I mostly 
carried over from Tiano. If PCD is the more appropriate EDK2 practice, 
then I agree that we probably want to go with that.

I do feel however that we would need a new feature flag, as some people 
may want to compile an EBC module with the current debug PCD 
functionality enabled, but without the EBC debugger, especially as, in 
essence, the EBC debugger is designed to be intrusive and will break the 
flow of regular EBC execution (such as on program entry or thunk calls).

I'll explore this a little bit further, and try have a PCD proposal for V2.

Regards,

/Pete


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-11 15:50 [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger Pete Batard
  2016-11-11 17:41 ` Kinney, Michael D
@ 2016-11-11 23:48 ` Yao, Jiewen
  2016-11-12  0:43   ` Pete Batard
  1 sibling, 1 reply; 11+ messages in thread
From: Yao, Jiewen @ 2016-11-11 23:48 UTC (permalink / raw)
  To: Pete Batard, edk2-devel@lists.01.org

That is great news. Thank you Pete.

I have worked on this for EDK-I, but just did not have resource to do the porting for EDK-II. Thank you for doing this.

Please give me some time, and I will review the patch soon.

Thank you
Yao Jiewen

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of
> Pete Batard
> Sent: Friday, November 11, 2016 11:51 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
> 
> The EBC Debugger [1], which was present in Tianocore [2], is an
> invaluable tool for EBC development.
> This patch adds it back into the EDK2, allowing, for instance, the
> compilation of an AARCH64 EBC debugger.
> 
> Note 1: The patch is split in two, so that the changes to the existing
> EbcDxe code are clearer.
> 
> Note 2: The diff between the original and the new sources can be found
> at [3]. Most of the changes were for whitespaces/API names/compiler
> warnings, with the notable exception of:
> - Bumping of the EBCdebugger version to 1.0.
> - Dropping of the DebuggerConfiguration protocol (which would require
> introducing a new global GUID and protocol). I didn't see it as
> particularly useful to caary on and would rather see if there is actual
> demand for it, before adding it back.
> - Add of an EFIAPI qualifier for most of the support functions,
> especially the ones dealing with VPrint() ouput. This is required to
> avoid garbage text output in some instances.
> - Fixing of the erroneous display of 32 and 64 bit indexes in the
> disassembly.
> - Replacement of one assignation with CopyMem() to avoid an intrinsic
> memcpy().
> 
> Note 3: I tested the debugger built for AARCH64 and X64 using gcc on
> Linux (Debian/Sid) as well as the one built for IA32 and X64 using
> VS2015 on Windows. I haven't tested an IA64 version for lack of a toolchain.
> 
> Regards,
> 
> /Pete
> 
> [1] http://www.uefi.org/node/550
> [2]
> https://github.com/tianocore/edk/tree/master/Sample/Universal/Ebc/Dxe
> [3]
> https://github.com/pbatard/EbcDebugger/commit/906e87ed6ceab1c361ba
> 6f681bef48179baf549e
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-11 23:48 ` Yao, Jiewen
@ 2016-11-12  0:43   ` Pete Batard
  2016-11-12  7:48     ` Yao, Jiewen
  0 siblings, 1 reply; 11+ messages in thread
From: Pete Batard @ 2016-11-12  0:43 UTC (permalink / raw)
  To: Yao, Jiewen, edk2-devel@lists.01.org

Hi Yao - good to hear from you.

On 2016.11.11 23:48, Yao, Jiewen wrote:
> I have worked on this for EDK-I, but just did not have resource to do the porting for EDK-II. Thank you for doing this.

I'll be glad if I can be of help.

The EBC Debugger has been tremendously useful during my development of 
an EBC assembler as well as the troubleshooting of related EBC code. So, 
while I understand that porting the EBC Debugger may not have been a 
high priority for EDK2, I'm very thankful for the work you have done on 
this in the past!

> Please give me some time, and I will review the patch soon.

Sounds good. I'll be trying to post a v2 early next week, that takes 
into account the points Mike made. By the way, if you have some ideas 
for what you'd prefer for the PCD, or any other potential improvements, 
don't hesitate to let me know, since you're probably a lot more familiar 
with all of this than I am.

Regards,

/Pete


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-12  0:43   ` Pete Batard
@ 2016-11-12  7:48     ` Yao, Jiewen
  2016-11-12 12:46       ` Pete Batard
  0 siblings, 1 reply; 11+ messages in thread
From: Yao, Jiewen @ 2016-11-12  7:48 UTC (permalink / raw)
  To: Pete Batard, edk2-devel@lists.01.org

HI Pete
I am glad that you like it. :)

I met some problem on extracting patch from email. So I reviewed the code in https://github.com/pbatard/EbcDebugger and I assume they are same.

However, the master contains some non-EBC-debugger related code.
The edk2-diff branch contains an old version of EBC driver code.

Next time, would you please post your V2 patches to a new branch, help me do the review efficiently?

Now I only checked the diff file. Here is some suggestion for your consideration:

1)      EFI_DEBUGGER_CONFIGURATION_PROTOCOL
Previously, we document a way to consume this protocol. In user manual:
https://sourceforge.net/projects/efidevkit/files/Documents/EBC%20Debugger%20User%20Manual.pdf/download
Appendix A. Configuring the EBC Debugger under EFI Shell.

But I cannot find the EbcDebuggerConfig application in EDKI. It brings you some confusing because you think no one is consuming this protocol.

So I post a EDK-I style APPLICATION to my personal git-hub - https://github.com/jyao1/EbcDebuggerApp
You can take a look. It is also BDS license code.

In order to make feature complete and match the user manual, I think we can:
1.A) Add DebuggerConfiguration.h to MdeModulePkg/Include/Protocol.
1.B) Keep EFI_DEBUGGER_CONFIGURATION_PROTOCOL in Ebc driver.
1.C) Port EbcDebuggerApp to EDKII and add it to MdeModulePkg/Application dir. Care need to be taken that EbcDebuggerApp should not depend on ShellPkg, the ARGC and ARGV can be got from SHELL_PARAMETERS_PROTOCOL.
1.D) I found the APP need EdbCommon.h to enable/disable debug , so I think we need expose some fields to the debug configuration protocol, such as:
  UINT32                                      EfiDebuggerRevision;
  UINT32                                      EbcVmRevision;
  UINT32                                      FeatureFlags;




2)      The code in EbdDebugger\*
I compare them with the previous one. Looks good to me.




3)      The update for original EbdDxe driver.
3.1) EFI_EBC_DEBUGGER_CODE()
Yes, I have similar thought as Mike.
In EDK-I, we do not have good infrastructure to enable/disable features. Using MACRO is the only choice.
In EDK-II, MACRO is not encouraged because it cannot cover build.
We may consider 2 options:
3.1.1) Use PCD - such as PcdEbcDebuggerEnable.
Then we can put all EbdDebugger related feature into this PCD.
This is an easy way, but it causes debugger code build every time.
As summary, we can:
3.1.1.A) Add a FeaturePcd:PcdEbcDebuggerEnable to MdeModulePkg.dec, and use this FeaturePcd to replace EFI_EBC_DEBUGGER_CODE.

3.1.2) Use Library - such EbcDebuggerLib.
The API in this library class is similar to the function in EbcDebuggerHook.h.
We can provide 2 instances: one is EbcDebuggerLib - real function one. The other is EbdDebuggerLibNull - null function one. The latter can be used by default to bring minimal build impact.

Personally, my preference is 3.1.2) because it can make code clean and align with our other debugger feature.
I found EbcDebugger code is using the OPCODE defined in EbcExecute.h. Maybe a better way is to move this UEFI specification define OPCODE to MdePkg Ebc.h. So that the EbcDebugger code does not need depend on EbcDriver.
As summary, we can:
3.1.2.A) Move UEFI specification defined EBC OPCODE from EbcExecute.h to MdePkg\Include\Protocol\Ebc.h
3.1.2.B) Add EbcDebuggerLib.h library class to MdeModulePkg/Include/Library
3.1.2.C) Add EbcDebuggerNullLib library instance to MdeModulePkg/Library/
3.1.2.D) Add EbcDebuggerLib library instance to MdeModulePkg/Library/



3.2) EbcExecute(), I cannot find below original code. Would you please double check?
    //
    // Verify the opcode is in range. Otherwise generate an exception.
    //
    if ((*VmPtr->Ip & OPCODE_M_OPCODE) >= (sizeof (mVmOpcodeTable) / sizeof (mVmOpcodeTable[0]))) {
      EbcDebugSignalException (EXCEPT_EBC_INVALID_OPCODE, EXCEPTION_FLAG_FATAL, VmPtr);
      Status = EFI_UNSUPPORTED;
      goto Done;
    }

3.3) ExecuteBREAK(), I cannot find below original code. Would you please double check?
  case 3:
    VmPtr->StopFlags |= STOPFLAG_BREAKPOINT;
    VmPtr->Ip += 2; <======== here
    //
    // See if someone has registered a handler
    //
    EbcDebugSignalException (
      EXCEPT_EBC_BREAKPOINT,
      EXCEPTION_FLAG_NONE,
      VmPtr
      );
return EFI_SUCCESS; <======== here
    break;

Thank You
Yao Jiewen



From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Pete Batard
Sent: Saturday, November 12, 2016 8:44 AM
To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
Subject: Re: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger

Hi Yao - good to hear from you.

On 2016.11.11 23:48, Yao, Jiewen wrote:
> I have worked on this for EDK-I, but just did not have resource to do the porting for EDK-II. Thank you for doing this.

I'll be glad if I can be of help.

The EBC Debugger has been tremendously useful during my development of
an EBC assembler as well as the troubleshooting of related EBC code. So,
while I understand that porting the EBC Debugger may not have been a
high priority for EDK2, I'm very thankful for the work you have done on
this in the past!

> Please give me some time, and I will review the patch soon.

Sounds good. I'll be trying to post a v2 early next week, that takes
into account the points Mike made. By the way, if you have some ideas
for what you'd prefer for the PCD, or any other potential improvements,
don't hesitate to let me know, since you're probably a lot more familiar
with all of this than I am.

Regards,

/Pete
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-12  7:48     ` Yao, Jiewen
@ 2016-11-12 12:46       ` Pete Batard
  2016-11-12 13:43         ` Yao, Jiewen
  0 siblings, 1 reply; 11+ messages in thread
From: Pete Batard @ 2016-11-12 12:46 UTC (permalink / raw)
  To: Yao, Jiewen, edk2-devel@lists.01.org

On 2016.11.12 07:48, Yao, Jiewen wrote:
> I met some problem on extracting patch from email. So I reviewed the
> code in https://github.com/pbatard/EbcDebugger and I assume they are same.

Sorry, no, they are not the same. Please do not use that project, as it 
is missing some important parts (and also has changes that shouldn't be 
part of the current proposal).

It was the project where I've been experimenting, before I cleaned 
things up submit this proposal, and I am planning to update it after 
this patch has been integrated to reflect the cleanup, and the other 
changes we are discussing.

The actual github project to use for this proposal is:
https://github.com/pbatard/edk2/tree/EBCDebugger

> However, the master contains some non-EBC-debugger related code.

Yes it does. Please disregard that earlier github project you found, and 
only use https://github.com/pbatard/edk2/tree/EBCDebugger.

> The edk2-diff branch contains an old version of EBC driver code.

The edk2-diff branch is only intended to show the changes between the 
old and new code, since this patch just provides the new sources under 
EBCDebugger/ wholesale, which makes it hard to see what was altered 
there. Also please note that the diff is only for the content under 
EBCDebugger/.

> Next time, would you please post your V2 patches to a new branch, help
> me do the review efficiently?

I'll make sure to create a github branch for V2.

> Now I only checked the diff file. Here is some suggestion for your
> consideration:
>
> 1)      EFI_DEBUGGER_CONFIGURATION_PROTOCOL
>
> Previously, we document a way to consume this protocol. In user manual:
>
> https://sourceforge.net/projects/efidevkit/files/Documents/EBC%20Debugger%20User%20Manual.pdf/download
>
> Appendix A. Configuring the EBC Debugger under EFI Shell.
>
> But I cannot find the EbcDebuggerConfig application in EDKI. It brings
> you some confusing because you think no one is consuming this protocol.

Yeah. As I indicated in my notes I dropped the debugger configuration 
protocol, because I didn't see much use for it.

> 2) (..) So I post a EDK-I style APPLICATION to my personal git-hub -
> https://github.com/jyao1/EbcDebuggerApp
>
> You can take a look. It is also BDS license code.

Thanks, I will do that.

Do you think maybe we could split adding the EBC debugger without the 
configuration protocol, and then work on a separate patch to add it 
back? Especially, if EbcDebuggerApp needs to be ported, I think I'd 
prefer to split these 2 tasks into 2 separate series of patch, even if 
it means that, for a while, the EBC debugger will not match its manual 
when it comes to configuration.

> 3.1.2) Use Library – such EbcDebuggerLib.
>
> Personally, my preference is 3.1.2) because it can make code clean and
> align with our other debugger feature.

Okay. I'll try to work with 3.1.2 then, as I don't have a strong preference.

> 3.2) EbcExecute(), I cannot find below original code. Would you please
> double check?
>
>     //
>     // Verify the opcode is in range. Otherwise generate an exception.
>     //
>     if ((*VmPtr->Ip & OPCODE_M_OPCODE) >= (sizeof (mVmOpcodeTable) /
> sizeof (mVmOpcodeTable[0]))) {
>       EbcDebugSignalException (EXCEPT_EBC_INVALID_OPCODE,
> EXCEPTION_FLAG_FATAL, VmPtr);
>       Status = EFI_UNSUPPORTED;
>       goto Done;
>     }

This code is unrelated to the EBC Debugger and was removed in 2009 in 
the official EDK2:
https://github.com/tianocore/edk2/commit/ead7e7dc748750e88a1d1d5810c4550edeabb22f

> 3.3) ExecuteBREAK(), I cannot find below original code. Would you please
> double check?
>
>   case 3:
>     VmPtr->StopFlags |= STOPFLAG_BREAKPOINT;
>     VmPtr->Ip += 2; <======== here
>     //
>     // See if someone has registered a handler
>     //
>     EbcDebugSignalException (
>       EXCEPT_EBC_BREAKPOINT,
>       EXCEPTION_FLAG_NONE,
>       VmPtr
>       );
>     return EFI_SUCCESS; <======== here
>     break;

Similarly the 2 lines you point to have never been present in the EDK2 
version I see of ExecuteBREAK():
https://github.com/tianocore/edk2/blob/53c71d097b13311e2bd8dda6ae54b5766a1c7d6d/MdeModulePkg/Universal/EbcDxe/EbcExecute.c#L1115-L1125

If the sections you point to need to be modified, I think that would be 
better left to a different patch, as these would apply to the generic 
EbcDxe module and not the EBC Debugger.

Regards,

/Pete






^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-12 12:46       ` Pete Batard
@ 2016-11-12 13:43         ` Yao, Jiewen
  2016-11-12 19:49           ` Yao, Jiewen
  0 siblings, 1 reply; 11+ messages in thread
From: Yao, Jiewen @ 2016-11-12 13:43 UTC (permalink / raw)
  To: Pete Batard, edk2-devel@lists.01.org

Comment inline.

From: Pete Batard [mailto:pete@akeo.ie]
Sent: Saturday, November 12, 2016 8:46 PM
To: Yao, Jiewen <jiewen.yao@intel.com>; edk2-devel@lists.01.org
Subject: Re: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger

On 2016.11.12 07:48, Yao, Jiewen wrote:
> I met some problem on extracting patch from email. So I reviewed the
> code in https://github.com/pbatard/EbcDebugger and I assume they are same.

Sorry, no, they are not the same. Please do not use that project, as it
is missing some important parts (and also has changes that shouldn't be
part of the current proposal).

It was the project where I've been experimenting, before I cleaned
things up submit this proposal, and I am planning to update it after
this patch has been integrated to reflect the cleanup, and the other
changes we are discussing.

The actual github project to use for this proposal is:
https://github.com/pbatard/edk2/tree/EBCDebugger

> However, the master contains some non-EBC-debugger related code.

Yes it does. Please disregard that earlier github project you found, and
only use https://github.com/pbatard/edk2/tree/EBCDebugger.

> The edk2-diff branch contains an old version of EBC driver code.

The edk2-diff branch is only intended to show the changes between the
old and new code, since this patch just provides the new sources under
EBCDebugger/ wholesale, which makes it hard to see what was altered
there. Also please note that the diff is only for the content under
EBCDebugger/.

> Next time, would you please post your V2 patches to a new branch, help
> me do the review efficiently?

I'll make sure to create a github branch for V2.
[Jiewen] Thank you.

> Now I only checked the diff file. Here is some suggestion for your
> consideration:
>
> 1)      EFI_DEBUGGER_CONFIGURATION_PROTOCOL
>
> Previously, we document a way to consume this protocol. In user manual:
>
> https://sourceforge.net/projects/efidevkit/files/Documents/EBC%20Debugger%20User%20Manual.pdf/download
>
> Appendix A. Configuring the EBC Debugger under EFI Shell.
>
> But I cannot find the EbcDebuggerConfig application in EDKI. It brings
> you some confusing because you think no one is consuming this protocol.

Yeah. As I indicated in my notes I dropped the debugger configuration
protocol, because I didn't see much use for it.

> 2) (..) So I post a EDK-I style APPLICATION to my personal git-hub -
> https://github.com/jyao1/EbcDebuggerApp
>
> You can take a look. It is also BDS license code.

Thanks, I will do that.

Do you think maybe we could split adding the EBC debugger without the
configuration protocol, and then work on a separate patch to add it
back? Especially, if EbcDebuggerApp needs to be ported, I think I'd
prefer to split these 2 tasks into 2 separate series of patch, even if
it means that, for a while, the EBC debugger will not match its manual
when it comes to configuration.
[Jiewen] I think it is OK. I agree with you that this can be handled in different patch. Let's focus on current one at first.

> 3.1.2) Use Library - such EbcDebuggerLib.
>
> Personally, my preference is 3.1.2) because it can make code clean and
> align with our other debugger feature.

Okay. I'll try to work with 3.1.2 then, as I don't have a strong preference.
[Jiewen] Thank you.

> 3.2) EbcExecute(), I cannot find below original code. Would you please
> double check?
>
>     //
>     // Verify the opcode is in range. Otherwise generate an exception.
>     //
>     if ((*VmPtr->Ip & OPCODE_M_OPCODE) >= (sizeof (mVmOpcodeTable) /
> sizeof (mVmOpcodeTable[0]))) {
>       EbcDebugSignalException (EXCEPT_EBC_INVALID_OPCODE,
> EXCEPTION_FLAG_FATAL, VmPtr);
>       Status = EFI_UNSUPPORTED;
>       goto Done;
>     }

This code is unrelated to the EBC Debugger and was removed in 2009 in
the official EDK2:
https://github.com/tianocore/edk2/commit/ead7e7dc748750e88a1d1d5810c4550edeabb22f

> 3.3) ExecuteBREAK(), I cannot find below original code. Would you please
> double check?
>
>   case 3:
>     VmPtr->StopFlags |= STOPFLAG_BREAKPOINT;
>     VmPtr->Ip += 2; <======== here
>     //
>     // See if someone has registered a handler
>     //
>     EbcDebugSignalException (
>       EXCEPT_EBC_BREAKPOINT,
>       EXCEPTION_FLAG_NONE,
>       VmPtr
>       );
>     return EFI_SUCCESS; <======== here
>     break;

Similarly the 2 lines you point to have never been present in the EDK2
version I see of ExecuteBREAK():
https://github.com/tianocore/edk2/blob/53c71d097b13311e2bd8dda6ae54b5766a1c7d6d/MdeModulePkg/Universal/EbcDxe/EbcExecute.c#L1115-L1125

If the sections you point to need to be modified, I think that would be
better left to a different patch, as these would apply to the generic
EbcDxe module and not the EBC Debugger.
[Jiewen] That makes sense. We can use separate patch to handle these 2 enhancement. I agree with you.


Regards,

/Pete




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-12 13:43         ` Yao, Jiewen
@ 2016-11-12 19:49           ` Yao, Jiewen
  2016-11-12 21:44             ` Yao, Jiewen
  0 siblings, 1 reply; 11+ messages in thread
From: Yao, Jiewen @ 2016-11-12 19:49 UTC (permalink / raw)
  To: Yao, Jiewen, Pete Batard, edk2-devel@lists.01.org; +Cc: Kinney, Michael D

Maybe we can wait for Mike's thought on PCD or library.



From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Yao, Jiewen
Sent: Saturday, November 12, 2016 9:43 PM
To: Pete Batard <pete@akeo.ie>; edk2-devel@lists.01.org
Subject: Re: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger

Comment inline.

From: Pete Batard [mailto:pete@akeo.ie]
Sent: Saturday, November 12, 2016 8:46 PM
To: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
Subject: Re: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger

On 2016.11.12 07:48, Yao, Jiewen wrote:
> I met some problem on extracting patch from email. So I reviewed the
> code in https://github.com/pbatard/EbcDebugger and I assume they are same.

Sorry, no, they are not the same. Please do not use that project, as it
is missing some important parts (and also has changes that shouldn't be
part of the current proposal).

It was the project where I've been experimenting, before I cleaned
things up submit this proposal, and I am planning to update it after
this patch has been integrated to reflect the cleanup, and the other
changes we are discussing.

The actual github project to use for this proposal is:
https://github.com/pbatard/edk2/tree/EBCDebugger

> However, the master contains some non-EBC-debugger related code.

Yes it does. Please disregard that earlier github project you found, and
only use https://github.com/pbatard/edk2/tree/EBCDebugger.

> The edk2-diff branch contains an old version of EBC driver code.

The edk2-diff branch is only intended to show the changes between the
old and new code, since this patch just provides the new sources under
EBCDebugger/ wholesale, which makes it hard to see what was altered
there. Also please note that the diff is only for the content under
EBCDebugger/.

> Next time, would you please post your V2 patches to a new branch, help
> me do the review efficiently?

I'll make sure to create a github branch for V2.
[Jiewen] Thank you.

> Now I only checked the diff file. Here is some suggestion for your
> consideration:
>
> 1)      EFI_DEBUGGER_CONFIGURATION_PROTOCOL
>
> Previously, we document a way to consume this protocol. In user manual:
>
> https://sourceforge.net/projects/efidevkit/files/Documents/EBC%20Debugger%20User%20Manual.pdf/download
>
> Appendix A. Configuring the EBC Debugger under EFI Shell.
>
> But I cannot find the EbcDebuggerConfig application in EDKI. It brings
> you some confusing because you think no one is consuming this protocol.

Yeah. As I indicated in my notes I dropped the debugger configuration
protocol, because I didn't see much use for it.

> 2) (..) So I post a EDK-I style APPLICATION to my personal git-hub -
> https://github.com/jyao1/EbcDebuggerApp
>
> You can take a look. It is also BDS license code.

Thanks, I will do that.

Do you think maybe we could split adding the EBC debugger without the
configuration protocol, and then work on a separate patch to add it
back? Especially, if EbcDebuggerApp needs to be ported, I think I'd
prefer to split these 2 tasks into 2 separate series of patch, even if
it means that, for a while, the EBC debugger will not match its manual
when it comes to configuration.
[Jiewen] I think it is OK. I agree with you that this can be handled in different patch. Let's focus on current one at first.

> 3.1.2) Use Library - such EbcDebuggerLib.
>
> Personally, my preference is 3.1.2) because it can make code clean and
> align with our other debugger feature.

Okay. I'll try to work with 3.1.2 then, as I don't have a strong preference.
[Jiewen] Thank you.

> 3.2) EbcExecute(), I cannot find below original code. Would you please
> double check?
>
>     //
>     // Verify the opcode is in range. Otherwise generate an exception.
>     //
>     if ((*VmPtr->Ip & OPCODE_M_OPCODE) >= (sizeof (mVmOpcodeTable) /
> sizeof (mVmOpcodeTable[0]))) {
>       EbcDebugSignalException (EXCEPT_EBC_INVALID_OPCODE,
> EXCEPTION_FLAG_FATAL, VmPtr);
>       Status = EFI_UNSUPPORTED;
>       goto Done;
>     }

This code is unrelated to the EBC Debugger and was removed in 2009 in
the official EDK2:
https://github.com/tianocore/edk2/commit/ead7e7dc748750e88a1d1d5810c4550edeabb22f

> 3.3) ExecuteBREAK(), I cannot find below original code. Would you please
> double check?
>
>   case 3:
>     VmPtr->StopFlags |= STOPFLAG_BREAKPOINT;
>     VmPtr->Ip += 2; <======== here
>     //
>     // See if someone has registered a handler
>     //
>     EbcDebugSignalException (
>       EXCEPT_EBC_BREAKPOINT,
>       EXCEPTION_FLAG_NONE,
>       VmPtr
>       );
>     return EFI_SUCCESS; <======== here
>     break;

Similarly the 2 lines you point to have never been present in the EDK2
version I see of ExecuteBREAK():
https://github.com/tianocore/edk2/blob/53c71d097b13311e2bd8dda6ae54b5766a1c7d6d/MdeModulePkg/Universal/EbcDxe/EbcExecute.c#L1115-L1125

If the sections you point to need to be modified, I think that would be
better left to a different patch, as these would apply to the generic
EbcDxe module and not the EBC Debugger.
[Jiewen] That makes sense. We can use separate patch to handle these 2 enhancement. I agree with you.


Regards,

/Pete


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-12 19:49           ` Yao, Jiewen
@ 2016-11-12 21:44             ` Yao, Jiewen
  2016-11-12 22:17               ` Pete Batard
  0 siblings, 1 reply; 11+ messages in thread
From: Yao, Jiewen @ 2016-11-12 21:44 UTC (permalink / raw)
  To: Pete Batard, edk2-devel@lists.01.org; +Cc: Kinney, Michael D

Hi Pete
I realize that the side-effect of library solution is that: we need update DSC file to add Library instance.

Now I am thinking the third options:
3.1.3) 2 INF without MACRO.
3.1.3.A) Remove EFI_EBC_DEBUGGER_CODE
3.1.3.B) EBC driver always calls EbcDebuggerHookXXX.
3.1.3.C) Create a EbcDebuggerHookNull.c and add it to EbcDxe.inf.
So that no change is needed for a platform, and no PCD is introduced.

3.1.3.D) Move EbcDebugger.inf from EbcDxe\EbcDebugger to EbcDxe
3.1.3.E) Do not include the new EbcDebuggerHookNull.c in EbcDebugger.inf
3.1.3.F) I still suggest we remove EbcInit.h and EbcExecute.h from Edb.h. The common definition should be in a better place.
So that if EDB is needed, a platform just includes EbcDebugger.inf, and EbdDebugger.inf does not include "..".


Thank you
Yao Jiewen


From: Yao, Jiewen
Sent: Sunday, November 13, 2016 3:50 AM
To: Yao, Jiewen <jiewen.yao@intel.com>; Pete Batard <pete@akeo.ie>; edk2-devel@lists.01.org
Cc: Kinney, Michael D <michael.d.kinney@intel.com>
Subject: RE: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger

Maybe we can wait for Mike's thought on PCD or library.



From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Yao, Jiewen
Sent: Saturday, November 12, 2016 9:43 PM
To: Pete Batard <pete@akeo.ie<mailto:pete@akeo.ie>>; edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
Subject: Re: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger

Comment inline.

From: Pete Batard [mailto:pete@akeo.ie]
Sent: Saturday, November 12, 2016 8:46 PM
To: Yao, Jiewen <jiewen.yao@intel.com<mailto:jiewen.yao@intel.com>>; edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
Subject: Re: [edk2] [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger

On 2016.11.12 07:48, Yao, Jiewen wrote:
> I met some problem on extracting patch from email. So I reviewed the
> code in https://github.com/pbatard/EbcDebugger and I assume they are same.

Sorry, no, they are not the same. Please do not use that project, as it
is missing some important parts (and also has changes that shouldn't be
part of the current proposal).

It was the project where I've been experimenting, before I cleaned
things up submit this proposal, and I am planning to update it after
this patch has been integrated to reflect the cleanup, and the other
changes we are discussing.

The actual github project to use for this proposal is:
https://github.com/pbatard/edk2/tree/EBCDebugger

> However, the master contains some non-EBC-debugger related code.

Yes it does. Please disregard that earlier github project you found, and
only use https://github.com/pbatard/edk2/tree/EBCDebugger.

> The edk2-diff branch contains an old version of EBC driver code.

The edk2-diff branch is only intended to show the changes between the
old and new code, since this patch just provides the new sources under
EBCDebugger/ wholesale, which makes it hard to see what was altered
there. Also please note that the diff is only for the content under
EBCDebugger/.

> Next time, would you please post your V2 patches to a new branch, help
> me do the review efficiently?

I'll make sure to create a github branch for V2.
[Jiewen] Thank you.

> Now I only checked the diff file. Here is some suggestion for your
> consideration:
>
> 1)      EFI_DEBUGGER_CONFIGURATION_PROTOCOL
>
> Previously, we document a way to consume this protocol. In user manual:
>
> https://sourceforge.net/projects/efidevkit/files/Documents/EBC%20Debugger%20User%20Manual.pdf/download
>
> Appendix A. Configuring the EBC Debugger under EFI Shell.
>
> But I cannot find the EbcDebuggerConfig application in EDKI. It brings
> you some confusing because you think no one is consuming this protocol.

Yeah. As I indicated in my notes I dropped the debugger configuration
protocol, because I didn't see much use for it.

> 2) (..) So I post a EDK-I style APPLICATION to my personal git-hub -
> https://github.com/jyao1/EbcDebuggerApp
>
> You can take a look. It is also BDS license code.

Thanks, I will do that.

Do you think maybe we could split adding the EBC debugger without the
configuration protocol, and then work on a separate patch to add it
back? Especially, if EbcDebuggerApp needs to be ported, I think I'd
prefer to split these 2 tasks into 2 separate series of patch, even if
it means that, for a while, the EBC debugger will not match its manual
when it comes to configuration.
[Jiewen] I think it is OK. I agree with you that this can be handled in different patch. Let's focus on current one at first.

> 3.1.2) Use Library - such EbcDebuggerLib.
>
> Personally, my preference is 3.1.2) because it can make code clean and
> align with our other debugger feature.

Okay. I'll try to work with 3.1.2 then, as I don't have a strong preference.
[Jiewen] Thank you.

> 3.2) EbcExecute(), I cannot find below original code. Would you please
> double check?
>
>     //
>     // Verify the opcode is in range. Otherwise generate an exception.
>     //
>     if ((*VmPtr->Ip & OPCODE_M_OPCODE) >= (sizeof (mVmOpcodeTable) /
> sizeof (mVmOpcodeTable[0]))) {
>       EbcDebugSignalException (EXCEPT_EBC_INVALID_OPCODE,
> EXCEPTION_FLAG_FATAL, VmPtr);
>       Status = EFI_UNSUPPORTED;
>       goto Done;
>     }

This code is unrelated to the EBC Debugger and was removed in 2009 in
the official EDK2:
https://github.com/tianocore/edk2/commit/ead7e7dc748750e88a1d1d5810c4550edeabb22f

> 3.3) ExecuteBREAK(), I cannot find below original code. Would you please
> double check?
>
>   case 3:
>     VmPtr->StopFlags |= STOPFLAG_BREAKPOINT;
>     VmPtr->Ip += 2; <======== here
>     //
>     // See if someone has registered a handler
>     //
>     EbcDebugSignalException (
>       EXCEPT_EBC_BREAKPOINT,
>       EXCEPTION_FLAG_NONE,
>       VmPtr
>       );
>     return EFI_SUCCESS; <======== here
>     break;

Similarly the 2 lines you point to have never been present in the EDK2
version I see of ExecuteBREAK():
https://github.com/tianocore/edk2/blob/53c71d097b13311e2bd8dda6ae54b5766a1c7d6d/MdeModulePkg/Universal/EbcDxe/EbcExecute.c#L1115-L1125

If the sections you point to need to be modified, I think that would be
better left to a different patch, as these would apply to the generic
EbcDxe module and not the EBC Debugger.
[Jiewen] That makes sense. We can use separate patch to handle these 2 enhancement. I agree with you.


Regards,

/Pete


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>
https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger
  2016-11-12 21:44             ` Yao, Jiewen
@ 2016-11-12 22:17               ` Pete Batard
  0 siblings, 0 replies; 11+ messages in thread
From: Pete Batard @ 2016-11-12 22:17 UTC (permalink / raw)
  To: Yao, Jiewen, edk2-devel@lists.01.org; +Cc: Kinney, Michael D

Hi Jiewen,

On 2016.11.12 21:44, Yao, Jiewen wrote:
> I realize that the side-effect of library solution is that: we need
> update DSC file to add Library instance.

Yes. I started looking at the library option, and I'm kind of wondering 
if we really want to put code in a library when it's unlikely that any 
of the hooks will be used anywhere but once, and in the very specific 
locations we have now.

I still don't mind going that route if that's what we decide, but 
creating a non-generic library, that is only going to be used to build a 
single application seems a bit like an overkill.

> Now I am thinking the third options:
> 3.1.3) 2 INF without MACRO.
> 3.1.3.A) Remove EFI_EBC_DEBUGGER_CODE
> 3.1.3.B) EBC driver always calls EbcDebuggerHookXXX.
> 3.1.3.C) Create a EbcDebuggerHookNull.c and add it to EbcDxe.inf.
> So that no change is needed for a platform, and no PCD is introduced.

This sound like a more elegant solution.

I like this option better than the others so far, so that's what I'll go 
with for v2.

> 3.1.3.F) I still suggest we remove EbcInit.h and EbcExecute.h from
> Edb.h. The common definition should be in a better place.

Agreed.

I'll try to move the common parts to MdePkg\Include\Protocol\Ebc.h in 
the new proposal, if that's still okay with you.

Regards,

/Pete


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-11-12 22:17 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-11 15:50 [PATCH 0/2] MdeModulePkg/EbcDxe: add EBC Debugger Pete Batard
2016-11-11 17:41 ` Kinney, Michael D
2016-11-11 18:13   ` Pete Batard
2016-11-11 23:48 ` Yao, Jiewen
2016-11-12  0:43   ` Pete Batard
2016-11-12  7:48     ` Yao, Jiewen
2016-11-12 12:46       ` Pete Batard
2016-11-12 13:43         ` Yao, Jiewen
2016-11-12 19:49           ` Yao, Jiewen
2016-11-12 21:44             ` Yao, Jiewen
2016-11-12 22:17               ` Pete Batard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox