1 /*++
2 
3 Copyright (c) 2004 - 2006, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution.  The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8 
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 
12 
13 Module Name:
14 
15   PeCoffLoaderEx.c
16 
17 Abstract:
18 
19   IA-32 Specific relocation fixups.
20 
21 --*/
22 
23 #include "BasePeCoffLibInternals.h"
24 
25 /**
26   Performs an IA-32 specific relocation fixup.
27 
28   @param  Reloc       Pointer to the relocation record.
29   @param  Fixup       Pointer to the address to fix up.
30   @param  FixupData   Pointer to a buffer to log the fixups.
31   @param  Adjust      The offset to adjust the fixup.
32 
33   @retval EFI_UNSUPPORTED Unsupported now.
34 
35 **/
36 RETURN_STATUS
GluePeCoffLoaderRelocateImageEx(IN UINT16 * Reloc,IN OUT CHAR8 * Fixup,IN OUT CHAR8 ** FixupData,IN UINT64 Adjust)37 GluePeCoffLoaderRelocateImageEx (
38   IN UINT16      *Reloc,
39   IN OUT CHAR8   *Fixup,
40   IN OUT CHAR8   **FixupData,
41   IN UINT64      Adjust
42   )
43 {
44   return RETURN_UNSUPPORTED;
45 }
46 
47 /**
48   Returns TRUE if the machine type of PE/COFF image is supported. Supported
49   does not mean the image can be executed it means the PE/COFF loader supports
50   loading and relocating of the image type. It's up to the caller to support
51   the entry point.
52 
53   This function implies the basic PE/COFF loader/relocator supports IA32, EBC,
54   & X64 images. Calling the entry point in a correct mannor is up to the
55   consumer of this library.
56 
57   @param  Machine   Machine type from the PE Header.
58 
59   @return TRUE if this PE/COFF loader can load the image
60 
61 **/
62 BOOLEAN
PeCoffLoaderImageFormatSupported(IN UINT16 Machine)63 PeCoffLoaderImageFormatSupported (
64   IN  UINT16  Machine
65   )
66 {
67   if ((Machine == EFI_IMAGE_MACHINE_IA32) || (Machine == EFI_IMAGE_MACHINE_X64) ||
68       (Machine ==  EFI_IMAGE_MACHINE_EBC)) {
69     return TRUE;
70   }
71 
72   return FALSE;
73 }
74 
75 /**
76   Performs an Itanium-based specific re-relocation fixup and is a no-op on other
77   instruction sets. This is used to re-relocated the image into the EFI virtual
78   space for runtime calls.
79 
80   @param  Reloc       Pointer to the relocation record.
81   @param  Fixup       Pointer to the address to fix up.
82   @param  FixupData   Pointer to a buffer to log the fixups.
83   @param  Adjust      The offset to adjust the fixup.
84 
85   @return Status code.
86 
87 **/
88 RETURN_STATUS
GluePeHotRelocateImageEx(IN UINT16 * Reloc,IN OUT CHAR8 * Fixup,IN OUT CHAR8 ** FixupData,IN UINT64 Adjust)89 GluePeHotRelocateImageEx (
90   IN UINT16      *Reloc,
91   IN OUT CHAR8   *Fixup,
92   IN OUT CHAR8   **FixupData,
93   IN UINT64      Adjust
94   )
95 {
96   return RETURN_UNSUPPORTED;
97 }
98 
99