Skip to content

notiflux/OcSupportPkg

 
 

Repository files navigation

OcSupportPkg

Additional UEFI support common libraries shared by other projects in Acidanthera. The primary purpose of the library set is to provide supplemental functionality for Apple-specific UEFI drivers.

Early history of the codebase could be found in AppleSupportPkg and PicoLib library set by The HermitCrabs Lab.

Features

  • Apple PE image signature verification
  • CPU information gathering
  • Cryptographic primitives (SHA-256, RSA, etc.)
  • Helper code for ACPI reads and modifications
  • Higher level abstractions for files, strings, timers, variables
  • Overflow checking arithmetics
  • PE image loading with no UEFI Secure Boot conflict
  • Plist configuration format parsing
  • PNG image loading

OcGuardLib

This library implements basic safety features recommended for the use within the project. It implements fast safe integral arithmetics mapping on compiler builtins, type alignment checking, and UBSan runtime, based on NetBSD implementation.

The use of UBSan runtime requires the use of Clang compiler and -fsanitize=undefined argument. Refer to Clang documentation for more details. Among the known compatibility issues with EDK2 and UDK is broken CR implementation, causing false positives. To workaround a flood of warnings, until a fix is merged upstream, replace the line:

#define BASE_CR(Record, TYPE, Field)  ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))

in MdePkg/Include/Base.h with C-conformant implementation:

#define BASE_CR(Record, TYPE, Field)  ((TYPE *) ((CHAR8 *) (Record) - OFFSET_OF (TYPE, Field)))

Credits

About

OpenCore common libraries

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 92.4%
  • C++ 6.2%
  • Objective-C 0.7%
  • Python 0.5%
  • PHP 0.1%
  • Shell 0.1%