|
|
d4473b |
#ifndef SLIBTOOL_ARBITS_H
|
|
|
d4473b |
#define SLIBTOOL_ARBITS_H
|
|
|
d4473b |
|
|
|
d4473b |
#ifdef __cplusplus
|
|
|
d4473b |
extern "C" {
|
|
|
d4473b |
#endif
|
|
|
d4473b |
|
|
|
d4473b |
#include <stddef.h>
|
|
|
d4473b |
|
|
|
d4473b |
#define AR_SIGNATURE "!<arch>\n"
|
|
|
d4473b |
|
|
|
d4473b |
#define AR_MEMBER_ATTR_DEFAULT (0x00)
|
|
|
d4473b |
#define AR_MEMBER_ATTR_ASCII (0x01)
|
|
|
d4473b |
#define AR_MEMBER_ATTR_UTF8 (0x02)
|
|
|
ab72d3 |
#define AR_MEMBER_ATTR_OBJECT (0x04)
|
|
|
ab72d3 |
#define AR_MEMBER_ATTR_ARCHIVE (0x08)
|
|
|
ab72d3 |
#define AR_MEMBER_ATTR_ARMAP (0x10)
|
|
|
d4473b |
#define AR_MEMBER_ATTR_NAMESTRS (0x20)
|
|
|
d4473b |
#define AR_MEMBER_ATTR_LINKINFO (0x40)
|
|
|
d4473b |
|
|
|
d4473b |
#define AR_HEADER_ATTR_DEFAULT (0x00)
|
|
|
d4473b |
#define AR_HEADER_ATTR_FILE_ID (0x01)
|
|
|
d4473b |
#define AR_HEADER_ATTR_NAME_REF (0x02)
|
|
|
d4473b |
#define AR_HEADER_ATTR_BSD (0x10)
|
|
|
d4473b |
#define AR_HEADER_ATTR_SYSV (0x20)
|
|
|
d4473b |
|
|
|
d4473b |
#define AR_ARMAP_ATTR_PLAIN (0x0000)
|
|
|
d4473b |
#define AR_ARMAP_ATTR_SORTED (0x0001)
|
|
|
d4473b |
#define AR_ARMAP_ATTR_BSD (0x0010)
|
|
|
d4473b |
#define AR_ARMAP_ATTR_SYSV (0x0020)
|
|
|
d4473b |
#define AR_ARMAP_ATTR_COFF (0x0040)
|
|
|
d4473b |
#define AR_ARMAP_ATTR_LE_32 (0x0100)
|
|
|
d4473b |
#define AR_ARMAP_ATTR_LE_64 (0x0200)
|
|
|
d4473b |
#define AR_ARMAP_ATTR_BE_32 (0x0400)
|
|
|
d4473b |
#define AR_ARMAP_ATTR_BE_64 (0x0800)
|
|
|
d4473b |
|
|
|
d4473b |
#define AR_OBJECT_ATTR_NONE (0X0000)
|
|
|
d4473b |
#define AR_OBJECT_ATTR_ELF (0x0001)
|
|
|
d4473b |
#define AR_OBJECT_ATTR_COFF (0x0002)
|
|
|
d4473b |
#define AR_OBJECT_ATTR_MACHO (0x0004)
|
|
|
d4473b |
#define AR_OBJECT_ATTR_LE_32 (0x0100)
|
|
|
d4473b |
#define AR_OBJECT_ATTR_LE_64 (0x0200)
|
|
|
d4473b |
#define AR_OBJECT_ATTR_BE_32 (0x0400)
|
|
|
d4473b |
#define AR_OBJECT_ATTR_BE_64 (0x0800)
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_signature {
|
|
|
d4473b |
char ar_signature [0x08]; /* 0x00 */
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_file_header {
|
|
|
d4473b |
char ar_file_id [0x10]; /* 0x00 */
|
|
|
d4473b |
char ar_time_date_stamp [0x0c]; /* 0x10 */
|
|
|
d4473b |
char ar_uid [0x06]; /* 0x1c */
|
|
|
d4473b |
char ar_gid [0x06]; /* 0x22 */
|
|
|
d4473b |
char ar_file_mode [0x08]; /* 0x28 */
|
|
|
d4473b |
char ar_file_size [0x0a]; /* 0x30 */
|
|
|
d4473b |
char ar_end_tag [0x02]; /* 0x3a */
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_armap_ref_32 {
|
|
|
d4473b |
unsigned char ar_name_offset [0x04]; /* 0x00 */
|
|
|
d4473b |
unsigned char ar_member_offset [0x04]; /* 0x04 */
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_armap_ref_64 {
|
|
|
d4473b |
unsigned char ar_name_offset [0x08]; /* 0x00 */
|
|
|
d4473b |
unsigned char ar_member_offset [0x08]; /* 0x08 */
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_armap_bsd_32 {
|
|
|
d4473b |
unsigned char (*ar_size_of_refs) [0x04];
|
|
|
d4473b |
unsigned char (*ar_first_name_offset) [0x04];
|
|
|
d4473b |
unsigned char (*ar_size_of_strs) [0x04];
|
|
|
d4473b |
const char * (*ar_string_table);
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_armap_bsd_64 {
|
|
|
d4473b |
unsigned char (*ar_size_of_refs) [0x08];
|
|
|
d4473b |
unsigned char (*ar_first_name_offset) [0x08];
|
|
|
d4473b |
unsigned char (*ar_size_of_strs) [0x08];
|
|
|
d4473b |
const char * (*ar_string_table);
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_armap_sysv_32 {
|
|
|
d4473b |
unsigned char (*ar_num_of_syms) [0x04];
|
|
|
d4473b |
unsigned char (*ar_first_ref_offset) [0x04];
|
|
|
d4473b |
const char * (*ar_string_table);
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_armap_sysv_64 {
|
|
|
d4473b |
unsigned char (*ar_num_of_syms) [0x08];
|
|
|
d4473b |
unsigned char (*ar_first_ref_offset) [0x08];
|
|
|
d4473b |
const char * (*ar_string_table);
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_raw_armap_xcoff_32 {
|
|
|
d4473b |
unsigned char (*ar_num_of_members) [0x04];
|
|
|
d4473b |
unsigned char (*ar_first_member_offset) [0x04];
|
|
|
d4473b |
unsigned char (*ar_num_of_symbols) [0x04];
|
|
|
d4473b |
unsigned char (*ar_sym_member_indices) [0x02];
|
|
|
d4473b |
char (*ar_string_table) [];
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_meta_signature {
|
|
|
d4473b |
const char * ar_signature;
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_meta_file_header {
|
|
|
d4473b |
const char * ar_member_name;
|
|
|
47f2ce |
uint32_t ar_header_attr;
|
|
|
d4473b |
uint32_t ar_uid;
|
|
|
d4473b |
uint32_t ar_gid;
|
|
|
d4473b |
uint32_t ar_file_mode;
|
|
|
d4473b |
uint64_t ar_file_size;
|
|
|
47f2ce |
uint64_t ar_time_date_stamp;
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_meta_member_info {
|
|
|
d4473b |
struct ar_meta_file_header ar_file_header;
|
|
|
335caf |
struct ar_raw_file_header * ar_member_data;
|
|
|
d4473b |
uint32_t ar_member_attr;
|
|
|
d4473b |
uint32_t ar_object_attr;
|
|
|
d4473b |
uint64_t ar_object_size;
|
|
|
d4473b |
void * ar_object_data;
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_meta_armap_ref_32 {
|
|
|
d4473b |
uint32_t ar_name_offset;
|
|
|
d4473b |
uint32_t ar_member_offset;
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_meta_armap_ref_64 {
|
|
|
d4473b |
uint64_t ar_name_offset;
|
|
|
d4473b |
uint64_t ar_member_offset;
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_meta_armap_common_32 {
|
|
|
d4473b |
struct ar_meta_member_info * ar_member;
|
|
|
7fe83d |
struct ar_meta_armap_ref_32 * ar_symrefs;
|
|
|
d4473b |
struct ar_raw_armap_bsd_32 * ar_armap_bsd;
|
|
|
d4473b |
struct ar_raw_armap_sysv_32 * ar_armap_sysv;
|
|
|
d4473b |
struct ar_raw_armap_xcoff_32 * ar_armap_xcoff;
|
|
|
d4473b |
uint32_t ar_armap_attr;
|
|
|
d4473b |
uint32_t ar_num_of_symbols;
|
|
|
d4473b |
uint32_t ar_num_of_members;
|
|
|
d4473b |
uint32_t ar_first_member_offset;
|
|
|
d4473b |
uint32_t ar_size_of_refs;
|
|
|
d4473b |
uint32_t ar_size_of_strs;
|
|
|
d4473b |
uint16_t * ar_sym_member_indices;
|
|
|
d4473b |
const char * ar_string_table;
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_meta_armap_common_64 {
|
|
|
d4473b |
struct ar_meta_member_info * ar_member;
|
|
|
7fe83d |
struct ar_meta_armap_ref_64 * ar_symrefs;
|
|
|
d4473b |
struct ar_raw_armap_bsd_64 * ar_armap_bsd;
|
|
|
d4473b |
struct ar_raw_armap_sysv_64 * ar_armap_sysv;
|
|
|
d4473b |
void * ar_armap_xcoff;
|
|
|
d4473b |
uint32_t ar_armap_attr;
|
|
|
d4473b |
uint64_t ar_num_of_symbols;
|
|
|
d4473b |
uint64_t ar_num_of_members;
|
|
|
d4473b |
uint64_t ar_first_member_offset;
|
|
|
d4473b |
uint64_t ar_size_of_refs;
|
|
|
d4473b |
uint64_t ar_size_of_strs;
|
|
|
d4473b |
uint16_t * ar_sym_member_indices;
|
|
|
d4473b |
const char * ar_string_table;
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
struct ar_meta_armap_info {
|
|
|
d4473b |
const struct ar_meta_armap_common_32 * ar_armap_common_32;
|
|
|
d4473b |
const struct ar_meta_armap_common_64 * ar_armap_common_64;
|
|
|
d4473b |
};
|
|
|
d4473b |
|
|
|
d4473b |
#ifdef __cplusplus
|
|
|
d4473b |
}
|
|
|
d4473b |
#endif
|
|
|
d4473b |
|
|
|
d4473b |
#endif
|