CdePkgBlog 2021-11-14


Kilian Kegel
 

Hi All,

 

as announced last summer, I’d like to start a comprehensive tutorial on

how to use Standard C / ANSI C in the UEFI environment and how to design and implement

such a library for Shell and POST usage.

 

Since most parts of that comprehensive work are already done,

I will report, demonstrate and discuss implementation principles and details on edk2.groups.io

as a kind of “blog” on a biweekly basis.

 

Please checkout my first CdePkgBlog https://github.com/tianocore/edk2-staging/tree/CdePkg/blogs/2021-11-14#cdepkgblog-2021-11-14

and enjoy the breathtaking build speed if compiler and linker are used exclusively to create MY LEGACY TOOLBOX,

a handy set of one-trick-ponies that I have been using for about 25 years.

 

Have fun,

Kilian

 


Maciej Rabeda
 

Hi Kilian,

From my point of view, the main problem with adoption of CdePkg to EDK2 is that it relies on Torito C library.
  1. Torito C library License (https://github.com/KilianKegel/toro-C-Library/blob/master/LICENSE.md) only allows for creating UEFI Shell applications.
    • What about applications that do not rely on ShellPkg (example: SysPrep application that might want to use Redfish, which depends on C standard library)?
    • What about drivers/libraries that rely on C standard library?
    • How is that compatible with EDK2 BSD-2-Clause-Patent?
  2. Torito C is pre-compiled.
    • How can I verify what was actually implemented inside? Industry would have to trust your tests, perform own set of tests or/and disassemble it (doable, but unacceptable effort-wise).

Unless those problems are solved, I simply cannot use it.

Thanks,
Maciej

On 14-Nov-21 20:51, Kilian Kegel wrote:

Hi All,

 

as announced last summer, I’d like to start a comprehensive tutorial on

how to use Standard C / ANSI C in the UEFI environment and how to design and implement

such a library for Shell and POST usage.

 

Since most parts of that comprehensive work are already done,

I will report, demonstrate and discuss implementation principles and details on edk2.groups.io

as a kind of “blog” on a biweekly basis.

 

Please checkout my first CdePkgBlog https://github.com/tianocore/edk2-staging/tree/CdePkg/blogs/2021-11-14#cdepkgblog-2021-11-14

and enjoy the breathtaking build speed if compiler and linker are used exclusively to create MY LEGACY TOOLBOX,

a handy set of one-trick-ponies that I have been using for about 25 years.

 

Have fun,

Kilian

 



Kilian Kegel
 

Hi Maciej,

 

CdePkg is already integrated into EDK2 and satisfies all your needs for pre-/post-memory

PEI, DXE, (SMM in latest releases only), BDS and UEFI Shell too.

 

I have introduced CdePkg for POST usage 2 years ago without any interest of the “Tianocore Community”:

https://edk2.groups.io/g/devel/message/51562?p=,,,20,0,0,0::Created,,CdePkg,20,2,0,65191785

 

  1. Klick on the email link above
  2. Klick on the first link in that email, that goes to the edk2-staging\cdepkg folder

 

  1. read the HOWTO: https://github.com/tianocore/edk2-staging/blob/CdePkg/README.md#howto

               and go for emulation – that works perfectly.

  1. I simply can’t do more for you, than to urgently encourage to try it out yourself, test it, see what it can do for you

 

This time toro C Library (that is absolutely the same as the library part of the latest

CdePkg https://github.com/KilianKegel/CdePkg/blob/master/CdeLib/CdeLib.mak#L15)

for UEFI Shell will be discussed first, since “Tianocore Community” is now aware of serious problems of edk2libc

and probably ready to examine my solution, that lacks all of those issues.

 

You, Maciej, can support CdePkg/ toro C Library by

 

  1. testing CdePkg
  2. giving feedback to the community
  3. updating CdePkg to latest AAEON WhiskeyLake platform (that is on my Desk for months but I simply don’t have time to get it running…)

(MinnowBoard is deprecated now)

 

The license issue can not be discussed before there is any serious interest in CdePkg and toro C Library.

 

But if you are seeking  for a free solution, that

  • requires unknown additional working hours
  • requires a couple of high motivated maintainers, specialized in Standard C
  • countless  patches will spam your inbox folder for years
  • additionally with unpredictable result

please use  edk2libc, PDCLIB or adjust NewLib for your needs.

 

>Unless those problems are solved, I simply cannot use it.

Right, but you are invited to take a test drive!

In the EDK2 Emulator. Debugging with the best Debugtool ever seen…

Try to get SysPrep and Redfish running in the Emulator.

Really, just do it!

 

> How can I verify what was actually implemented inside?

I will publish source code of toro C Library beginning 2022 and discuss the design details along those files.

But, did you check glibc’s fopen-source before using it?

Have you ever seen Microsoft/Borland/Symantec/ARM/IBM/Dinkumware/Greenhill/IAR … C Libraries source code?

 

Thanks,

Kilian

 

 

Sent from Mail for Windows

 

From: Rabeda, Maciej
Sent: Monday, November 22, 2021 05:31 PM
To: devel@edk2.groups.io; KILIAN_KEGEL@...
Cc: Rebecca Cran; tim.lewis@...; Mike Kinney; afish@...; Leif Lindholm; Richardson, Brian
Subject: Re: [edk2-devel] CdePkgBlog 2021-11-14

 

Hi Kilian,

From my point of view, the main problem with adoption of CdePkg to EDK2 is that it relies on Torito C library.

  1. Torito C library License (https://github.com/KilianKegel/toro-C-Library/blob/master/LICENSE.md) only allows for creating UEFI Shell applications.
    • What about applications that do not rely on ShellPkg (example: SysPrep application that might want to use Redfish, which depends on C standard library)?
    • What about drivers/libraries that rely on C standard library?
    • How is that compatible with EDK2 BSD-2-Clause-Patent?
  2. Torito C is pre-compiled.
    • How can I verify what was actually implemented inside? Industry would have to trust your tests, perform own set of tests or/and disassemble it (doable, but unacceptable effort-wise).

Unless those problems are solved, I simply cannot use it.

Thanks,
Maciej

On 14-Nov-21 20:51, Kilian Kegel wrote:

Hi All,

 

as announced last summer, I’d like to start a comprehensive tutorial on

how to use Standard C / ANSI C in the UEFI environment and how to design and implement

such a library for Shell and POST usage.

 

Since most parts of that comprehensive work are already done,

I will report, demonstrate and discuss implementation principles and details on edk2.groups.io

as a kind of “blog” on a biweekly basis.

 

Please checkout my first CdePkgBlog https://github.com/tianocore/edk2-staging/tree/CdePkg/blogs/2021-11-14#cdepkgblog-2021-11-14

and enjoy the breathtaking build speed if compiler and linker are used exclusively to create MY LEGACY TOOLBOX,

a handy set of one-trick-ponies that I have been using for about 25 years.

 

Have fun,

Kilian

 

 

 


Pedro Falcato
 

Hi Kilian,

I agree with Maciej. There should be a big emphasis on getting an *open-source* libc available in EDK2, and not relying on a proprietary, opaque binary blob.

In my opinion EDK2 should pivot to using a high-quality, license-compatible libc such as Newlib, musl, etc. If you believe your Toro C library is the best tool for the job, you should open-source it (with a compatible license) as soon as possible to let the community decide :) 

Best regards,
Pedro

On Wed, Nov 24, 2021 at 8:21 PM Kilian Kegel <KILIAN_KEGEL@...> wrote:

Hi Maciej,

 

CdePkg is already integrated into EDK2 and satisfies all your needs for pre-/post-memory

PEI, DXE, (SMM in latest releases only), BDS and UEFI Shell too.

 

I have introduced CdePkg for POST usage 2 years ago without any interest of the “Tianocore Community”:

https://edk2.groups.io/g/devel/message/51562?p=,,,20,0,0,0::Created,,CdePkg,20,2,0,65191785

 

  1. Klick on the email link above
  2. Klick on the first link in that email, that goes to the edk2-staging\cdepkg folder

 

  1. read the HOWTO: https://github.com/tianocore/edk2-staging/blob/CdePkg/README.md#howto

               and go for emulation – that works perfectly.

  1. I simply can’t do more for you, than to urgently encourage to try it out yourself, test it, see what it can do for you

 

This time toro C Library (that is absolutely the same as the library part of the latest

CdePkg https://github.com/KilianKegel/CdePkg/blob/master/CdeLib/CdeLib.mak#L15)

for UEFI Shell will be discussed first, since “Tianocore Community” is now aware of serious problems of edk2libc

and probably ready to examine my solution, that lacks all of those issues.

 

You, Maciej, can support CdePkg/ toro C Library by

 

  1. testing CdePkg
  2. giving feedback to the community
  3. updating CdePkg to latest AAEON WhiskeyLake platform (that is on my Desk for months but I simply don’t have time to get it running…)

(MinnowBoard is deprecated now)

 

The license issue can not be discussed before there is any serious interest in CdePkg and toro C Library.

 

But if you are seeking  for a free solution, that

  • requires unknown additional working hours
  • requires a couple of high motivated maintainers, specialized in Standard C
  • countless  patches will spam your inbox folder for years
  • additionally with unpredictable result

please use  edk2libc, PDCLIB or adjust NewLib for your needs.

 

>Unless those problems are solved, I simply cannot use it.

Right, but you are invited to take a test drive!

In the EDK2 Emulator. Debugging with the best Debugtool ever seen…

Try to get SysPrep and Redfish running in the Emulator.

Really, just do it!

 

> How can I verify what was actually implemented inside?

I will publish source code of toro C Library beginning 2022 and discuss the design details along those files.

But, did you check glibc’s fopen-source before using it?

Have you ever seen Microsoft/Borland/Symantec/ARM/IBM/Dinkumware/Greenhill/IAR … C Libraries source code?

 

Thanks,

Kilian

 

 

Sent from Mail for Windows

 

From: Rabeda, Maciej
Sent: Monday, November 22, 2021 05:31 PM
To: devel@edk2.groups.io; KILIAN_KEGEL@...
Cc: Rebecca Cran; tim.lewis@...; Mike Kinney; afish@...; Leif Lindholm; Richardson, Brian
Subject: Re: [edk2-devel] CdePkgBlog 2021-11-14

 

Hi Kilian,

From my point of view, the main problem with adoption of CdePkg to EDK2 is that it relies on Torito C library.

  1. Torito C library License (https://github.com/KilianKegel/toro-C-Library/blob/master/LICENSE.md) only allows for creating UEFI Shell applications.
    • What about applications that do not rely on ShellPkg (example: SysPrep application that might want to use Redfish, which depends on C standard library)?
    • What about drivers/libraries that rely on C standard library?
    • How is that compatible with EDK2 BSD-2-Clause-Patent?
  2. Torito C is pre-compiled.
    • How can I verify what was actually implemented inside? Industry would have to trust your tests, perform own set of tests or/and disassemble it (doable, but unacceptable effort-wise).

Unless those problems are solved, I simply cannot use it.

Thanks,
Maciej

On 14-Nov-21 20:51, Kilian Kegel wrote:

Hi All,

 

as announced last summer, I’d like to start a comprehensive tutorial on

how to use Standard C / ANSI C in the UEFI environment and how to design and implement

such a library for Shell and POST usage.

 

Since most parts of that comprehensive work are already done,

I will report, demonstrate and discuss implementation principles and details on edk2.groups.io

as a kind of “blog” on a biweekly basis.

 

Please checkout my first CdePkgBlog https://github.com/tianocore/edk2-staging/tree/CdePkg/blogs/2021-11-14#cdepkgblog-2021-11-14

and enjoy the breathtaking build speed if compiler and linker are used exclusively to create MY LEGACY TOOLBOX,

a handy set of one-trick-ponies that I have been using for about 25 years.

 

Have fun,

Kilian

 

 

 



--
Pedro Falcato