Spaces:
Running
Running
/** | |
* \file lzma/bcj.h | |
* \brief Branch/Call/Jump conversion filters | |
*/ | |
/* | |
* Author: Lasse Collin | |
* | |
* This file has been put into the public domain. | |
* You can do whatever you want with this file. | |
* | |
* See ../lzma.h for information about liblzma as a whole. | |
*/ | |
/* Filter IDs for lzma_filter.id */ | |
/**< | |
* Filter for x86 binaries | |
*/ | |
/**< | |
* Filter for Big endian PowerPC binaries | |
*/ | |
/**< | |
* Filter for IA-64 (Itanium) binaries. | |
*/ | |
/**< | |
* Filter for ARM binaries. | |
*/ | |
/**< | |
* Filter for ARM-Thumb binaries. | |
*/ | |
/**< | |
* Filter for SPARC binaries. | |
*/ | |
/** | |
* \brief Options for BCJ filters | |
* | |
* The BCJ filters never change the size of the data. Specifying options | |
* for them is optional: if pointer to options is NULL, default value is | |
* used. You probably never need to specify options to BCJ filters, so just | |
* set the options pointer to NULL and be happy. | |
* | |
* If options with non-default values have been specified when encoding, | |
* the same options must also be specified when decoding. | |
* | |
* \note At the moment, none of the BCJ filters support | |
* LZMA_SYNC_FLUSH. If LZMA_SYNC_FLUSH is specified, | |
* LZMA_OPTIONS_ERROR will be returned. If there is need, | |
* partial support for LZMA_SYNC_FLUSH can be added in future. | |
* Partial means that flushing would be possible only at | |
* offsets that are multiple of 2, 4, or 16 depending on | |
* the filter, except x86 which cannot be made to support | |
* LZMA_SYNC_FLUSH predictably. | |
*/ | |
typedef struct { | |
/** | |
* \brief Start offset for conversions | |
* | |
* This setting is useful only when the same filter is used | |
* _separately_ for multiple sections of the same executable file, | |
* and the sections contain cross-section branch/call/jump | |
* instructions. In that case it is beneficial to set the start | |
* offset of the non-first sections so that the relative addresses | |
* of the cross-section branch/call/jump instructions will use the | |
* same absolute addresses as in the first section. | |
* | |
* When the pointer to options is NULL, the default value (zero) | |
* is used. | |
*/ | |
uint32_t start_offset; | |
} lzma_options_bcj; | |