123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- @c -*- mode: texinfo -*-
- @deftypefn Extension {simple_object_read *} simple_object_open_read @
- (int @var{descriptor}, off_t @var{offset}, const char *{segment_name}, @
- const char **@var{errmsg}, int *@var{err})
- Opens an object file for reading. Creates and returns an
- @code{simple_object_read} pointer which may be passed to other
- functions to extract data from the object file.
- @var{descriptor} holds a file descriptor which permits reading.
- @var{offset} is the offset into the file; this will be @code{0} in the
- normal case, but may be a different value when reading an object file
- in an archive file.
- @var{segment_name} is only used with the Mach-O file format used on
- Darwin aka Mac OS X. It is required on that platform, and means to
- only look at sections within the segment with that name. The
- parameter is ignored on other systems.
- If an error occurs, this functions returns @code{NULL} and sets
- @code{*@var{errmsg}} to an error string and sets @code{*@var{err}} to
- an errno value or @code{0} if there is no relevant errno.
- @end deftypefn
- @deftypefn Extension {const char *} simple_object_find_sections @
- (simple_object_read *@var{simple_object}, int (*@var{pfn}) (void *@var{data}, @
- const char *@var{name}, off_t @var{offset}, off_t @var{length}), @
- void *@var{data}, int *@var{err})
- This function calls @var{pfn} for each section in @var{simple_object}.
- It calls @var{pfn} with the section name, the offset within the file
- of the section contents, and the length of the section contents. The
- offset within the file is relative to the offset passed to
- @code{simple_object_open_read}. The @var{data} argument to this
- function is passed along to @var{pfn}.
- If @var{pfn} returns @code{0}, the loop over the sections stops and
- @code{simple_object_find_sections} returns. If @var{pfn} returns some
- other value, the loop continues.
- On success @code{simple_object_find_sections} returns. On error it
- returns an error string, and sets @code{*@var{err}} to an errno value
- or @code{0} if there is no relevant errno.
- @end deftypefn
- @deftypefn Extension {int} simple_object_find_section @
- (simple_object_read *@var{simple_object} off_t *@var{offset}, @
- off_t *@var{length}, const char **@var{errmsg}, int *@var{err})
- Look for the section @var{name} in @var{simple_object}. This returns
- information for the first section with that name.
- If found, return 1 and set @code{*@var{offset}} to the offset in the
- file of the section contents and set @code{*@var{length}} to the
- length of the section contents. The value in @code{*@var{offset}}
- will be relative to the offset passed to
- @code{simple_object_open_read}.
- If the section is not found, and no error occurs,
- @code{simple_object_find_section} returns @code{0} and set
- @code{*@var{errmsg}} to @code{NULL}.
- If an error occurs, @code{simple_object_find_section} returns
- @code{0}, sets @code{*@var{errmsg}} to an error message, and sets
- @code{*@var{err}} to an errno value or @code{0} if there is no
- relevant errno.
- @end deftypefn
- @deftypefn Extension {void} simple_object_release_read @
- (simple_object_read *@var{simple_object})
- Release all resources associated with @var{simple_object}. This does
- not close the file descriptor.
- @end deftypefn
- @deftypefn Extension {simple_object_attributes *} simple_object_fetch_attributes @
- (simple_object_read *@var{simple_object}, const char **@var{errmsg}, int *@var{err})
- Fetch the attributes of @var{simple_object}. The attributes are
- internal information such as the format of the object file, or the
- architecture it was compiled for. This information will persist until
- @code{simple_object_attributes_release} is called, even if
- @var{simple_object} itself is released.
- On error this returns @code{NULL}, sets @code{*@var{errmsg}} to an
- error message, and sets @code{*@var{err}} to an errno value or
- @code{0} if there is no relevant errno.
- @end deftypefn
- @deftypefn Extension {const char *} simple_object_attributes_compare @
- (simple_object_attributes *@var{attrs1}, simple_object_attributes *@var{attrs2}, @
- int *@var{err})
- Compare @var{attrs1} and @var{attrs2}. If they could be linked
- together without error, return @code{NULL}. Otherwise, return an
- error message and set @code{*@var{err}} to an errno value or @code{0}
- if there is no relevant errno.
- @end deftypefn
- @deftypefn Extension {void} simple_object_release_attributes @
- (simple_object_attributes *@var{attrs})
- Release all resources associated with @var{attrs}.
- @end deftypefn
- @deftypefn Extension {simple_object_write *} simple_object_start_write @
- (simple_object_attributes @var{attrs}, const char *@var{segment_name}, @
- const char **@var{errmsg}, int *@var{err})
- Start creating a new object file using the object file format
- described in @var{attrs}. You must fetch attribute information from
- an existing object file before you can create a new one. There is
- currently no support for creating an object file de novo.
- @var{segment_name} is only used with Mach-O as found on Darwin aka Mac
- OS X. The parameter is required on that target. It means that all
- sections are created within the named segment. It is ignored for
- other object file formats.
- On error @code{simple_object_start_write} returns @code{NULL}, sets
- @code{*@var{ERRMSG}} to an error message, and sets @code{*@var{err}}
- to an errno value or @code{0} if there is no relevant errno.
- @end deftypefn
- @deftypefn Extension {simple_object_write_section *} simple_object_write_create_section @
- (simple_object_write *@var{simple_object}, const char *@var{name}, @
- unsigned int @var{align}, const char **@var{errmsg}, int *@var{err})
- Add a section to @var{simple_object}. @var{name} is the name of the
- new section. @var{align} is the required alignment expressed as the
- number of required low-order 0 bits (e.g., 2 for alignment to a 32-bit
- boundary).
- The section is created as containing data, readable, not writable, not
- executable, not loaded at runtime. The section is not written to the
- file until @code{simple_object_write_to_file} is called.
- On error this returns @code{NULL}, sets @code{*@var{errmsg}} to an
- error message, and sets @code{*@var{err}} to an errno value or
- @code{0} if there is no relevant errno.
- @end deftypefn
- @deftypefn Extension {const char *} simple_object_write_add_data @
- (simple_object_write *@var{simple_object}, @
- simple_object_write_section *@var{section}, const void *@var{buffer}, @
- size_t @var{size}, int @var{copy}, int *@var{err})
- Add data @var{buffer}/@var{size} to @var{section} in
- @var{simple_object}. If @var{copy} is non-zero, the data will be
- copied into memory if necessary. If @var{copy} is zero, @var{buffer}
- must persist until @code{simple_object_write_to_file} is called. is
- released.
- On success this returns @code{NULL}. On error this returns an error
- message, and sets @code{*@var{err}} to an errno value or 0 if there is
- no relevant erro.
- @end deftypefn
- @deftypefn Extension {const char *} simple_object_write_to_file @
- (simple_object_write *@var{simple_object}, int @var{descriptor}, int *@var{err})
- Write the complete object file to @var{descriptor}, an open file
- descriptor. This writes out all the data accumulated by calls to
- @code{simple_object_write_create_section} and
- @var{simple_object_write_add_data}.
- This returns @code{NULL} on success. On error this returns an error
- message and sets @code{*@var{err}} to an errno value or @code{0} if
- there is no relevant errno.
- @end deftypefn
- @deftypefn Extension {void} simple_object_release_write @
- (simple_object_write *@var{simple_object})
- Release all resources associated with @var{simple_object}.
- @end deftypefn
|