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