WUMSLoader/wumsloader/src/utils/ElfUtils.h

48 lines
1.3 KiB
C
Raw Normal View History

2020-04-28 14:43:07 +02:00
#pragma once
#include <stdint.h>
2020-06-06 17:02:31 +02:00
#include <wums.h>
2020-04-28 14:43:07 +02:00
#ifdef __cplusplus
extern "C" {
#endif
2022-02-04 21:44:03 +01:00
#define R_PPC_NONE 0
#define R_PPC_ADDR32 1
#define R_PPC_ADDR16_LO 4
#define R_PPC_ADDR16_HI 5
#define R_PPC_ADDR16_HA 6
#define R_PPC_REL24 10
#define R_PPC_REL14 11
#define R_PPC_DTPMOD32 68
#define R_PPC_DTPREL32 78
#define R_PPC_EMB_SDA21 109
#define R_PPC_EMB_RELSDA 116
#define R_PPC_DIAB_SDA21_LO 180
#define R_PPC_DIAB_SDA21_HI 181
#define R_PPC_DIAB_SDA21_HA 182
#define R_PPC_DIAB_RELSDA_LO 183
#define R_PPC_DIAB_RELSDA_HI 184
#define R_PPC_DIAB_RELSDA_HA 185
#define R_PPC_GHS_REL16_HA 251
#define R_PPC_GHS_REL16_HI 252
#define R_PPC_GHS_REL16_LO 253
2020-04-28 14:43:07 +02:00
// Masks for manipulating Power PC relocation targets
2022-02-04 21:44:03 +01:00
#define PPC_WORD32 0xFFFFFFFF
#define PPC_WORD30 0xFFFFFFFC
#define PPC_LOW24 0x03FFFFFC
#define PPC_LOW14 0x0020FFFC
#define PPC_HALF16 0xFFFF
2020-04-28 14:43:07 +02:00
#ifdef __cplusplus
}
#endif
class ElfUtils {
public:
2022-01-27 12:52:45 +01:00
static bool elfLinkOne(char type, size_t offset, int32_t addend, uint32_t destination, uint32_t symbol_addr, relocation_trampoline_entry_t *trampoline_data, uint32_t trampoline_data_length,
2021-09-23 18:38:29 +02:00
RelocationType reloc_type);
2020-04-28 14:43:07 +02:00
};