summaryrefslogtreecommitdiffstats
path: root/binutils-2.25/libiberty/simple-object.txh
diff options
context:
space:
mode:
Diffstat (limited to 'binutils-2.25/libiberty/simple-object.txh')
-rw-r--r--binutils-2.25/libiberty/simple-object.txh189
1 files changed, 189 insertions, 0 deletions
diff --git a/binutils-2.25/libiberty/simple-object.txh b/binutils-2.25/libiberty/simple-object.txh
new file mode 100644
index 00000000..34639f10
--- /dev/null
+++ b/binutils-2.25/libiberty/simple-object.txh
@@ -0,0 +1,189 @@
+@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