-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
shim-15.5: add riscv64 #3
Closed
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
GrowBuffer() expects that parameter Status is initialized. LibGetVariableAndSize() currently passes random data from the stack. Initialize variable Status. Signed-off-by: Heinrich Schuchardt <[email protected]>
Add the RISCV64 architecture Signed-off-by: Heinrich Schuchardt <[email protected]>
For each va_start() there must be a va_end(). Correct LibInstallProtocolInterfaces() and LibUninstallProtocolInterfaces(). Signed-off-by: Heinrich Schuchardt <[email protected]>
As per the PE format specification, relocation blocks must be aligned on 32-bit boundaries. Fix the dummy relocations to obey the alignment constraints.
The hidden visibility #pragma in inc/arm/efibind.h was meant to inform the compiler that symbols with external linkage are never exported from shared libraries [and thus never preempted] when executing in UEFI context (since UEFI does not support shared libraries). This allows the compiler to generate relative symbol references instead of GOT entries, which is much more efficient since the latter need to be relocated before invoking the entry point of the UEFI app. However, as it turns out, this pragma is leaking into other code that does not run in UEFI context, but simply needs to access data structures that UEFI defines. So make the pragma dependent on whether we are building with -ffreestanding, which is only used for bare metal code such as UEFI. Last-Update: 2018-08-24 Signed-off-by: Ard Biesheuvel <[email protected]> Elder versions of sbsigntool failed to build on armhf without the patch, cf. https://launchpad.net/ubuntu/+source/gnu-efi/3.0.8-0ubuntu1~16.04.1 Reviewed-by: Heinrich Schuchardt <[email protected]>
For each va_start() there must be a call to va_end(). Signed-off-by: Heinrich Schuchardt <[email protected]>
AllocatePool() may return NULL. We must check the return value before dereferencing it. Signed-off-by: Heinrich Schuchardt <[email protected]>
These values are from the UEFI specification version 2.9. Signed-off-by: David Michael <fedora.dm0@...> Signed-off-by: Nigel Croxon <[email protected]>
Add missing definition. It is needed for 'make apps'. Signed-off-by: Heinrich Schuchardt <[email protected]>
efisetjmp_arch.h is required for 'make apps'. Signed-off-by: Heinrich Schuchardt <[email protected]>
The size of FrameBufferAddr is architecture dependent. Add the missing definition for the riscv64 architecture. Signed-off-by: Heinrich Schuchardt <[email protected]>
Free the buffer allocated to draw boxes. Signed-off-by: Heinrich Schuchardt <[email protected]>
When compiling for x64, Visual Studio 2019's Code Analysis produces the following warnings: C:\Projects\gnu-efi\lib\print.c(1380): warning C26451: Arithmetic overflow: Using operator '+' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '+' to avoid overflow (io.2). C:\Projects\gnu-efi\lib\smbios.c(47): warning C26451: Arithmetic overflow: Using operator '+' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '+' to avoid overflow (io.2). C:\Projects\gnu-efi\lib\str.c(289): warning C26451: Arithmetic overflow: Using operator '-' on a 4 byte value and then casting the result to a 8 byte value. Cast the value to the wider type before calling operator '-' to avoid overflow (io.2). Fix these by adding an explicit cast to UINTN.
Acoording to what the spec says about the number of sybols [1]: "This value should be zero for an image because COFF debugging information is deprecated." Changing as if not zero it causes problems to llvm-objcopy. This affects only the architectures where COFF is not supported by objcopy and where we build the PE header via assembly code. [1] https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
There's little reason not to derive the RISCV64 version of efibind.h from the AARCH64 version, especially as the current version is missing required macros such as EFI_DRIVER_ENTRY_POINT() which breaks the compilation of some drivers. The only major difference we introduce from AARCH64 is to consider that any toolchain that supports RISCV64 is modern enough to support <stdint.h>. Also, as we preserve the added definition for BOOLEAN, we guard it with an ifndef in anticipation of MSVC RISCV64 support. We validated these changes by confirming that they now allow gnu-efi to be used to compile a set of UEFI drivers for RISCV64.
Shim has diverged from upstream gnu-efi in using CHAR16 (instead of WCHAR) and CHAR8. Signed-off-by: Heinrich Schuchardt <[email protected]>
Shim uses ms_va_end() instead of va_end(). Signed-off-by: Heinrich Schuchardt <[email protected]>
Shim uses a variable ARCHES which does not exist in upstream gnu-efi. Signed-off-by: Heinrich Schuchardt <[email protected]>
xypron
force-pushed
the
shim-15.5-riscv64
branch
from
August 28, 2021 05:13
cafb758
to
bedb53a
Compare
The string pointed to by Src will never be changed. So it can be safely defined as IN CONST VOID*. This avoids unnecessary conversions by callers. Signed-off-by: Heinrich Schuchardt <[email protected]>
* There should be no section overlapping the header. * The .text and the .data section should be separated. * The virtual size of the sections should be set correctly. * On RISC-V we need a .reloc section. As shim has its own linker script this patch does not adjusts gnu-efi's one. Signed-off-by: Heinrich Schuchardt <[email protected]>
xypron
force-pushed
the
shim-15.5-riscv64
branch
from
September 30, 2021 11:12
94192bb
to
7d2c3e4
Compare
Shim 15.5 is obsolete. Hence closing this pull request. |
vathpela
pushed a commit
that referenced
this pull request
Nov 22, 2024
lds: Add eh_frame_hdr section
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #2
This series contains most patches between gnu-efi 3.0.13 and 3.0.14.
Additional patches adjust the code where shim deviates from upstream gnu-efi.