OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
Vtables.c File Reference
#include <Base.h>
#include <IndustryStandard/AppleMachoImage.h>
#include <Library/BaseLib.h>
#include <Library/BaseOverflowLib.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/OcAppleKernelLib.h>
#include <Library/OcMachoLib.h>
#include "PrelinkedInternal.h"

Go to the source code of this file.

Functions

CONST PRELINKED_VTABLEInternalGetOcVtableByNameWorker (IN PRELINKED_CONTEXT *Context, IN PRELINKED_KEXT *Kext, IN CONST CHAR8 *Name)
 
CONST PRELINKED_VTABLEInternalGetOcVtableByName (IN PRELINKED_CONTEXT *Context, IN PRELINKED_KEXT *Kext, IN CONST CHAR8 *Name)
 
STATIC VOID InternalConstructVtablePrelinked (IN PRELINKED_CONTEXT *Context, IN OUT PRELINKED_KEXT *Kext, IN CONST OC_PRELINKED_VTABLE_LOOKUP_ENTRY *VtableLookup, OUT PRELINKED_VTABLE *Vtable)
 
BOOLEAN InternalGetVtableEntries (IN BOOLEAN Is32Bit, IN CONST VOID *VtableData, IN UINT32 MaxSize, OUT UINT32 *NumEntries)
 
BOOLEAN InternalPrepareCreateVtablesPrelinked (IN PRELINKED_KEXT *Kext, IN UINT32 MaxSize, OUT UINT32 *NumVtables, OUT OC_PRELINKED_VTABLE_LOOKUP_ENTRY *Vtables)
 
VOID InternalCreateVtablesPrelinked (IN PRELINKED_CONTEXT *Context, IN OUT PRELINKED_KEXT *Kext, IN UINT32 NumVtables, IN CONST OC_PRELINKED_VTABLE_LOOKUP_ENTRY *VtableLookups, OUT PRELINKED_VTABLE *VtableBuffer)
 
STATIC BOOLEAN InternalPatchVtableSymbol (IN OUT OC_MACHO_CONTEXT *MachoContext, IN CONST PRELINKED_VTABLE_ENTRY *ParentEntry, IN CONST CHAR8 *VtableName, OUT MACH_NLIST_ANY *Symbol)
 
STATIC BOOLEAN InternalInitializeVtableByEntriesAndRelocations (IN PRELINKED_CONTEXT *Context, IN PRELINKED_KEXT *Kext, IN CONST PRELINKED_VTABLE *SuperVtable, IN CONST MACH_NLIST_ANY *VtableSymbol, IN CONST VOID *VtableData, IN UINT32 NumSolveSymbols, IN OUT MACH_NLIST_ANY **SolveSymbols, OUT PRELINKED_VTABLE *Vtable)
 
STATIC BOOLEAN InternalInitializeVtablePatchData (IN OUT OC_MACHO_CONTEXT *MachoContext, IN CONST MACH_NLIST_ANY *VtableSymbol, IN OUT UINT32 *MaxSize, OUT VOID **VtableDataPtr, OUT UINT32 *NumEntries, OUT UINT32 *NumSymbols, OUT MACH_NLIST_ANY **SolveSymbols)
 
BOOLEAN InternalPatchByVtables (IN PRELINKED_CONTEXT *Context, IN OUT PRELINKED_KEXT *Kext)
 

Detailed Description

Library handling KEXT prelinking.

Copyright (c) 2018, Download-Fritz. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php.

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

Definition in file Vtables.c.

Function Documentation

◆ InternalConstructVtablePrelinked()

STATIC VOID InternalConstructVtablePrelinked ( IN PRELINKED_CONTEXT * Context,
IN OUT PRELINKED_KEXT * Kext,
IN CONST OC_PRELINKED_VTABLE_LOOKUP_ENTRY * VtableLookup,
OUT PRELINKED_VTABLE * Vtable )

Definition at line 92 of file Vtables.c.

◆ InternalCreateVtablesPrelinked()

VOID InternalCreateVtablesPrelinked ( IN PRELINKED_CONTEXT * Context,
IN OUT PRELINKED_KEXT * Kext,
IN UINT32 NumVtables,
IN CONST OC_PRELINKED_VTABLE_LOOKUP_ENTRY * VtableLookups,
OUT PRELINKED_VTABLE * VtableBuffer )

Definition at line 235 of file Vtables.c.

◆ InternalGetOcVtableByName()

CONST PRELINKED_VTABLE * InternalGetOcVtableByName ( IN PRELINKED_CONTEXT * Context,
IN PRELINKED_KEXT * Kext,
IN CONST CHAR8 * Name )

Definition at line 75 of file Vtables.c.

◆ InternalGetOcVtableByNameWorker()

CONST PRELINKED_VTABLE * InternalGetOcVtableByNameWorker ( IN PRELINKED_CONTEXT * Context,
IN PRELINKED_KEXT * Kext,
IN CONST CHAR8 * Name )

Definition at line 29 of file Vtables.c.

◆ InternalGetVtableEntries()

BOOLEAN InternalGetVtableEntries ( IN BOOLEAN Is32Bit,
IN CONST VOID * VtableData,
IN UINT32 MaxSize,
OUT UINT32 * NumEntries )

Definition at line 151 of file Vtables.c.

◆ InternalInitializeVtableByEntriesAndRelocations()

STATIC BOOLEAN InternalInitializeVtableByEntriesAndRelocations ( IN PRELINKED_CONTEXT * Context,
IN PRELINKED_KEXT * Kext,
IN CONST PRELINKED_VTABLE * SuperVtable,
IN CONST MACH_NLIST_ANY * VtableSymbol,
IN CONST VOID * VtableData,
IN UINT32 NumSolveSymbols,
IN OUT MACH_NLIST_ANY ** SolveSymbols,
OUT PRELINKED_VTABLE * Vtable )

Definition at line 394 of file Vtables.c.

◆ InternalInitializeVtablePatchData()

STATIC BOOLEAN InternalInitializeVtablePatchData ( IN OUT OC_MACHO_CONTEXT * MachoContext,
IN CONST MACH_NLIST_ANY * VtableSymbol,
IN OUT UINT32 * MaxSize,
OUT VOID ** VtableDataPtr,
OUT UINT32 * NumEntries,
OUT UINT32 * NumSymbols,
OUT MACH_NLIST_ANY ** SolveSymbols )

Definition at line 490 of file Vtables.c.

◆ InternalPatchByVtables()

BOOLEAN InternalPatchByVtables ( IN PRELINKED_CONTEXT * Context,
IN OUT PRELINKED_KEXT * Kext )

Definition at line 584 of file Vtables.c.

◆ InternalPatchVtableSymbol()

STATIC BOOLEAN InternalPatchVtableSymbol ( IN OUT OC_MACHO_CONTEXT * MachoContext,
IN CONST PRELINKED_VTABLE_ENTRY * ParentEntry,
IN CONST CHAR8 * VtableName,
OUT MACH_NLIST_ANY * Symbol )

kxld_vtable_patch

Definition at line 263 of file Vtables.c.

◆ InternalPrepareCreateVtablesPrelinked()

BOOLEAN InternalPrepareCreateVtablesPrelinked ( IN PRELINKED_KEXT * Kext,
IN UINT32 MaxSize,
OUT UINT32 * NumVtables,
OUT OC_PRELINKED_VTABLE_LOOKUP_ENTRY * Vtables )

Definition at line 179 of file Vtables.c.