blob: 6883a88ff1c30ed813d102753c6eb62bc3770aa2 [file] [log] [blame] [edit]
//===-- Implementation of crt for UEFI ------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "config/app.h"
#include "include/llvm-libc-types/EFI_STATUS.h"
#include "src/__support/OSUtil/uefi/error.h"
#include "src/__support/macros/config.h"
namespace LIBC_NAMESPACE_DECL {
AppProperties app;
}
extern "C" {
EFI_HANDLE __llvm_libc_efi_image_handle;
EFI_SYSTEM_TABLE *__llvm_libc_efi_system_table;
int main(int argc, char **argv, char **envp);
EFI_STATUS EfiMain(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) {
LIBC_NAMESPACE::app.image_handle = ImageHandle;
LIBC_NAMESPACE::app.system_table = SystemTable;
// TODO: we need the EFI_SHELL_PROTOCOL, malloc, free, and UTF16 -> UTF8
// conversion.
return LIBC_NAMESPACE::errno_to_uefi_status(main(0, nullptr, nullptr));
}
}