Adds `crt1.o` for the UEFI platform in the LLVM C library. This makes things start to become useful.
33 lines
1.1 KiB
C++
33 lines
1.1 KiB
C++
//===-- 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));
|
|
}
|
|
}
|