home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / uccs / root.14 / udk / usr / include / libelf.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-19  |  3.9 KB  |  190 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ifndef _LIBELF_H
  12. #define _LIBELF_H
  13.  
  14. #ident    "@(#)sgs-head:i386/head/libelf.h    1.11"
  15.  
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19.  
  20. #include <sys/types.h>
  21. #include <sys/elf.h>
  22.  
  23.  
  24. #undef _
  25. #ifdef __STDC__
  26.     typedef void        Elf_Void;
  27. #    define _(a)        a
  28. #else
  29.     typedef char        Elf_Void;
  30. #    define _(a)        ()
  31. #    ifndef _SIZE_T
  32. #        define _SIZE_T
  33. #        ifndef size_t
  34. #            define size_t    unsigned int
  35. #        endif
  36. #    endif
  37. #    undef const
  38. #    define const
  39. #endif
  40.  
  41.  
  42. /*    commands
  43.  */
  44.  
  45. typedef enum {
  46.     ELF_C_NULL = 0,    /* must be first, 0 */
  47.     ELF_C_READ,
  48.     ELF_C_WRITE,
  49.     ELF_C_IMPURE_WRITE,
  50.     ELF_C_CLR,
  51.     ELF_C_SET,
  52.     ELF_C_FDDONE,
  53.     ELF_C_FDREAD,
  54.     ELF_C_RDWR,
  55.     ELF_C_NUM    /* must be last */
  56. } Elf_Cmd;
  57.  
  58.  
  59. /*    flags
  60.  */
  61.  
  62. #define ELF_F_DIRTY    0x1
  63. #define ELF_F_LAYOUT    0x4
  64.  
  65.  
  66. /*    file types
  67.  */
  68.  
  69. typedef enum {
  70.     ELF_K_NONE = 0,    /* must be first, 0 */
  71.     ELF_K_AR,
  72.     ELF_K_COFF,
  73.     ELF_K_ELF,
  74.     ELF_K_NUM    /* must be last */
  75. } Elf_Kind;
  76.  
  77.  
  78. /*    translation types
  79.  */
  80.  
  81. typedef enum {
  82.     ELF_T_BYTE = 0,    /* must be first, 0 */
  83.     ELF_T_ADDR,
  84.     ELF_T_DYN,
  85.     ELF_T_EHDR,
  86.     ELF_T_HALF,
  87.     ELF_T_OFF,
  88.     ELF_T_PHDR,
  89.     ELF_T_RELA,
  90.     ELF_T_REL,
  91.     ELF_T_SHDR,
  92.     ELF_T_SWORD,
  93.     ELF_T_SYM,
  94.     ELF_T_WORD,
  95.     ELF_T_NUM    /* must be last */
  96. } Elf_Type;
  97.  
  98.  
  99. typedef struct Elf    Elf;
  100. typedef struct Elf_Scn    Elf_Scn;
  101.  
  102.  
  103. /*    archive member header
  104.  */
  105.  
  106. typedef struct {
  107.     char        *ar_name;
  108.     time_t        ar_date;
  109.     long         ar_uid;
  110.     long         ar_gid;
  111.     unsigned long    ar_mode;
  112.     off_t        ar_size;
  113.     char         *ar_rawname;
  114. } Elf_Arhdr;
  115.  
  116.  
  117. /*    archive symbol table
  118.  */
  119.  
  120. typedef struct {
  121.     char        *as_name;
  122.     size_t        as_off;
  123.     unsigned long    as_hash;
  124. } Elf_Arsym;
  125.  
  126.  
  127. /*    data descriptor
  128.  */
  129.  
  130. typedef struct {
  131.     Elf_Void    *d_buf;
  132.     Elf_Type    d_type;
  133.     size_t        d_size;
  134.     off_t        d_off;        /* offset into section */
  135.     size_t        d_align;    /* alignment in section */
  136.     unsigned    d_version;    /* elf version */
  137. } Elf_Data;
  138.  
  139.  
  140. /*    function declarations
  141.  */
  142.  
  143. Elf        *elf_begin    _((int, Elf_Cmd, Elf *));
  144. int        elf_cntl    _((Elf *, Elf_Cmd));
  145. int        elf_end        _((Elf *));
  146. const char    *elf_errmsg    _((int));
  147. int        elf_errno    _((void));
  148. void        elf_fill    _((int));
  149. unsigned    elf_flagdata    _((Elf_Data *, Elf_Cmd, unsigned));
  150. unsigned    elf_flagehdr    _((Elf *, Elf_Cmd,  unsigned));
  151. unsigned    elf_flagelf    _((Elf *, Elf_Cmd, unsigned));
  152. unsigned    elf_flagphdr    _((Elf *, Elf_Cmd, unsigned));
  153. unsigned    elf_flagscn    _((Elf_Scn *, Elf_Cmd, unsigned));
  154. unsigned    elf_flagshdr    _((Elf_Scn *, Elf_Cmd, unsigned));
  155. size_t        elf32_fsize    _((Elf_Type, size_t, unsigned));
  156. Elf_Arhdr    *elf_getarhdr    _((Elf *));
  157. Elf_Arsym    *elf_getarsym    _((Elf *, size_t *));
  158. off_t        elf_getbase    _((Elf *));
  159. Elf_Data    *elf_getdata    _((Elf_Scn *, Elf_Data *));
  160. Elf32_Ehdr    *elf32_getehdr    _((Elf *));
  161. char        *elf_getident    _((Elf *, size_t *));
  162. Elf32_Phdr    *elf32_getphdr    _((Elf *));
  163. Elf_Scn        *elf_getscn    _((Elf *elf, size_t));
  164. Elf32_Shdr    *elf32_getshdr    _((Elf_Scn *));
  165. unsigned long    elf_hash    _((const char *));
  166. Elf_Kind    elf_kind    _((Elf *));
  167. size_t        elf_ndxscn    _((Elf_Scn *));
  168. Elf_Data    *elf_newdata    _((Elf_Scn *));
  169. Elf32_Ehdr    *elf32_newehdr    _((Elf *));
  170. Elf32_Phdr    *elf32_newphdr    _((Elf *, size_t));
  171. Elf_Scn        *elf_newscn    _((Elf *));
  172. Elf_Scn        *elf_nextscn    _((Elf *, Elf_Scn *));
  173. Elf_Cmd        elf_next    _((Elf *));
  174. size_t        elf_rand    _((Elf *, size_t));
  175. Elf_Data    *elf_rawdata    _((Elf_Scn *, Elf_Data *));
  176. char        *elf_rawfile    _((Elf *, size_t *));
  177. char        *elf_strptr    _((Elf *, size_t, size_t));
  178. off_t        elf_update    _((Elf *, Elf_Cmd));
  179. unsigned    elf_version    _((unsigned));
  180. Elf_Data    *elf32_xlatetof    _((Elf_Data *, const Elf_Data *, unsigned));
  181. Elf_Data    *elf32_xlatetom    _((Elf_Data *, const Elf_Data *, unsigned));
  182.  
  183. #undef    _
  184.  
  185. #ifdef __cplusplus
  186. }
  187. #endif
  188.  
  189. #endif
  190.