/* * Copyright 2019, Cypress Semiconductor Corporation or a subsidiary of * Cypress Semiconductor Corporation. All Rights Reserved. * * This software, associated documentation and materials ("Software") * is owned by Cypress Semiconductor Corporation, * or one of its subsidiaries ("Cypress") and is protected by and subject to * worldwide patent protection (United States and foreign), * United States copyright laws and international treaty provisions. * Therefore, you may use this Software only as provided in the license * agreement accompanying the software package from which you * obtained this Software ("EULA"). * If no EULA applies, Cypress hereby grants you a personal, non-exclusive, * non-transferable license to copy, modify, and compile the Software * source code solely for use in connection with Cypress's * integrated circuit products. Any reproduction, modification, translation, * compilation, or representation of this Software except as specified * above is prohibited without the express written permission of Cypress. * * Disclaimer: THIS SOFTWARE IS PROVIDED AS-IS, WITH NO WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT, IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress * reserves the right to make changes to the Software without notice. Cypress * does not assume any liability arising out of the application or use of the * Software or any product or circuit described in the Software. Cypress does * not authorize its products for use in any products where a malfunction or * failure of the Cypress product may reasonably be expected to result in * significant property damage, injury or death ("High Risk Product"). By * including Cypress's product in a High Risk Product, the manufacturer * of such system or application assumes all risk of such use and in doing * so agrees to indemnify Cypress against all liability. */ #ifndef INCLUDED_ELF_H_ #define INCLUDED_ELF_H_ #ifdef __cplusplus extern "C" { #endif /****************************************************** * Macros ******************************************************/ /****************************************************** * Constants ******************************************************/ #define ELF_MAGIC_NUMBER 0x464C457F /* 0x7f 'E'L'F' (define is Network endian swapped) */ /****************************************************** * Enumerations ******************************************************/ /****************************************************** * Type Definitions ******************************************************/ /****************************************************** * Structures ******************************************************/ #pragma pack(1) typedef struct { struct { uint32_t magic; /* should be 0x7f 'E' 'L' 'F' */ uint8_t elfclass; uint8_t data; uint8_t version; uint8_t reserved[9]; } ident; uint16_t type; uint16_t machine; uint32_t version; uint32_t entry; uint32_t program_header_offset; /* from start of file */ uint32_t section_header_table_offset; /* from start of file */ uint32_t flags; uint16_t elf_header_size; uint16_t program_header_entry_size; uint16_t program_header_entry_count; uint16_t section_header_entry_size; uint16_t section_header_entry_count; uint16_t string_table_index; /* index in the section header table */ } elf_header_t; typedef struct { uint32_t type; uint32_t data_offset; uint32_t virtual_address; uint32_t physical_address; uint32_t data_size_in_file; uint32_t data_size_in_memory; uint32_t flags; uint32_t alignment; } elf_program_header_t; typedef struct { uint32_t name_index_in_string_table; uint32_t type; uint32_t flags; uint32_t dest_addr; uint32_t data_offset; /* from start of file */ uint32_t size; uint32_t link; uint32_t info; uint32_t addralign; uint32_t entsize; } elf_section_header_t; #pragma pack() /****************************************************** * Global Variables ******************************************************/ /****************************************************** * Function Declarations ******************************************************/ #ifdef __cplusplus } /*extern "C" */ #endif #endif /* ifndef INCLUDED_ELF_H_ */