Annotation of GNUtools/cctools/include/stuff/ofile.h, revision 1.1

1.1     ! root        1: /* ofile.h */
        !             2: #import <ar.h>
        !             3: #import <mach-o/loader.h>
        !             4: #ifdef OFI
        !             5: #import <mach-o/dyld.h>
        !             6: #endif
        !             7: #import "stuff/bytesex.h"
        !             8: #import "stuff/bool.h"
        !             9: #import "stuff/arch.h"
        !            10: 
        !            11: enum ofile_type {
        !            12:     OFILE_UNKNOWN,
        !            13:     OFILE_FAT,
        !            14:     OFILE_ARCHIVE,
        !            15:     OFILE_Mach_O
        !            16: };
        !            17: 
        !            18: /*
        !            19:  * The structure used by ofile_*() routines for object files.
        !            20:  */
        !            21: struct ofile {
        !            22:     char *file_name;               /* pointer to name malloc'ed by ofile_map */
        !            23:     char *file_addr;               /* pointer to vm_allocate'ed memory       */
        !            24:     unsigned long file_size;       /* size of vm_allocate'ed memory          */
        !            25:     enum ofile_type file_type;     /* type of the file                       */
        !            26: 
        !            27:     struct fat_header *fat_header;  /* If a fat file these are filled in and */
        !            28:     struct fat_arch *fat_archs;     /*  if needed converted to host byte sex */
        !            29: 
        !            30:     /* If this is a fat file then these are valid and filled in */
        !            31:     unsigned long narch;           /* the current architecture */
        !            32:     enum ofile_type arch_type;     /* the type of file for this arch. */
        !            33:     struct arch_flag arch_flag;     /* the arch_flag for this arch, the name */
        !            34:                                    /*  field is pointing at space malloc'ed */
        !            35:                                    /*  by ofile_map. */
        !            36: 
        !            37:     /* If this structure is currently referencing an archive member or an object
        !            38:        file that is an archive member these are valid and filled in. */
        !            39:     unsigned long member_offset;    /* logical offset to the member starting */
        !            40:     char *member_addr;             /* pointer to the member contents */
        !            41:     unsigned long member_size;      /* actual size of the member (not rounded)*/
        !            42:     struct ar_hdr *member_ar_hdr;   /* pointer to the ar_hdr for this member */
        !            43:     enum ofile_type member_type;    /* the type of file for this member */
        !            44:     cpu_type_t archive_cputype;            /* if the archive contains objects then */
        !            45:     cpu_subtype_t                  /*  these two fields reflect the object */
        !            46:        archive_cpusubtype;         /*  at are in the archive. */
        !            47: 
        !            48:     /* If this structure is currently referencing an object file these are
        !            49:        valid and filled in.  The mach_header and load commands have been 
        !            50:        converted to the host byte sex if needed */
        !            51:     char *object_addr;             /* the address of the object file */
        !            52:     unsigned long object_size;     /* the size of the object file */
        !            53:     enum byte_sex object_byte_sex;  /* the byte sex of the object file */
        !            54:     struct mach_header *mh;        /* the mach_header of the object file */
        !            55:     struct load_command                    /* the start of the load commands */
        !            56:        *load_commands;
        !            57: };
        !            58: 
        !            59: extern void ofile_process(
        !            60:     char *name,
        !            61:     struct arch_flag *arch_flags,
        !            62:     unsigned long narch_flags,
        !            63:     enum bool all_archs,
        !            64:     enum bool process_non_objects,
        !            65:     void (*processor)(struct ofile *ofile, char *arch_name, void *cookie),
        !            66:     void *cookie);
        !            67: #ifdef OFI
        !            68: extern NSObjectFileImageReturnCode ofile_map(
        !            69: #else
        !            70: extern enum bool ofile_map(
        !            71: #endif
        !            72:     const char *file_name,
        !            73:     const struct arch_flag *arch_flag, /* can be NULL */
        !            74:     const char *object_name,           /* can be NULL */
        !            75:     struct ofile *ofile,
        !            76:     enum bool archives_with_fat_objects);
        !            77: extern void ofile_unmap(
        !            78:     struct ofile *ofile);
        !            79: extern enum bool ofile_first_arch(
        !            80:     struct ofile *ofile);
        !            81: extern enum bool ofile_next_arch(
        !            82:     struct ofile *ofile);
        !            83: enum bool ofile_first_member(
        !            84:     struct ofile *ofile);
        !            85: enum bool ofile_next_member(
        !            86:     struct ofile *ofile);
        !            87: extern enum bool ofile_specific_member(
        !            88:     const char *object_name,
        !            89:     struct ofile *ofile);
        !            90: extern void ofile_print(
        !            91:     struct ofile *ofile);
        !            92: extern unsigned long size_ar_name(
        !            93:     const struct ar_hdr *ar_hdr);
        !            94: extern long ofile_get_word(
        !            95:     unsigned long addr,
        !            96:     unsigned long *word,
        !            97:     void *get_word_data /* struct ofile *ofile */);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.