18bf80f4bSopenharmony_ci/* 28bf80f4bSopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 38bf80f4bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 48bf80f4bSopenharmony_ci * you may not use this file except in compliance with the License. 58bf80f4bSopenharmony_ci * You may obtain a copy of the License at 68bf80f4bSopenharmony_ci * 78bf80f4bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 88bf80f4bSopenharmony_ci * 98bf80f4bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 108bf80f4bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 118bf80f4bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 128bf80f4bSopenharmony_ci * See the License for the specific language governing permissions and 138bf80f4bSopenharmony_ci * limitations under the License. 148bf80f4bSopenharmony_ci */ 158bf80f4bSopenharmony_ci#ifndef __LUME_ELF_DEFINES__ 168bf80f4bSopenharmony_ci#define __LUME_ELF_DEFINES__ 178bf80f4bSopenharmony_ci#include <cstdint> 188bf80f4bSopenharmony_ci#define EI_NIDENT 16 198bf80f4bSopenharmony_ci#define ET_REL 1 208bf80f4bSopenharmony_ci#define EM_NONE 0 218bf80f4bSopenharmony_ci 228bf80f4bSopenharmony_ci#define EV_CURRENT 1 /*original format...*/ 238bf80f4bSopenharmony_ci#define ELFCLASS32 1 248bf80f4bSopenharmony_ci#define ELFCLASS64 2 258bf80f4bSopenharmony_ci#define ELFDATA2LSB 1 268bf80f4bSopenharmony_ci#define ELFDATA2MSB 1 278bf80f4bSopenharmony_ci#define ELFOSABI_NONE 0 288bf80f4bSopenharmony_ci 298bf80f4bSopenharmony_ci#define EM_NONE 0 308bf80f4bSopenharmony_ci#define EM_386 3 318bf80f4bSopenharmony_ci#define EM_ARM 40 /* ARM 32 bit */ 328bf80f4bSopenharmony_ci#define EM_X86_64 62 /* AMD x86-64 */ 338bf80f4bSopenharmony_ci#define EM_AARCH64 183 /* ARM 64 bit */ 348bf80f4bSopenharmony_ci 358bf80f4bSopenharmony_ci#define SHT_PROGBITS 1 368bf80f4bSopenharmony_ci#define SHT_SYMTAB 2 378bf80f4bSopenharmony_ci#define SHT_STRTAB 3 388bf80f4bSopenharmony_ci 398bf80f4bSopenharmony_ci#define SHF_ALLOC 0x2 408bf80f4bSopenharmony_ci#define SHF_MERGE 0x10 418bf80f4bSopenharmony_ci#define SHN_UNDEF 0 428bf80f4bSopenharmony_ci#define STB_GLOBAL 1 438bf80f4bSopenharmony_ci#define STT_OBJECT 1 448bf80f4bSopenharmony_ci#define STV_HIDDEN 2 458bf80f4bSopenharmony_ci#define ELF_ST_BIND(info) ((info) >> 4) 468bf80f4bSopenharmony_ci#define ELF_ST_TYPE(info) ((info)&0xf) 478bf80f4bSopenharmony_ci#define ELF_ST_INFO(bind, type) (((bind) << 4) + ((type)&0xf)) 488bf80f4bSopenharmony_ci 498bf80f4bSopenharmony_citypedef struct ElfIdent { 508bf80f4bSopenharmony_ci char EI_MAG0; 518bf80f4bSopenharmony_ci char EI_MAG1; 528bf80f4bSopenharmony_ci char EI_MAG2; 538bf80f4bSopenharmony_ci char EI_MAG3; 548bf80f4bSopenharmony_ci uint8_t EI_CLASS; 558bf80f4bSopenharmony_ci uint8_t EI_DATA; 568bf80f4bSopenharmony_ci uint8_t EI_VERSION; 578bf80f4bSopenharmony_ci uint8_t EI_OSABI; 588bf80f4bSopenharmony_ci uint8_t EI_PAD[EI_NIDENT - 8]; 598bf80f4bSopenharmony_ci} ElfIdent; 608bf80f4bSopenharmony_ci 618bf80f4bSopenharmony_ci#endif