| /* |
| * Copyright 2001-2008 Texas Instruments - http://www.ti.com/ |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| |
| #ifndef _GETSECTION_H_ |
| #define _GETSECTION_H_ |
| |
| #ifndef _SIZE_T_DEFINED_ /* Android sets _SIZE_T_DEFINED_ on defining size_t */ |
| typedef unsigned int size_t; |
| #define _SIZE_T_DEFINED_ |
| #endif |
| #include "dynamic_loader.h" |
| |
| #ifdef __cplusplus |
| extern "C" { /* C-only version */ |
| #endif |
| |
| /* |
| * Get Section Information |
| * |
| * This file provides an API add-on to the dynamic loader that allows the user |
| * to query section information and extract section data from dynamic load |
| * modules. |
| * |
| * NOTE: |
| * Functions in this API assume that the supplied Dynamic_Loader_Stream object |
| * supports the set_file_posn method. |
| */ |
| |
| typedef void *DLOAD_module_info; /* opaque handle for module information */ |
| |
| /***************************************************************************** |
| * Procedure DLOAD_module_open |
| * |
| * Parameters: |
| * module The input stream that supplies the module image |
| * syms Host-side malloc/free and error reporting functions. |
| * Other methods are unused. |
| * |
| * Effect: |
| * Reads header information from a dynamic loader module using the specified |
| * stream object, and returns a handle for the module information. This |
| * handle may be used in subsequent query calls to obtain information |
| * contained in the module. |
| * |
| * Returns: |
| * NULL if an error is encountered, otherwise a module handle for use |
| * in subsequent operations. |
| *****************************************************************************/ |
| extern DLOAD_module_info DLOAD_module_open(struct Dynamic_Loader_Stream * |
| module, |
| struct Dynamic_Loader_Sym * syms); |
| |
| /***************************************************************************** |
| * Procedure DLOAD_GetSectionInfo |
| * |
| * Parameters: |
| * minfo Handle from DLOAD_module_open for this module |
| * sectionName Pointer to the string name of the section desired |
| * sectionInfo Address of a section info structure pointer to be initialized |
| * |
| * Effect: |
| * Finds the specified section in the module information, and fills in |
| * the provided LDR_SECTION_INFO structure. |
| * |
| * Returns: |
| * TRUE for success, FALSE for section not found |
| *****************************************************************************/ |
| extern int DLOAD_GetSectionInfo(DLOAD_module_info minfo, |
| const char *sectionName, |
| const struct LDR_SECTION_INFO ** |
| const sectionInfo); |
| |
| /***************************************************************************** |
| * Procedure DLOAD_GetSectionNum |
| * |
| * Parameters: |
| * minfo Handle from DLOAD_module_open for this module |
| * secn Section number 0.. |
| * sectionInfo Address of a section info structure pointer to be initialized |
| * |
| * Effect: |
| * Finds the secn'th section in the specified module, and fills in |
| * the provided LDR_SECTION_INFO structure. If there are less than "secn+1" |
| * sections in the module, returns NULL. |
| * |
| * Returns: |
| * TRUE for success, FALSE for failure |
| *****************************************************************************/ |
| extern int DLOAD_GetSectionNum(DLOAD_module_info minfo, |
| const unsigned secn, |
| const struct LDR_SECTION_INFO ** |
| const sectionInfo); |
| |
| /***************************************************************************** |
| * Procedure DLOAD_RoundUpSectionSize |
| * |
| * Parameters: |
| * sectSize The actual size of the section in target addressable units |
| * |
| * Effect: |
| * Rounds up the section size to the next multiple of 32 bits. |
| * |
| * Returns: |
| * The rounded-up section size. |
| *****************************************************************************/ |
| extern size_t DLOAD_RoundUpSectionSize(LDR_ADDR sectSize); |
| |
| /***************************************************************************** |
| * Procedure DLOAD_GetSection |
| * |
| * Parameters: |
| * minfo Handle from DLOAD_module_open for this module |
| * sectionInfo Pointer to a section info structure for the desired section |
| * sectionData Buffer to contain the section initialized data |
| * |
| * Effect: |
| * Copies the initialized data for the specified section into the |
| * supplied buffer. |
| * |
| * Returns: |
| * TRUE for success, FALSE for section not found |
| *****************************************************************************/ |
| extern int DLOAD_GetSection(DLOAD_module_info minfo, |
| const struct LDR_SECTION_INFO * sectionInfo, |
| void *sectionData); |
| |
| /***************************************************************************** |
| * Procedure DLOAD_module_close |
| * |
| * Parameters: |
| * minfo Handle from DLOAD_module_open for this module |
| * |
| * Effect: |
| * Releases any storage associated with the module handle. On return, |
| * the module handle is invalid. |
| * |
| * Returns: |
| * Zero for success. On error, the number of errors detected is returned. |
| * Individual errors are reported using syms->Error_Report(), where syms was |
| * an argument to DLOAD_module_open |
| *****************************************************************************/ |
| extern void DLOAD_module_close(DLOAD_module_info minfo); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /* _GETSECTION_H_ */ |