Home | History | Annotate | Download | only in libiberty
      1 @c -*- mode: texinfo -*-
      2 @deftypefn Extension {simple_object_read *} simple_object_open_read @
      3   (int @var{descriptor}, off_t @var{offset}, const char *{segment_name}, @
      4   const char **@var{errmsg}, int *@var{err})
      5 
      6 Opens an object file for reading.  Creates and returns an
      7 @code{simple_object_read} pointer which may be passed to other
      8 functions to extract data from the object file.
      9 
     10 @var{descriptor} holds a file descriptor which permits reading.
     11 
     12 @var{offset} is the offset into the file; this will be @code{0} in the
     13 normal case, but may be a different value when reading an object file
     14 in an archive file.
     15 
     16 @var{segment_name} is only used with the Mach-O file format used on
     17 Darwin aka Mac OS X.  It is required on that platform, and means to
     18 only look at sections within the segment with that name.  The
     19 parameter is ignored on other systems.
     20 
     21 If an error occurs, this functions returns @code{NULL} and sets
     22 @code{*@var{errmsg}} to an error string and sets @code{*@var{err}} to
     23 an errno value or @code{0} if there is no relevant errno.
     24 
     25 @end deftypefn
     26 
     27 @deftypefn Extension {const char *} simple_object_find_sections @
     28   (simple_object_read *@var{simple_object}, int (*@var{pfn}) (void *@var{data}, @
     29   const char *@var{name}, off_t @var{offset}, off_t @var{length}), @
     30   void *@var{data}, int *@var{err})
     31 
     32 This function calls @var{pfn} for each section in @var{simple_object}.
     33 It calls @var{pfn} with the section name, the offset within the file
     34 of the section contents, and the length of the section contents.  The
     35 offset within the file is relative to the offset passed to
     36 @code{simple_object_open_read}.  The @var{data} argument to this
     37 function is passed along to @var{pfn}.
     38 
     39 If @var{pfn} returns @code{0}, the loop over the sections stops and
     40 @code{simple_object_find_sections} returns.  If @var{pfn} returns some
     41 other value, the loop continues.
     42 
     43 On success @code{simple_object_find_sections} returns.  On error it
     44 returns an error string, and sets @code{*@var{err}} to an errno value
     45 or @code{0} if there is no relevant errno.
     46 
     47 @end deftypefn
     48 
     49 @deftypefn Extension {int} simple_object_find_section @
     50   (simple_object_read *@var{simple_object} off_t *@var{offset}, @
     51   off_t *@var{length}, const char **@var{errmsg}, int *@var{err})
     52 
     53 Look for the section @var{name} in @var{simple_object}.  This returns
     54 information for the first section with that name.
     55 
     56 If found, return 1 and set @code{*@var{offset}} to the offset in the
     57 file of the section contents and set @code{*@var{length}} to the
     58 length of the section contents.  The value in @code{*@var{offset}}
     59 will be relative to the offset passed to
     60 @code{simple_object_open_read}.
     61 
     62 If the section is not found, and no error occurs,
     63 @code{simple_object_find_section} returns @code{0} and set
     64 @code{*@var{errmsg}} to @code{NULL}.
     65 
     66 If an error occurs, @code{simple_object_find_section} returns
     67 @code{0}, sets @code{*@var{errmsg}} to an error message, and sets
     68 @code{*@var{err}} to an errno value or @code{0} if there is no
     69 relevant errno.
     70 
     71 @end deftypefn
     72 
     73 @deftypefn Extension {void} simple_object_release_read @
     74   (simple_object_read *@var{simple_object})
     75 
     76 Release all resources associated with @var{simple_object}.  This does
     77 not close the file descriptor.
     78 
     79 @end deftypefn
     80 
     81 @deftypefn Extension {simple_object_attributes *} simple_object_fetch_attributes @
     82   (simple_object_read *@var{simple_object}, const char **@var{errmsg}, int *@var{err})
     83 
     84 Fetch the attributes of @var{simple_object}.  The attributes are
     85 internal information such as the format of the object file, or the
     86 architecture it was compiled for.  This information will persist until
     87 @code{simple_object_attributes_release} is called, even if
     88 @var{simple_object} itself is released.
     89 
     90 On error this returns @code{NULL}, sets @code{*@var{errmsg}} to an
     91 error message, and sets @code{*@var{err}} to an errno value or
     92 @code{0} if there is no relevant errno.
     93 
     94 @end deftypefn
     95 
     96 @deftypefn Extension {const char *} simple_object_attributes_compare @
     97   (simple_object_attributes *@var{attrs1}, simple_object_attributes *@var{attrs2}, @
     98    int *@var{err})
     99 
    100 Compare @var{attrs1} and @var{attrs2}.  If they could be linked
    101 together without error, return @code{NULL}.  Otherwise, return an
    102 error message and set @code{*@var{err}} to an errno value or @code{0}
    103 if there is no relevant errno.
    104 
    105 @end deftypefn
    106 
    107 @deftypefn Extension {void} simple_object_release_attributes @
    108   (simple_object_attributes *@var{attrs})
    109 
    110 Release all resources associated with @var{attrs}.
    111 
    112 @end deftypefn
    113 
    114 @deftypefn Extension {simple_object_write *} simple_object_start_write @
    115   (simple_object_attributes @var{attrs}, const char *@var{segment_name}, @
    116   const char **@var{errmsg}, int *@var{err})
    117 
    118 Start creating a new object file using the object file format
    119 described in @var{attrs}.  You must fetch attribute information from
    120 an existing object file before you can create a new one.  There is
    121 currently no support for creating an object file de novo.
    122 
    123 @var{segment_name} is only used with Mach-O as found on Darwin aka Mac
    124 OS X.  The parameter is required on that target.  It means that all
    125 sections are created within the named segment.  It is ignored for
    126 other object file formats.
    127 
    128 On error @code{simple_object_start_write} returns @code{NULL}, sets
    129 @code{*@var{ERRMSG}} to an error message, and sets @code{*@var{err}}
    130 to an errno value or @code{0} if there is no relevant errno.
    131 
    132 @end deftypefn
    133 
    134 @deftypefn Extension {simple_object_write_section *} simple_object_write_create_section @
    135   (simple_object_write *@var{simple_object}, const char *@var{name}, @
    136   unsigned int @var{align}, const char **@var{errmsg}, int *@var{err})
    137 
    138 Add a section to @var{simple_object}.  @var{name} is the name of the
    139 new section.  @var{align} is the required alignment expressed as the
    140 number of required low-order 0 bits (e.g., 2 for alignment to a 32-bit
    141 boundary).
    142 
    143 The section is created as containing data, readable, not writable, not
    144 executable, not loaded at runtime.  The section is not written to the
    145 file until @code{simple_object_write_to_file} is called.
    146 
    147 On error this returns @code{NULL}, sets @code{*@var{errmsg}} to an
    148 error message, and sets @code{*@var{err}} to an errno value or
    149 @code{0} if there is no relevant errno.
    150 
    151 @end deftypefn
    152 
    153 @deftypefn Extension {const char *} simple_object_write_add_data @
    154   (simple_object_write *@var{simple_object}, @
    155   simple_object_write_section *@var{section}, const void *@var{buffer}, @
    156   size_t @var{size}, int @var{copy}, int *@var{err})
    157 
    158 Add data @var{buffer}/@var{size} to @var{section} in
    159 @var{simple_object}.  If @var{copy} is non-zero, the data will be
    160 copied into memory if necessary.  If @var{copy} is zero, @var{buffer}
    161 must persist until @code{simple_object_write_to_file} is called.  is
    162 released.
    163 
    164 On success this returns @code{NULL}.  On error this returns an error
    165 message, and sets @code{*@var{err}} to an errno value or 0 if there is
    166 no relevant erro.
    167 
    168 @end deftypefn
    169 
    170 @deftypefn Extension {const char *} simple_object_write_to_file @
    171   (simple_object_write *@var{simple_object}, int @var{descriptor}, int *@var{err})
    172 
    173 Write the complete object file to @var{descriptor}, an open file
    174 descriptor.  This writes out all the data accumulated by calls to
    175 @code{simple_object_write_create_section} and
    176 @var{simple_object_write_add_data}.
    177 
    178 This returns @code{NULL} on success.  On error this returns an error
    179 message and sets @code{*@var{err}} to an errno value or @code{0} if
    180 there is no relevant errno.
    181 
    182 @end deftypefn
    183 
    184 @deftypefn Extension {void} simple_object_release_write @
    185   (simple_object_write *@var{simple_object})
    186 
    187 Release all resources associated with @var{simple_object}.
    188 
    189 @end deftypefn
    190