4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Root include file to support building OpenSSL Crypto Library.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __OPEN_SSL_SUPPORT_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __OPEN_SSL_SUPPORT_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Base.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/BaseLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/BaseMemoryLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/MemoryAllocationLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Library/DebugLib.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// File operations are not required for building Open SSL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// so FILE is mapped to VOID * to pass build
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef VOID *FILE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Map all va_xxxx elements to VA_xxx defined in MdePkg/Include/Base.h
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#if !defined(__CC_ARM) // if va_list is not already defined
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define va_list VA_LIST
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define va_arg VA_ARG
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define va_start VA_START
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define va_end VA_END
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#else // __CC_ARM
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define va_start(Marker, Parameter) __va_start(Marker, Parameter)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define va_arg(Marker, TYPE) __va_arg(Marker, TYPE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define va_end(Marker) ((void)0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// #defines from EFI Application Toolkit required to buiild Open SSL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ENOMEM 12 /* Cannot allocate memory */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EINVAL 22 /* Invalid argument */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define BUFSIZ 1024 /* size of buffer used by setbuf */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define INT_MAX 2147483647 /* max value for an int */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define INT_MIN (-2147483647-1) /* min value for an int */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LONG_MAX 2147483647L /* max value for a long */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LONG_MIN (-2147483647-1) /* min value for a long */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define ULONG_MAX 0xffffffff /* max value for an unsigned long */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_DAEMON (3<<3) /* system daemons */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_EMERG 0 /* system is unusable */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_ALERT 1 /* action must be taken immediately */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_CRIT 2 /* critical conditions */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_ERR 3 /* error conditions */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_WARNING 4 /* warning conditions */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_NOTICE 5 /* normal but significant condition */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_INFO 6 /* informational */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_DEBUG 7 /* debug-level messages */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_PID 0x01 /* log the pid with each message */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define LOG_CONS 0x02 /* log on the console if errors in sending */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Macros from EFI Application Toolkit required to buiild Open SSL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/* The offsetof() macro calculates the offset of a structure member
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in its structure. Unfortunately this cannot be written down
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync portably, hence it is provided by a Standard C header file.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync For pre-Standard C compilers, here is a version that usually works
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (but watch out!): */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define offsetof(type, member) ( (int) & ((type*)0) -> member )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Basic types from EFI Application Toolkit required to buiild Open SSL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINTN size_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef INTN ssize_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef INT64 off_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINT16 mode_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef long time_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef unsigned long clock_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINT32 uid_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINT32 gid_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINT32 ino_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINT32 dev_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINT16 nlink_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef int pid_t;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef void *DIR;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef void __sighandler_t (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Structures from EFI Application Toolkit required to buiild Open SSL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct tm {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_sec; /* seconds after the minute [0-60] */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_min; /* minutes after the hour [0-59] */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_hour; /* hours since midnight [0-23] */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_mday; /* day of the month [1-31] */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_mon; /* months since January [0-11] */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_year; /* years since 1900 */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_wday; /* days since Sunday [0-6] */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_yday; /* days since January 1 [0-365] */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync int tm_isdst; /* Daylight Savings Time flag */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync long tm_gmtoff; /* offset from CUT in seconds */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char *tm_zone; /* timezone abbreviation */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct dirent {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 d_fileno; /* file number of entry */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 d_reclen; /* length of this record */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 d_type; /* file type, see below */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 d_namlen; /* length of string in d_name */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync char d_name[255 + 1]; /* name must be no longer than this */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct stat {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dev_t st_dev; /* inode's device */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ino_t st_ino; /* inode's number */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mode_t st_mode; /* inode protection mode */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync nlink_t st_nlink; /* number of hard links */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync uid_t st_uid; /* user ID of the file's owner */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gid_t st_gid; /* group ID of the file's group */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dev_t st_rdev; /* device type */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync time_t st_atime; /* time of last access */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync long st_atimensec; /* nsec of last access */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync time_t st_mtime; /* time of last data modification */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync long st_mtimensec; /* nsec of last data modification */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync time_t st_ctime; /* time of last file status change */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync long st_ctimensec; /* nsec of last file status change */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync off_t st_size; /* file size, in bytes */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INT64 st_blocks; /* blocks allocated for file */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 st_blksize; /* optimal blocksize for I/O */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 st_flags; /* user defined flags for file */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 st_gen; /* file generation number */
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INT32 st_lspare;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INT64 st_qspare[2];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Externs from EFI Application Toolkit required to buiild Open SSL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern int errno;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Function prototypes from EFI Application Toolkit required to buiild Open SSL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid *malloc (size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid *realloc (void *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid free (void *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint isdigit (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint isspace (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint tolower (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint isupper (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint isxdigit (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint isalnum (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid *memcpy (void *, const void *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid *memset (void *, int, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid *memchr (const void *, int, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint memcmp (const void *, const void *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid *memmove (void *, const void *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint strcmp (const char *, const char *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint strncmp (const char *, const char *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *strcpy (char *, const char *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *strncpy (char *, const char *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncsize_t strlen (const char *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *strcat (char *, const char *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *strchr (const char *, int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint strcasecmp (const char *, const char *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint strncasecmp (const char *, const char *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *strncpy (char *, const char *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint strncmp (const char *, const char *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *strrchr (const char *, int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncunsigned long strtoul (const char *, char **, int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynclong strtol (const char *, char **, int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint printf (const char *, ...);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint sscanf (const char *, const char *, ...);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint open (const char *, int, ...);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint chmod (const char *, mode_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint stat (const char *, struct stat *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncoff_t lseek (int, off_t, int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncssize_t read (int, void *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncssize_t write (int, const void *, size_t);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint close (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncFILE *fopen (const char *, const char *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncsize_t fread (void *, size_t, size_t, FILE *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncsize_t fwrite (const void *, size_t, size_t, FILE *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *fgets (char *, int, FILE *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint fputs (const char *, FILE *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint fprintf (FILE *, const char *, ...);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint vfprintf (FILE *, const char *, VA_LIST);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint fflush (FILE *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint fclose (FILE *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDIR *opendir (const char *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct dirent *readdir (DIR *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncint closedir (DIR *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid openlog (const char *, int, int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid closelog (void);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid syslog (int, const char *, ...);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctime_t time (time_t *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct tm *localtime (const time_t *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct tm *gmtime (const time_t *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct tm *gmtime_r (const time_t *, struct tm *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncuid_t getuid (void);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncuid_t geteuid (void);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncgid_t getgid (void);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncgid_t getegid (void);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid qsort (void *, size_t, size_t, int (*)(const void *, const void *));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncchar *getenv (const char *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid exit (int);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvoid abort (void);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync__sighandler_t *signal (int, __sighandler_t *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Global variables from EFI Application Toolkit required to buiild Open SSL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern FILE *stderr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern FILE *stdin;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern FILE *stdout;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Macros that directly map functions to BaseLib, BaseMemoryLib, and DebugLib functions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define memcpy(dest,source,count) CopyMem(dest,source,(UINTN)(count))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define memset(dest,ch,count) SetMem(dest,(UINTN)(count),(UINT8)(ch))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define memchr(buf,ch,count) ScanMem8(buf,(UINTN)(count),(UINT8)ch)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define memcmp(buf1,buf2,count) (int)(CompareMem(buf1,buf2,(UINTN)(count)))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define memmove(dest,source,count) CopyMem(dest,source,(UINTN)(count))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define strcmp AsciiStrCmp
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define strncmp(string1,string2,count) (int)(AsciiStrnCmp(string1,string2,(UINTN)(count)))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define strcpy(strDest,strSource) AsciiStrCpy(strDest,strSource)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define strncpy(strDest,strSource,count) AsciiStrnCpy(strDest,strSource,(UINTN)count)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define strlen(str) (size_t)(AsciiStrLen(str))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define strcat(strDest,strSource) AsciiStrCat(strDest,strSource)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define strchr(str,ch) ScanMem8((VOID *)(str),AsciiStrSize(str),(UINT8)ch)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define abort() ASSERT (FALSE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define assert(expression)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define localtime(timer) NULL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define gmtime_r(timer,result) (result = NULL)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif