<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id$ -->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
	<!ENTITY firstname "Pierre">
	<!ENTITY surname   "Pronchery">
	<!ENTITY username  "khorben">
	<!ENTITY email     "khorben@defora.org">
	<!ENTITY section   "1">
	<!ENTITY title     "libMarshall User Manual">
	<!ENTITY package   "DeforaOS libMarshall">
	<!ENTITY name      "runso">
	<!ENTITY purpose   "Execute methods in arbitrary binaries">
]>
<refentry>
	<refentryinfo>
		<title>&title;</title>
		<date>@DATE@</date>
		<productname>&package;</productname>
		<authorgroup>
			<author>
				<firstname>&firstname;</firstname>
				<surname>&surname;</surname>
				<contrib>Code and documentation.</contrib>
				<address>
					<email>&email;</email>
				</address>
			</author>
		</authorgroup>
		<copyright>
			<year>2016</year>
			<year>2017</year>
			<year>2018</year>
			<year>2019</year>
			<holder>&firstname; &surname; &lt;&email;&gt;</holder>
		</copyright>
		<legalnotice>
			<para>This manual page was written for the DeforaOS project (and may be
				used by others).</para>
			<para>Permission is granted to copy, distribute and/or modify this
				document under the terms of the GNU General Public License,
				Version 3 as published by the Free Software Foundation.</para>
		</legalnotice>
	</refentryinfo>
	<refmeta>
		<refentrytitle>&name;</refentrytitle>
		<manvolnum>&section;</manvolnum>
	</refmeta>
	<refnamediv>
		<refname>&name;</refname>
		<refpurpose>&purpose;</refpurpose>
	</refnamediv>
	<refsynopsisdiv>
		<cmdsynopsis>
			<command>&name;</command>
			<arg choice="plain"><replaceable>filename</replaceable></arg>
			<arg choice="plain"><replaceable>method</replaceable></arg>
			<arg choice="plain" rep="repeat">
				<arg choice="opt"><replaceable>argument</replaceable></arg>
			</arg>
		</cmdsynopsis>
		<cmdsynopsis>
			<command>&name;</command>
			<arg choice="plain"><option>-s</option></arg>
			<arg choice="plain"><replaceable>method</replaceable></arg>
			<arg choice="plain" rep="repeat">
				<arg choice="opt"><replaceable>argument</replaceable></arg>
			</arg>
		</cmdsynopsis>
	</refsynopsisdiv>
	<refsect1 id="description">
		<title>Description</title>
		<para><command>&name;</command> is a generic tool for executing code contained
			in existing plug-ins, libraries or executable files.</para>
	</refsect1>
	<refsect1 id="options">
		<title>Options</title>
		<para><command>&name;</command> expects a path to the binary file to open, the
			name of a symbol to look up, and an optional list of arguments to be given on
			the command line.</para>
		<para>If the <option>-s</option> option is set, <command>&name;</command> will
			look for symbols within its own process image at run-time.</para>
		<variablelist>
			<varlistentry>
				<term><option>-s</option></term>
				<listitem>
					<para>Look for callbacks inside &name; itself.</para>
				</listitem>
			</varlistentry>
		</variablelist>
	</refsect1>
	<refsect1 id="bugs">
		<title>Bugs</title>
		<para>The following issues are currently known:</para>
		<itemizedlist>
			<listitem><para>The value returned is assumed to be a 32-bits
					integer.</para></listitem>
			<listitem><para>Arguments are not supported at the moment.</para></listitem>
		</itemizedlist>
		<para>Further issues can be listed and reported at <ulink
				url="https://www.defora.org/os/project/bug_list/4400/libMarshall"/>.</para>
	</refsect1>
	<refsect1 id="see_also">
		<title>See also</title>
		<para>
			<citerefentry>
				<refentrytitle>ffi</refentrytitle>
				<manvolnum>3</manvolnum>
			</citerefentry>
		</para>
	</refsect1>
</refentry>
<!-- vim: set noet ts=1 sw=1 sts=1 tw=80: -->
