33 lines · cpp
1//===-- Implementation of crt for UEFI ------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "config/app.h"10#include "include/llvm-libc-types/EFI_STATUS.h"11#include "src/__support/OSUtil/uefi/error.h"12#include "src/__support/macros/config.h"13 14namespace LIBC_NAMESPACE_DECL {15AppProperties app;16}17 18extern "C" {19EFI_HANDLE __llvm_libc_efi_image_handle;20EFI_SYSTEM_TABLE *__llvm_libc_efi_system_table;21 22int main(int argc, char **argv, char **envp);23 24EFI_STATUS EfiMain(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) {25 LIBC_NAMESPACE::app.image_handle = ImageHandle;26 LIBC_NAMESPACE::app.system_table = SystemTable;27 28 // TODO: we need the EFI_SHELL_PROTOCOL, malloc, free, and UTF16 -> UTF829 // conversion.30 return LIBC_NAMESPACE::errno_to_uefi_status(main(0, nullptr, nullptr));31}32}33