Remove DocBook files; Add 'writer' Makefile

This commit is contained in:
Serge Lamikhov-Center 2012-11-25 20:59:47 +02:00
parent 64b669d36c
commit e1044f2c49
18 changed files with 578 additions and 1116 deletions

View File

@ -1,7 +1,9 @@
SUBDIRS = examples doc
SUBDIRS = examples
nobase_include_HEADERS = elfio/elf_types.hpp elfio/elfi_dynamic.hpp \
elfio/elfio.hpp elfio/elfio_header.hpp \
elfio/elfio_note.hpp elfio/elfio_relocation.hpp \
elfio/elfio_section.hpp elfio/elfio_segment.hpp \
elfio/elfio_strings.hpp elfio/elfio_symbols.hpp \
elfio/elfio_utils.hpp elfio/elfo_dynamic.hpp
elfio/elfio_utils.hpp elfio/elfo_dynamic.hpp \
elfio/elfio_dump.hpp
EXTRA_DIST = doc/elfio.pdf

View File

@ -215,14 +215,16 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = examples doc
SUBDIRS = examples
nobase_include_HEADERS = elfio/elf_types.hpp elfio/elfi_dynamic.hpp \
elfio/elfio.hpp elfio/elfio_header.hpp \
elfio/elfio_note.hpp elfio/elfio_relocation.hpp \
elfio/elfio_section.hpp elfio/elfio_segment.hpp \
elfio/elfio_strings.hpp elfio/elfio_symbols.hpp \
elfio/elfio_utils.hpp elfio/elfo_dynamic.hpp
elfio/elfio_utils.hpp elfio/elfo_dynamic.hpp \
elfio/elfio_dump.hpp
EXTRA_DIST = doc/elfio.pdf
all: all-recursive
.SUFFIXES:

4
configure vendored
View File

@ -2967,7 +2967,7 @@ fi
ac_config_files="$ac_config_files Makefile examples/Makefile examples/elfdump/Makefile examples/tutorial/Makefile doc/Makefile"
ac_config_files="$ac_config_files Makefile examples/Makefile examples/elfdump/Makefile examples/tutorial/Makefile examples/writer/Makefile"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
@ -3719,7 +3719,7 @@ do
"examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
"examples/elfdump/Makefile") CONFIG_FILES="$CONFIG_FILES examples/elfdump/Makefile" ;;
"examples/tutorial/Makefile") CONFIG_FILES="$CONFIG_FILES examples/tutorial/Makefile" ;;
"doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
"examples/writer/Makefile") CONFIG_FILES="$CONFIG_FILES examples/writer/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac

View File

@ -19,4 +19,4 @@ AC_OUTPUT([Makefile
examples/Makefile
examples/elfdump/Makefile
examples/tutorial/Makefile
doc/Makefile])
examples/writer/Makefile])

View File

@ -1 +0,0 @@
EXTRA_DIST = elfio.docbook elfio.pdf

View File

@ -1,2 +0,0 @@
xsltproc -o elfio.fo /usr/share/xml/docbook/stylesheet/docbook-xsl/fo/docbook.xsl elfio.docbook
fop -fo elfio.fo -pdf elfio.pdf

View File

@ -1,483 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY elfio_data_members_table SYSTEM "elfio_data_members_table.docbook">
<!ENTITY elfio_members_table SYSTEM "elfio_members_table.docbook">
<!ENTITY section_members_table SYSTEM "section_members_table.docbook">
]>
<book>
<bookinfo>
<date>2002-5-25</date>
<title>ELFIO</title>
<subtitle>User's Guide</subtitle>
<authorgroup>
<author>
<firstname>Serge</firstname>
<surname>Lamikhov-Center</surname>
</author>
</authorgroup>
</bookinfo>
<toc/>
<preface id="introduction">
<title>Introduction</title>
<para>
ELFIO is a C++ library for reading and generating files in ELF binary
format. This library is independent and does not require any other product.
It is also cross-platform - the library uses standard ANSI C++ constructions
and runs on wide variety of architectures.
</para>
<para>
While the library's implementation does make your work much easier: basic
knowledge of the ELF binary format is required. Information about ELF
format can be found widely on the web.
</para>
</preface>
<chapter id="get-started">
<title>Getting Started With ELFIO</title>
<sect1>
<title>ELF File Reader</title>
<para>
The ELFIO library is a header only library. No preparatory compilation
steps are required. To make your application be aware about the
ELFIO classes and types declarations, just include <filename>elfio.hpp</filename> header file.
All ELFIO library declarations reside in ELFIO namespace.
So, this tutorial code starts from the following code:
</para>
<programlistingco>
<areaspec>
<area id="plco.include" coords='3 60'/>
<area id="plco.namespace" coords='5 60'/>
</areaspec>
<programlisting><![CDATA[
#include <iostream>
#include <elfio.hpp>
using namespace ELFIO;
int main( int argc, char** argv )
{
if ( argc != 2 ) {
std::cout << "Usage: tutorial <elf_file>" << std::endl;
return 1;
}
]]></programlisting>
<calloutlist>
<callout arearefs="plco.include">
<para>
Include <filename>elfio.hpp</filename> header file
</para>
</callout>
<callout arearefs="plco.namespace">
<para>
The ELFIO namespace usage
</para>
</callout>
</calloutlist>
</programlistingco>
<para>
This chapter will explain how to work with the reader portion
of the ELFIO library. The first step would be creation of the <classname>elfio</classname>
class instance. The <classname>elfio</classname> constructor does not
receive any parameters. After creation of a class object, we initialize
the instance by invoking <function>load</function> function
passing ELF file name as a parameter.
<programlistingco>
<areaspec>
<area id="plco.constructor" coords='3 60'/>
<area id="plco.load" coords='6 60'/>
</areaspec>
<programlisting><![CDATA[
// Create an elfio reader
elfio reader;
// Load ELF data
if ( !reader.load( argv[1] ) ) {
std::cout << "Can't find or process ELF file " << argv[1] << std::endl;
return 2;
}
]]></programlisting>
<calloutlist>
<callout arearefs="plco.constructor">
<para>
Create <classname>elfio</classname> class instance
</para>
</callout>
<callout arearefs="plco.load">
<para>
Initialize the instance by loading ELF file. The function
<function>load</function> returns
<returnvalue>true</returnvalue>
if the ELF file was found and processed successfully. It returns
<returnvalue>false</returnvalue> otherwise.
</para>
</callout>
</calloutlist>
</programlistingco>
</para>
<para>
From here, ELF header properties are accessible. This makes it possible
to request file parameters such as encoding, machine type,
entry point, etc. To get the class and the encoding of the file use:
<programlistingco>
<areaspec>
<area id="plco.get_class" coords='4 60'/>
<area id="plco.get_encoding" coords='10 60'/>
</areaspec>
<programlisting><![CDATA[
// Print ELF file properties
std::cout << "ELF file class : ";
if ( reader.get_class() == ELFCLASS32 )
std::cout << "ELF32" << std::endl;
else
std::cout << "ELF64" << std::endl;
std::cout << "ELF file encoding : ";
if ( reader.get_encoding() == ELFDATA2LSB )
std::cout << "Little endian" << std::endl;
else
std::cout << "Big endian" << std::endl;
]]></programlisting>
<calloutlist>
<callout arearefs="plco.get_class">
<para>
Member function <function>get_class()</function> returns ELF file
class. Possible values are <constant>ELFCLASS32</constant> or
<constant>ELFCLASS64</constant>.
</para>
</callout>
<callout arearefs="plco.get_encoding">
<para>
Member function <function>get_encoding()</function> returns ELF file
format encoding. Possible values are <constant>ELFDATA2LSB</constant>
and <constant>ELFDATA2MSB</constant>.
</para>
</callout>
</calloutlist>
</programlistingco>
</para>
<note>
<para>
Standard ELF types, flags and constants
are defined in the <filename>elf_types.hpp</filename> header file.
This file is included automatically into the project.
For example: <constant>ELFCLASS32</constant>,
<constant>ELFCLASS64</constant> constants define a value for 32/64 bit
architectures. <constant>ELFDATA2LSB</constant> and
<constant>ELFDATA2MSB</constant> constants define value
for little and big endian encoding.
</para>
</note>
<para>
ELF binary files may consist of several sections. Each section has it's own
responsibility: some contain executable code; others describe program
dependencies; others symbol tables and so on. See ELF binary format
documentation for a full description of each section.
</para>
<para>
The following code demonstrates how to find out the amount of sections
the ELF file contains. The code also presents how to access particular
section properties like names and sizes:
<programlisting><![CDATA[
// Print ELF file sections info
Elf_Half sec_num = reader.sections.size();
std::cout << "Number of sections: " << sec_num << std::endl;
for ( int i = 0; i < sec_num; ++i ) {
const section* psec = reader.sections[i];
std::cout << " [" << i << "] "
<< psec->get_name()
<< "\t"
<< psec->get_size()
<< std::endl;
// Access to section's data
// const char* p = reader.sections[i]->get_data()
}
]]></programlisting>
</para>
<para>
<methodname>sections</methodname> member of <classname>reader</classname>
object permits to obtain number of sections the ELF file contains. It
also serves for getting access to individual section by using
<methodname>operator[]</methodname>, which returns a pointer to
corresponding section's interface.
</para>
<para>
Similarly, segments of the ELF file can be processed:
<programlisting><![CDATA[
// Print ELF file segments info
Elf_Half seg_num = reader.segments.size();
std::cout << "Number of segments: " << seg_num << std::endl;
for ( int i = 0; i < seg_num; ++i ) {
const segment* pseg = reader.segments[i];
std::cout << " [" << i << "] 0x" << std::hex
<< pseg->get_flags()
<< "\t0x"
<< pseg->get_virtual_address()
<< "\t0x"
<< pseg->get_file_size()
<< "\t0x"
<< pseg->get_memory_size()
<< std::endl;
// Access to segments's data
// const char* p = reader.segments[i]->get_data()
}
]]></programlisting>
In this case, segments' attributes and data are obtained by using
<methodname>segments</methodname> member of the <classname>reader</classname>.
</para>
<para>
The full text of this example comes together with ELFIO library
distribution.
</para>
</sect1>
<sect1>
<title>ELF Section Data Accessors</title>
<para>
To simplify creation and interpretation of the ELF sections' data,
the ELFIO library comes with auxiliary classes - accessors. To the moment
of this document writing, the following accessors are available:
<itemizedlist mark='opencircle'>
<listitem><para>
<classname>string_section_accessor</classname>
</para></listitem>
<listitem><para>
<classname>symbol_section_accessor</classname>
</para></listitem>
<listitem><para>
<classname>relocation_section_accessor</classname>
</para></listitem>
<listitem><para>
<classname>note_section_accessor</classname>
</para></listitem>
</itemizedlist>
Definitely, it is possible to extend the library by implementing additional
accessors serving particular purposes.
</para>
<para>
Let's see how the accessors can be used with the previous ELF file reader
example. For this example purposes, we will print out all symbols in a
symbol section.
<programlisting><![CDATA[
if ( psec->get_type() == SHT_SYMTAB ) {
const symbol_section_accessor symbols( reader, psec );
for ( unsigned int j = 0; j < symbols.get_symbols_num(); ++j ) {
std::string name;
Elf64_Addr value;
Elf_Xword size;
unsigned char bind;
unsigned char type;
Elf_Half section_index;
unsigned char other;
symbols.get_symbol( j, name, value, size, bind,
type, section_index, other );
std::cout << j << " " << name << std::endl;
}
}
]]></programlisting>
We create <classname>symbol_section_accessor</classname> instance first.
Usually, accessors receive the <classname>elfio</classname> and
<classname>section*</classname> parameters for their constructors.
<methodname>get_symbol</methodname> is used to retrieve a particular entry
in the symbol table.
</para>
</sect1>
<sect1>
<title>ELFDump Utility</title>
<para>
The source code for the ELF Dumping Utility can be found in
the "examples" directory; there also located more examples on how
to use different ELFIO reader interfaces.
</para>
</sect1>
<sect1>
<title>ELF File Writer</title>
<para>
TODO
</para>
</sect1>
</chapter>
<chapter id="library-classes">
<title>ELFIO Library Classes</title>
<sect1>
<title>Class <classname>elfio</classname></title>
<sect2>
<title>Data members</title>
<para>
The ELFIO library's main class is <classname>elfio</classname>. The class
contains the following two public data members: sections and segments:
</para>
<para>
&elfio_data_members_table;
</para>
</sect2>
<sect2>
<title>Member functions</title>
<para>
Here is the list of <classname>elfio</classname> public member functions.
Most of the functions permit to retrieve or set ELF file properties.
</para>
<para>
&elfio_members_table;
</para>
</sect2>
</sect1>
<sect1>
<title>Class <classname>section</classname></title>
<para>
Class <classname>section</classname> has no public data members.
</para>
<sect2>
<title>Member functions</title>
<para>
Here is the list of <classname>section</classname> public member functions.
These functions permit to retrieve or set ELF file section properties.
</para>
<para>
&section_members_table;
</para>
</sect2>
</sect1>
</chapter>
<!--chapter id="ielfo">
<title>
<classname>IELFO</classname> - ELF File Producer Interface
</title>
<para>
The ELFIO library can help you build a very short ELF executable file.
This chapter shows how to build an executable file that will run on
x86 Linux machines and print "Hello World!" on your console.
</para>
<para>
Just as with the reader, the first step is to get
a pointer onto the ELF File Writer (Producer):
<programlisting>
<![CDATA[
IELFO* pELFO;
ELFIO::GetInstance()->CreateELFO( &pELFO );
]]></programlisting>
</para>
<para>
Before continuing, the library must be informed about the main
attributes of the executable file to be built. To do this, declare
that the executable ELF file will run on a 32 bit x86 machine; has little
endian encoding and uses the current version of the ELF file format:
<programlisting>
<![CDATA[
// You can't proceed without this function call!
pELFO->SetAttr( ELFCLASS32, ELFDATA2LSB, EV_CURRENT,
ET_EXEC, EM_386, EV_CURRENT, 0 );
]]></programlisting>
</para>
<para>
Some sections of an ELF executable file should reside in the program
segments. To create this loadable segment call the
<methodname>AddSegment()</methodname> function.
<programlisting>
<![CDATA[
// Create a loadable segment
IELFOSegment* pSegment = pELFO->AddSegment( PT_LOAD,
0x08040000,
0x08040000,
PF_X | PF_R,
0x1000 );
]]></programlisting>
</para>
<para>
The following segment serves as a placeholder for our code section.
To create this code section call the AddSection() function:
<programlisting>
<![CDATA[
// Create code section
IELFOSection* pTextSec = pELFO->AddSection( ".text",
SHT_PROGBITS,
SHF_ALLOC | SHF_EXECINSTR,
0,
0x10,
0 );
]]></programlisting>
</para>
<para>
Then, add the executable code for the section:
<programlisting>
<![CDATA[
char text[] =
{ '\xB8', '\x04', '\x00', '\x00', '\x00', // mov eax, 4
'\xBB', '\x01', '\x00', '\x00', '\x00', // mov ebx, 1
'\xB9', '\xFD', '\x00', '\x04', '\x08', // mov ecx, msg
'\xBA', '\x0E', '\x00', '\x00', '\x00', // mov edx, 14
'\xCD', '\x80', // int 0x80
'\xB8', '\x01', '\x00', '\x00', '\x00', // mov eax, 1
'\xCD', '\x80', // int 0x80
'\x48', '\x65', '\x6C', '\x6C', '\x6F', // db 'Hello'
'\x2C', '\x20', '\x57', '\x6F', '\x72', // db ', Wor'
'\x6C', '\x64', '\x21', '\x0A' // db 'ld!', 10
};
pTextSec->SetData( text, sizeof( text ) );
]]></programlisting>
</para>
<para>
Next, this code section is put into the loadable segment:
<programlisting>
<![CDATA[
// Add code section into program segment
pSegment->AddSection( pTextSec );
pTextSec->Release();
pSegment->Release();
]]></programlisting>
</para>
<para>
Finally, define the start address of the program
and create the result file:
<programlisting>
<![CDATA[
// Set program entry point
pELFO->SetEntry( 0x08040000 );
// Create ELF file
pELFO->Save( "test.elf" );
pELFO->Release();
]]></programlisting>
</para>
<para>
Please note: Call the <methodname>Release()</methodname> functions
for each interface you have used.
This will free all resources the ELFIO library has created.
</para>
<para>
Now compile the program and run it. The result is a new ELF file
called "test.elf". The size of this working executable file is only
267 bytes! Run it on your Linux machine with the following commands:
<programlisting>
<![CDATA[
[Writer]$ ./Writer
[Writer]$ chmod +x test.elf
[Writer]$ ./test.elf
Hello, World!
]]>
</programlisting>
</para>
<para>
The full text for this program can be found in the "Writer" directory.
Also, in the "Examples" directory, two other programs "WriteObj"
and "WriteObj2" demonstrate the creation of ELF object files.
</para>
</chapter-->
</book>

View File

@ -1,35 +0,0 @@
<table frame='all'>
<title>Class <classname>elfio</classname> member functions</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
<entry align="center">Data member</entry>
<entry align="center">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>
sections
</entry>
<entry>
The container stores ELFIO library section instances.
Implements operator[] and size(). operator[] permits access to
individual ELF file section according to its index.
</entry>
</row>
<row>
<entry>
segments
</entry>
<entry>
The container stores ELFIO library segment instances.
Implements operator[] and size(). operator[] permits access to
individual ELF file segment according to its index.
</entry>
</row>
</tbody>
</tgroup>
</table>

View File

@ -1,496 +0,0 @@
<table frame='all'>
<title>Class <classname>elfio</classname> member functions</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
<entry align="center">Function</entry>
<entry align="center">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>
<function>elfio</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
The constructor.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>
<function>~elfio</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
The destructor.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>create</function>
</funcdef>
<paramdef>unsigned char <parameter>file_class</parameter>
</paramdef>
<paramdef>unsigned char <parameter>encoding</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Cleans and initializes empty <classname>elfio</classname> object.
<parameter>file_class</parameter> is either ELFCLASS32 or ELFCLASS64.
<parameter>file_class</parameter> is either ELFDATA2LSB or ELFDATA2MSB.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>load</function>
</funcdef>
<paramdef>const std::string&amp; <parameter>file_name</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Initializes <classname>elfio</classname> object by loading data
from ELF binary file. File name provided in <parameter>file_name</parameter>.
Returns <returnvalue>true</returnvalue> if the file was processed successfully.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>save</function>
</funcdef>
<paramdef>const std::string&amp; <parameter>file_name</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Creates a file in ELF binary format. File name provided in <parameter>file_name</parameter>.
Returns <returnvalue>true</returnvalue> if the file was created successfully.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>unsigned char <function>get_class</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns ELF file class. Possible values are ELFCLASS32 or ELFCLASS64.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>unsigned char <function>get_elf_version</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns ELF file format version.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>unsigned char <function>get_encoding</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns ELF file format encoding. Possible values are ELFDATA2LSB and
ELFDATA2MSB.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Word <function>get_version</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Identifies the object file version.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_header_size</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns the ELF header's size in bytes.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_section_entry_size</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns a section's entry size in ELF file header section table.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_segment_entry_size</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns a segment's entry size in ELF file header program table.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>unsigned char <function>get_os_abi</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns operating system ABI identification.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_os_abi</function>
</funcdef>
<paramdef>unsigned char <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets operating system ABI identification.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>unsigned char <function>get_abi_version</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns ABI version.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_abi_version</function>
</funcdef>
<paramdef>unsigned char <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets ABI version.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_type</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns the object file type.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_type</function>
</funcdef>
<paramdef>Elf_Half <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets the object file type.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_machine</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns the object file's architecture.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_machine</function>
</funcdef>
<paramdef>Elf_Half <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets the object file's architecture.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Word <function>get_flags</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns processor-specific flags associated with the file.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_flags</function>
</funcdef>
<paramdef>Elf_Word <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets processor-specific flags associated with the file.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf64_Addr <function>get_entry</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns the virtual address to which the system first transfers control.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_entry</function>
</funcdef>
<paramdef>Elf64_Addr <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets the virtual address to which the system first transfers control.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf64_Off <function>get_sections_offset</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns the section header table's file offset in bytes.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_sections_offset</function>
</funcdef>
<paramdef>Elf64_Off <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets the section header table's file offset. Attention!
The value can be overridden by the library, when it creates new ELF
file layout.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf64_Off <function>get_segments_offset</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns the program header table's file offset.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_segments_offset</function>
</funcdef>
<paramdef>Elf64_Off <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets the program header table's file offset. Attention!
The value can be overridden by the library, when it creates new ELF
file layout.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_section_name_str_index</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns the section header table index of the entry associated with
the section name string table.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>set_section_name_str_index</function>
</funcdef>
<paramdef>Elf_Half <parameter>value</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Sets the section header table index of the entry associated with
the section name string table.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>endianess_convertor&amp; <function>get_convertor</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns endianess convertor reference for the specific
<classname>elfio</classname> object instance.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Xword <function>get_default_entry_size</function>
</funcdef>
<paramdef>Elf_Word <parameter>section_type</parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns default entry size for known section types having different values
on 32 and 64 bit architectures. At the moment, only SHT_RELA, SHT_REL,
SHT_SYMTAB and SHT_DYNAMIC are 'known' section types. The function
returns 0 for other section types.
</entry>
</row>
</tbody>
</tgroup>
</table>

View File

@ -1,60 +0,0 @@
<table frame='all'>
<title>Class <classname>section</classname> member functions</title>
<tgroup cols='2' align='left' colsep='1' rowsep='1'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
<entry align="center">Function</entry>
<entry align="center">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_index</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns section index within ELF file.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_index</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns section index within ELF file.
</entry>
</row>
<row>
<entry>
<funcsynopsis>
<funcprototype>
<funcdef>Elf_Half <function>get_index</function>
</funcdef>
<void/>
</funcprototype>
</funcsynopsis>
</entry>
<entry>
Returns section index within ELF file.
</entry>
</row>
</tbody>
</tgroup>
</table>

View File

@ -1 +1 @@
SUBDIRS = elfdump tutorial
SUBDIRS = elfdump tutorial writer

View File

@ -166,7 +166,7 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = elfdump tutorial
SUBDIRS = elfdump tutorial writer
all: all-recursive
.SUFFIXES:

View File

@ -1,6 +1,6 @@
INCLUDES = -I$(top_srcdir)
check_PROGRAMS = elfdump
bin_PROGRAMS = elfdump
elfdump_SOURCES = elfdump.cpp

View File

@ -14,6 +14,7 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@ -31,7 +32,7 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
check_PROGRAMS = elfdump$(EXEEXT)
bin_PROGRAMS = elfdump$(EXEEXT)
subdir = examples/elfdump
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@ -41,6 +42,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_elfdump_OBJECTS = elfdump.$(OBJEXT)
elfdump_OBJECTS = $(am_elfdump_OBJECTS)
elfdump_LDADD = $(LDADD)
@ -178,9 +181,43 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
clean-checkPROGRAMS:
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
elfdump$(EXEEXT): $(elfdump_OBJECTS) $(elfdump_DEPENDENCIES) $(EXTRA_elfdump_DEPENDENCIES)
@rm -f elfdump$(EXEEXT)
$(CXXLINK) $(elfdump_OBJECTS) $(elfdump_LDADD) $(LIBS)
@ -290,10 +327,12 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
check: check-am
all-am: Makefile
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@ -326,7 +365,7 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
@ -352,7 +391,7 @@ install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
@ -391,14 +430,14 @@ ps: ps-am
ps-am:
uninstall-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: check-am install-am install-strip
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean \
clean-checkPROGRAMS clean-generic ctags distclean \
distclean-compile distclean-generic distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
@ -406,7 +445,7 @@ uninstall-am:
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am
uninstall-am uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.

View File

@ -1,5 +1,5 @@
INCLUDES = -I$(top_srcdir)
check_PROGRAMS = tutorial
bin_PROGRAMS = tutorial
tutorial_SOURCES = tutorial.cpp

View File

@ -14,6 +14,7 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
@ -31,7 +32,7 @@ POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
check_PROGRAMS = tutorial$(EXEEXT)
bin_PROGRAMS = tutorial$(EXEEXT)
subdir = examples/tutorial
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@ -41,6 +42,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_tutorial_OBJECTS = tutorial.$(OBJEXT)
tutorial_OBJECTS = $(am_tutorial_OBJECTS)
tutorial_LDADD = $(LDADD)
@ -177,9 +180,43 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
clean-checkPROGRAMS:
-test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS)
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
tutorial$(EXEEXT): $(tutorial_OBJECTS) $(tutorial_DEPENDENCIES) $(EXTRA_tutorial_DEPENDENCIES)
@rm -f tutorial$(EXEEXT)
$(CXXLINK) $(tutorial_OBJECTS) $(tutorial_LDADD) $(LIBS)
@ -289,10 +326,12 @@ distdir: $(DISTFILES)
fi; \
done
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
check: check-am
all-am: Makefile
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@ -325,7 +364,7 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-checkPROGRAMS clean-generic mostlyclean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
@ -351,7 +390,7 @@ install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
@ -390,14 +429,14 @@ ps: ps-am
ps-am:
uninstall-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: check-am install-am install-strip
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean \
clean-checkPROGRAMS clean-generic ctags distclean \
distclean-compile distclean-generic distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
@ -405,7 +444,7 @@ uninstall-am:
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am
uninstall-am uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.

View File

@ -0,0 +1,5 @@
INCLUDES = -I$(top_srcdir)
bin_PROGRAMS = writer
writer_SOURCES = writer.cpp

452
examples/writer/Makefile.in Normal file
View File

@ -0,0 +1,452 @@
# Makefile.in generated by automake 1.11.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
# Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
bin_PROGRAMS = writer$(EXEEXT)
subdir = examples/writer
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am_writer_OBJECTS = writer.$(OBJEXT)
writer_OBJECTS = $(am_writer_OBJECTS)
writer_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
SOURCES = $(writer_SOURCES)
DIST_SOURCES = $(writer_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EXEEXT = @EXEEXT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = -I$(top_srcdir)
writer_SOURCES = writer.cpp
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/writer/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu examples/writer/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p; \
then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' `; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
writer$(EXEEXT): $(writer_OBJECTS) $(writer_DEPENDENCIES) $(EXTRA_writer_DEPENDENCIES)
@rm -f writer$(EXEEXT)
$(CXXLINK) $(writer_OBJECTS) $(writer_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writer.Po@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT: