mirror of
https://github.com/serge1/ELFIO.git
synced 2025-01-29 21:32:44 +00:00
Remove DocBook files; Add 'writer' Makefile
This commit is contained in:
parent
64b669d36c
commit
e1044f2c49
@ -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
|
||||
|
@ -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
4
configure
vendored
@ -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
|
||||
|
@ -19,4 +19,4 @@ AC_OUTPUT([Makefile
|
||||
examples/Makefile
|
||||
examples/elfdump/Makefile
|
||||
examples/tutorial/Makefile
|
||||
doc/Makefile])
|
||||
examples/writer/Makefile])
|
||||
|
@ -1 +0,0 @@
|
||||
EXTRA_DIST = elfio.docbook elfio.pdf
|
@ -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
|
@ -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>
|
||||
§ion_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>
|
@ -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>
|
@ -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& <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& <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& <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>
|
@ -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>
|
@ -1 +1 @@
|
||||
SUBDIRS = elfdump tutorial
|
||||
SUBDIRS = elfdump tutorial writer
|
||||
|
@ -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:
|
||||
|
@ -1,6 +1,6 @@
|
||||
INCLUDES = -I$(top_srcdir)
|
||||
|
||||
check_PROGRAMS = elfdump
|
||||
bin_PROGRAMS = elfdump
|
||||
|
||||
elfdump_SOURCES = elfdump.cpp
|
||||
|
||||
|
@ -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.
|
||||
|
@ -1,5 +1,5 @@
|
||||
INCLUDES = -I$(top_srcdir)
|
||||
|
||||
check_PROGRAMS = tutorial
|
||||
bin_PROGRAMS = tutorial
|
||||
|
||||
tutorial_SOURCES = tutorial.cpp
|
||||
|
@ -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.
|
||||
|
5
examples/writer/Makefile.am
Normal file
5
examples/writer/Makefile.am
Normal file
@ -0,0 +1,5 @@
|
||||
INCLUDES = -I$(top_srcdir)
|
||||
|
||||
bin_PROGRAMS = writer
|
||||
|
||||
writer_SOURCES = writer.cpp
|
452
examples/writer/Makefile.in
Normal file
452
examples/writer/Makefile.in
Normal 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:
|
Loading…
x
Reference in New Issue
Block a user