Blame include/slibtool/slibtool_arbits.h

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
bbf27c
struct ar_meta_symbol_info {
bbf27c
	const char *                    ar_archive_name;
bbf27c
	const char *                    ar_object_name;
bbf27c
	const char *                    ar_symbol_name;
bbf27c
	const char *                    ar_symbol_type;
bbf27c
	uint64_t                        ar_symbol_value;
bbf27c
	uint64_t                        ar_symbol_size;
bbf27c
};
bbf27c
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