This is or1k.info, produced by makeinfo version 4.13 from
|
This is or1k.info, produced by makeinfo version 4.13 from
|
../.././gdb/doc/or1k.texinfo.
|
../.././gdb/doc/or1k.texinfo.
|
|
|
INFO-DIR-SECTION Software development
|
INFO-DIR-SECTION Software development
|
START-INFO-DIR-ENTRY
|
START-INFO-DIR-ENTRY
|
* Gdb for OpenRISC 1000: (gdb for Or1K). The GNU debugger for OpenRISC 1000.
|
* Gdb for OpenRISC 1000: (gdb for Or1K). The GNU debugger for OpenRISC 1000.
|
END-INFO-DIR-ENTRY
|
END-INFO-DIR-ENTRY
|
|
|
This file documents the GNU debugger GDB when used with OpenRISC
|
This file documents the GNU debugger GDB when used with OpenRISC
|
1000 processors.
|
1000 processors.
|
|
|
This is the Second Edition, of `Debugging the OpenRISC 1000 GDB' for
|
This is the Second Edition, of `Debugging the OpenRISC 1000 GDB' for
|
GDB Version 6.8.
|
GDB Version 6.8.
|
|
|
Copyright (C) 2008 Embecosm Limited
|
Copyright (C) 2008 Embecosm Limited
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
under the terms of the GNU Free Documentation License, Version 3 or any
|
under the terms of the GNU Free Documentation License, Version 3 or any
|
later version published by the Free Software Foundation; with the
|
later version published by the Free Software Foundation; with the
|
Front-Cover Texts being "Debugging the OpenRISC 1000 with GDB by Jeremy
|
Front-Cover Texts being "Debugging the OpenRISC 1000 with GDB by Jeremy
|
Bennett" and with the Back-Cover Texts being "You are free to copy and
|
Bennett" and with the Back-Cover Texts being "You are free to copy and
|
modify this Manual."
|
modify this Manual."
|
|
|
|
|
File: or1k.info, Node: Top, Next: Summary, Prev: (dir), Up: (dir)
|
File: or1k.info, Node: Top, Next: Summary, Prev: (dir), Up: (dir)
|
|
|
Debugging the OpenRISC 1000 with GDB
|
Debugging the OpenRISC 1000 with GDB
|
************************************
|
************************************
|
|
|
This file describes GDB, the GNU symbolic debugger for use with the
|
This file describes GDB, the GNU symbolic debugger for use with the
|
OpenRISC 1000 processor architecture.
|
OpenRISC 1000 processor architecture.
|
|
|
This is the Second Edition, for GDB Version 6.8.
|
This is the Second Edition, for GDB Version 6.8.
|
|
|
Copyright (C) 2008 Embecosm Limited
|
Copyright (C) 2008 Embecosm Limited
|
|
|
* Menu:
|
* Menu:
|
|
|
* Summary:: Summary of GDB with OpenRISC 1000
|
* Summary:: Summary of GDB with OpenRISC 1000
|
* Connecting to the Target:: Connecting to an OpenRISC 1000 Target
|
* Connecting to the Target:: Connecting to an OpenRISC 1000 Target
|
* OpenRISC 1000 Specific Commands:: Commands just for the OpenRISC 1000
|
* OpenRISC 1000 Specific Commands:: Commands just for the OpenRISC 1000
|
* OpenRISC 1000 Example:: A small example
|
* OpenRISC 1000 Example:: A small example
|
* OpenRISC 1000 Limitations:: Known problems
|
* OpenRISC 1000 Limitations:: Known problems
|
|
|
* Copying:: GNU General Public License says
|
* Copying:: GNU General Public License says
|
how you can copy and share GDB
|
how you can copy and share GDB
|
* GNU Free Documentation License:: The license for this documentation
|
* GNU Free Documentation License:: The license for this documentation
|
* Index:: Index
|
* Index:: Index
|
|
|
|
|
File: or1k.info, Node: Summary, Next: Connecting to the Target, Prev: Top, Up: Top
|
File: or1k.info, Node: Summary, Next: Connecting to the Target, Prev: Top, Up: Top
|
|
|
Summary of GDB with OpenRISC 1000
|
Summary of GDB with OpenRISC 1000
|
*********************************
|
*********************************
|
|
|
GDB is described well in its user manual, "Debugging with GDB: The GNU
|
GDB is described well in its user manual, "Debugging with GDB: The GNU
|
Source-Level Debugger".
|
Source-Level Debugger".
|
|
|
This manual describes how to use GDB to debug C programs cross
|
This manual describes how to use GDB to debug C programs cross
|
compiled for and running on processors using the OpenRISC 1000
|
compiled for and running on processors using the OpenRISC 1000
|
architecture. In general GDB does not run on the actual target, but on
|
architecture. In general GDB does not run on the actual target, but on
|
a separate host processor. It communicates with the target via the GDB
|
a separate host processor. It communicates with the target via the GDB
|
"Remote Serial Protocol" (RSP).
|
"Remote Serial Protocol" (RSP).
|
|
|
For backwards compatibility, GDB for OpenRISC also supports the
|
For backwards compatibility, GDB for OpenRISC also supports the
|
legacy custom remote protocol, which drives the JTAG interface on the
|
legacy custom remote protocol, which drives the JTAG interface on the
|
OpenRISC 1000. This is provided by adding a special target, "jtag" to
|
OpenRISC 1000. This is provided by adding a special target, "jtag" to
|
GDB, allowing the debugger to connect via the JTAG interface. *Note
|
GDB, allowing the debugger to connect via the JTAG interface. *Note
|
Connecting to the Target: Connecting to the Target.
|
Connecting to the Target: Connecting to the Target.
|
|
|
In addition the info command is extended to allow inspection of
|
In addition the info command is extended to allow inspection of
|
OpenRISC 1000 Special Purpose registers, and a new command "spr" is
|
OpenRISC 1000 Special Purpose registers, and a new command "spr" is
|
added to set the value of a Special Purpose Register. *Note OpenRISC
|
added to set the value of a Special Purpose Register. *Note OpenRISC
|
1000 Specific Commands: OpenRISC 1000 Specific Commands.
|
1000 Specific Commands: OpenRISC 1000 Specific Commands.
|
|
|
All the normal GDB commands should work, although hardware
|
All the normal GDB commands should work, although hardware
|
watchpoints are not tested at present. The `info registers' command
|
watchpoints are not tested at present. The `info registers' command
|
will show the 32 general purpose registers, while the `info registers
|
will show the 32 general purpose registers, while the `info registers
|
all' command will add the program counter, supervision register and
|
all' command will add the program counter, supervision register and
|
exception program counter register.
|
exception program counter register.
|
|
|
For those who like their debugging graphical, the `gdbtui' command is
|
For those who like their debugging graphical, the `gdbtui' command is
|
available (typically as `or32-uclinux-gdbtui'). GDB for OpenRISC 1000
|
available (typically as `or32-uclinux-gdbtui'). GDB for OpenRISC 1000
|
can also be run under `ddd' as follows:
|
can also be run under `ddd' as follows:
|
|
|
`ddd --debugger=or32-uclinux-gdb --gdb'
|
`ddd --debugger=or32-uclinux-gdb --gdb'
|
|
|
* Menu:
|
* Menu:
|
|
|
* Contributors:: Contributors to GDB for the OpenRISC 1000
|
* Contributors:: Contributors to GDB for the OpenRISC 1000
|
|
|
|
|
File: or1k.info, Node: Contributors, Up: Summary
|
File: or1k.info, Node: Contributors, Up: Summary
|
|
|
Contributors to GDB for the OpenRISC 1000
|
Contributors to GDB for the OpenRISC 1000
|
=========================================
|
=========================================
|
|
|
The pantheon of contributors to GDB over the years is recorded in the
|
The pantheon of contributors to GDB over the years is recorded in the
|
main user manual, `Debugging with GDB: The GNU Source-Level Debugger".
|
main user manual, `Debugging with GDB: The GNU Source-Level Debugger".
|
|
|
There is no official history of contributors to the OpenRISC 1000
|
There is no official history of contributors to the OpenRISC 1000
|
version. However the current author believes the original GDB 5.0 and
|
version. However the current author believes the original GDB 5.0 and
|
5.3 ports were the work of:
|
5.3 ports were the work of:
|
|
|
* Ivan Guzvinec and Johan Rydverg at OpenCores, who wrote the Binary
|
* Ivan Guzvinec and Johan Rydverg at OpenCores, who wrote the Binary
|
File Descriptor library;
|
File Descriptor library;
|
|
|
* Alessandro Forin at Carnegie-Mellon University and Per Bothner at
|
* Alessandro Forin at Carnegie-Mellon University and Per Bothner at
|
the University of Wisconsin who wrote the main GDB interface; and
|
the University of Wisconsin who wrote the main GDB interface; and
|
|
|
* Mark Mlinar at Cygnus Support and Chris Ziomkowski at ASICS.ws,who
|
* Mark Mlinar at Cygnus Support and Chris Ziomkowski at ASICS.ws,who
|
wrote the OpenRISC JTAG interface.
|
wrote the OpenRISC JTAG interface.
|
|
|
The port to GDB 6.8 is the work of Jeremy Bennett of Embecosm
|
The port to GDB 6.8 is the work of Jeremy Bennett of Embecosm
|
Limited (jeremy.bennett@embecosm.com).
|
Limited (jeremy.bennett@embecosm.com).
|
|
|
Plea: If you know of anyone who has been omitted from this list,
|
Plea: If you know of anyone who has been omitted from this list,
|
please email the current author, so the omission can be corrected,
|
please email the current author, so the omission can be corrected,
|
and credit given where it is due.
|
and credit given where it is due.
|
|
|
|
|
File: or1k.info, Node: Connecting to the Target, Next: OpenRISC 1000 Specific Commands, Prev: Summary, Up: Top
|
File: or1k.info, Node: Connecting to the Target, Next: OpenRISC 1000 Specific Commands, Prev: Summary, Up: Top
|
|
|
1 Connecting to an OpenRISC 1000 Target
|
1 Connecting to an OpenRISC 1000 Target
|
***************************************
|
***************************************
|
|
|
There are two ways to connect to an OpenRISC 1000 target with GDB.
|
There are two ways to connect to an OpenRISC 1000 target with GDB.
|
|
|
1. To hardware directly connected via a JP1 header linked to the
|
1. To hardware directly connected via a JP1 header linked to the
|
parallel port. This uses the GDB command `target jtag'.
|
parallel port. This uses the GDB command `target jtag'.
|
|
|
2. Via a TCP/IP socket to a machine which has the hardware connected,
|
2. Via a TCP/IP socket to a machine which has the hardware connected,
|
or is running the architectural simulator using the standard GDB
|
or is running the architectural simulator using the standard GDB
|
"Remote Serial Protocol". This uses the GDB commands `target
|
"Remote Serial Protocol". This uses the GDB commands `target
|
remote' or `target extended-remote'.
|
remote' or `target extended-remote'.
|
|
|
3. Via a TCP/IP socket to a machine which has the hardware connected,
|
3. Via a TCP/IP socket to a machine which has the hardware connected,
|
or is running the architectural simulator using the custom
|
or is running the architectural simulator using the custom
|
OpenRISC 1000 Remote JTAG protocol. This uses the GDB command
|
OpenRISC 1000 Remote JTAG protocol. This uses the GDB command
|
`target jtag'.
|
`target jtag'.
|
|
|
Note: This connection mechanism is deprecated. It remains for
|
Note: This connection mechanism is deprecated. It remains for
|
backward compatibility only.
|
backward compatibility only.
|
|
|
|
|
Caution: If used with version 0.2.0 of the architectural
|
Caution: If used with version 0.2.0 of the architectural
|
simulator, Or1ksim, GDB version 6.8 requires a patch to be applied
|
simulator, Or1ksim, GDB version 6.8 requires a patch to be applied
|
to the architectural simulator. This should be available on the
|
to the architectural simulator. This should be available on the
|
OpenCores website, or contact the author directly. Only the legacy
|
OpenCores website, or contact the author directly. Only the legacy
|
OpenRISC 1000 Remote JTAG Protocol interface is available for this
|
OpenRISC 1000 Remote JTAG Protocol interface is available for this
|
version of the architectural simualtor.
|
version of the architectural simualtor.
|
|
|
The user is strongly recommended to use Or1ksim 0.3.0 or later,
|
The user is strongly recommended to use Or1ksim 0.3.0 or later,
|
since this interfaces directly to GDB using the "Remote Serial
|
since this interfaces directly to GDB using the "Remote Serial
|
Protocol".
|
Protocol".
|
|
|
* Menu:
|
* Menu:
|
|
|
* Direct JTAG Connection:: Direct connection via a JTAG JP1
|
* Direct JTAG Connection:: Direct connection via a JTAG JP1
|
interface
|
interface
|
* Remote Serial Protocol Connection:: Connection via the GDB Remote
|
* Remote Serial Protocol Connection:: Connection via the GDB Remote
|
Serial Protocol Interface
|
Serial Protocol Interface
|
* Remote JTAG Connection:: Connection via the OpenRISC 1000 Remote
|
* Remote JTAG Connection:: Connection via the OpenRISC 1000 Remote
|
JTAG Interface
|
JTAG Interface
|
|
|
|
|
File: or1k.info, Node: Direct JTAG Connection, Next: Remote Serial Protocol Connection, Up: Connecting to the Target
|
File: or1k.info, Node: Direct JTAG Connection, Next: Remote Serial Protocol Connection, Up: Connecting to the Target
|
|
|
1.1 Direct connection via a JTAG JP1 Interface
|
1.1 Direct connection via a JTAG JP1 Interface
|
==============================================
|
==============================================
|
|
|
In this case the the device to which the JP1 header is connected must be
|
In this case the the device to which the JP1 header is connected must be
|
specifed to the `target jtag' command. Typically that will be the
|
specifed to the `target jtag' command. Typically that will be the
|
parallel printer port, so the command would be:
|
parallel printer port, so the command would be:
|
|
|
`target jtag /dev/lp'
|
`target jtag /dev/lp'
|
|
|
Caution: The current author is not aware of anyone using the JP1
|
Caution: The current author is not aware of anyone using the JP1
|
interface. As a result this code has not been tested in the port to
|
interface. As a result this code has not been tested in the port to
|
GDB version 6.8. Modern hardware connections are usually via
|
GDB version 6.8. Modern hardware connections are usually via
|
interfaces such as USB, for which the OpenRISC Remote Interface
|
interfaces such as USB, for which the OpenRISC Remote Interface
|
can be used (*note Remote JTAG Connection: Remote JTAG
|
can be used (*note Remote JTAG Connection: Remote JTAG
|
Connection.).
|
Connection.).
|
|
|
|
|
File: or1k.info, Node: Remote Serial Protocol Connection, Next: Remote JTAG Connection, Prev: Direct JTAG Connection, Up: Connecting to the Target
|
File: or1k.info, Node: Remote Serial Protocol Connection, Next: Remote JTAG Connection, Prev: Direct JTAG Connection, Up: Connecting to the Target
|
|
|
1.2 Connection via the GDB Remote Serial Protocol
|
1.2 Connection via the GDB Remote Serial Protocol
|
=================================================
|
=================================================
|
|
|
The usual mode of operation is through the GDB "Remote Serial Protocol"
|
The usual mode of operation is through the GDB "Remote Serial Protocol"
|
(RSP). This communicates to the target through a TCP/IP socket. The
|
(RSP). This communicates to the target through a TCP/IP socket. The
|
target must then implement the server side of the interface to drive
|
target must then implement the server side of the interface to drive
|
either physical hardware (for example through a USB/JTAG connector) or a
|
either physical hardware (for example through a USB/JTAG connector) or a
|
simulation of the hardware (such as the OpenRISC Architectural
|
simulation of the hardware (such as the OpenRISC Architectural
|
Simulator).
|
Simulator).
|
|
|
Although referred to as a _remote_ interface, the target may actually
|
Although referred to as a _remote_ interface, the target may actually
|
be on the same machine, just running in a separate process, with its own
|
be on the same machine, just running in a separate process, with its own
|
terminal window.
|
terminal window.
|
|
|
For example, to connect to the OpenRISC 1000 Architectural
|
For example, to connect to the OpenRISC 1000 Architectural
|
simulator, which is running on machine "thomas" and has been configured
|
simulator, which is running on machine "thomas" and has been configured
|
to talk to GDB on port 51000, the following command would be used:
|
to talk to GDB on port 51000, the following command would be used:
|
|
|
`target remote thomas:51000'
|
`target remote thomas:51000'
|
|
|
The target machine is specified as the machine name and port number.
|
The target machine is specified as the machine name and port number.
|
If the architectural simulator was running on the same machine, its
|
If the architectural simulator was running on the same machine, its
|
name may be omitted, thus:
|
name may be omitted, thus:
|
|
|
`target remote :51000'
|
`target remote :51000'
|
|
|
|
|
File: or1k.info, Node: Remote JTAG Connection, Prev: Remote Serial Protocol Connection, Up: Connecting to the Target
|
File: or1k.info, Node: Remote JTAG Connection, Prev: Remote Serial Protocol Connection, Up: Connecting to the Target
|
|
|
1.3 Connection via the OpenRISC 1000 Remote JTAG Interface
|
1.3 Connection via the OpenRISC 1000 Remote JTAG Interface
|
==========================================================
|
==========================================================
|
|
|
Historically, GDB communicated with remote OpenRISC 1000 targets using
|
Historically, GDB communicated with remote OpenRISC 1000 targets using
|
a customer protocol, the "OpenRISC 1000 Remote JTAG Interface".
|
a customer protocol, the "OpenRISC 1000 Remote JTAG Interface".
|
|
|
This protocol is maintained for backwards compatibility, but is now
|
This protocol is maintained for backwards compatibility, but is now
|
deprecated. It communicates to the target through a TCP/IP socket. The
|
deprecated. It communicates to the target through a TCP/IP socket. The
|
target must then implement the client side of the interface to drive
|
target must then implement the client side of the interface to drive
|
either physical hardware (for example through a USB/JTAG connector) or
|
either physical hardware (for example through a USB/JTAG connector) or
|
a simulation of the hardware (such as the OpenRISC Architectural
|
a simulation of the hardware (such as the OpenRISC Architectural
|
Simulator).
|
Simulator).
|
|
|
Although referred to as the _remote_ interface, the target may
|
Although referred to as the _remote_ interface, the target may
|
actually be on the same machine, just running in a separate process,
|
actually be on the same machine, just running in a separate process,
|
with its own terminal window.
|
with its own terminal window.
|
|
|
For example, to connect to the OpenRISC 1000 Architectural
|
For example, to connect to the OpenRISC 1000 Architectural
|
simulator, which is running on machine "thomas" and has been configured
|
simulator, which is running on machine "thomas" and has been configured
|
to talk to GDB on port 50000, I could use the command:
|
to talk to GDB on port 50000, I could use the command:
|
|
|
`target jtag jtag://thomas:50000'
|
`target jtag jtag://thomas:50000'
|
|
|
The target machine is specified after the jtag:// and separated from
|
The target machine is specified after the jtag:// and separated from
|
the target port by a colon. If the architectural simulator was running
|
the target port by a colon. If the architectural simulator was running
|
on the same machine, just locahost would suffice as the machine name,
|
on the same machine, just locahost would suffice as the machine name,
|
thus:
|
thus:
|
|
|
`target jtag jtag://localhost:50000'
|
`target jtag jtag://localhost:50000'
|
|
|
Unfortunately there are now two different flavours of the JTAG
|
Unfortunately there are now two different flavours of the JTAG
|
interface used with OpenRISC 1000. The original version was created for
|
interface used with OpenRISC 1000. The original version was created for
|
use with the OpenRISC 1000 System-on-Chip, ORPSoC. A new (smaller and
|
use with the OpenRISC 1000 System-on-Chip, ORPSoC. A new (smaller and
|
simpler) JTAG interface was developed by Igor Mohor in 2004, which is
|
simpler) JTAG interface was developed by Igor Mohor in 2004, which is
|
used on some designs.
|
used on some designs.
|
|
|
The default behavior of GDB is to use the original ORPSoC version of
|
The default behavior of GDB is to use the original ORPSoC version of
|
the interface for backwards compatibility. GDB can use the Igor Mohor
|
the interface for backwards compatibility. GDB can use the Igor Mohor
|
version by specifying for example:
|
version by specifying for example:
|
|
|
`target jtag jtag_mohor://localhost:50000'
|
`target jtag jtag_mohor://localhost:50000'
|
|
|
This interface is only available with remote connections using the
|
This interface is only available with remote connections using the
|
legacy OpenRISC 1000 Remote JTAG Protocol (deprecated). The direct JP1
|
legacy OpenRISC 1000 Remote JTAG Protocol (deprecated). The direct JP1
|
interface can support only the ORPSoC version of JTAG.
|
interface can support only the ORPSoC version of JTAG.
|
|
|
The recommended approach is to use the GDB "Remote Serial Protocol"
|
The recommended approach is to use the GDB "Remote Serial Protocol"
|
which interfaces directly to the simulator, and is independent of the
|
which interfaces directly to the simulator, and is independent of the
|
JTAG implementation used.
|
JTAG implementation used.
|
|
|
For completeness
|
For completeness
|
|
|
`target jtag jtag_orpsoc://localhost:50000'
|
`target jtag jtag_orpsoc://localhost:50000'
|
|
|
is provided as a synonym for:
|
is provided as a synonym for:
|
|
|
`target jtag jtag://localhost:50000'
|
`target jtag jtag://localhost:50000'
|
|
|
By default, establishing a connection _does not_ reset the target.
|
By default, establishing a connection _does not_ reset the target.
|
This allows debugging to resume a partially complete program on
|
This allows debugging to resume a partially complete program on
|
connection. If a reset is required, the keyworkd `RESET' (case
|
connection. If a reset is required, the keyworkd `RESET' (case
|
insensitive) may be added at the end of the `target' command. For
|
insensitive) may be added at the end of the `target' command. For
|
example:
|
example:
|
|
|
`target jtag jtag://localhost:50000 reset'
|
`target jtag jtag://localhost:50000 reset'
|
|
|
Warning: The OpenRISC remote JTAG interface is not particularly
|
Warning: The OpenRISC remote JTAG interface is not particularly
|
robust. In particular dropping and reconnecting sessions does not
|
robust. In particular dropping and reconnecting sessions does not
|
seem to work well. This was a key factor in its replacement by the
|
seem to work well. This was a key factor in its replacement by the
|
generic GDB Remote Serial Interface.
|
generic GDB Remote Serial Interface.
|
|
|
|
|
File: or1k.info, Node: OpenRISC 1000 Specific Commands, Next: OpenRISC 1000 Example, Prev: Connecting to the Target, Up: Top
|
File: or1k.info, Node: OpenRISC 1000 Specific Commands, Next: OpenRISC 1000 Example, Prev: Connecting to the Target, Up: Top
|
|
|
2 Commands just for the OpenRISC 1000
|
2 Commands just for the OpenRISC 1000
|
*************************************
|
*************************************
|
|
|
The OpenRISC 1000 has one particular feature that is difficult for GDB.
|
The OpenRISC 1000 has one particular feature that is difficult for GDB.
|
GDB models target processors with a register bank and a block of
|
GDB models target processors with a register bank and a block of
|
memory. The internals of GDB assume that there are not a huge number of
|
memory. The internals of GDB assume that there are not a huge number of
|
registers in total.
|
registers in total.
|
|
|
The OpenRISC 1000 Special Purpose Registers (SPR) do not really fit
|
The OpenRISC 1000 Special Purpose Registers (SPR) do not really fit
|
well into this structure. There are too many of them (12 groups each
|
well into this structure. There are too many of them (12 groups each
|
with 2000+ entries so far, with up to 32 groups permitted) to be
|
with 2000+ entries so far, with up to 32 groups permitted) to be
|
implemented as ordinary registers in GDB. Think what this would mean
|
implemented as ordinary registers in GDB. Think what this would mean
|
for the command `info registers all'. However they cannot be considered
|
for the command `info registers all'. However they cannot be considered
|
memory, since they do not reside in the main memory map.
|
memory, since they do not reside in the main memory map.
|
|
|
The solution is to add two new commands to GDB to see the value of a
|
The solution is to add two new commands to GDB to see the value of a
|
particular SPR and to set the value of a particular SPR.
|
particular SPR and to set the value of a particular SPR.
|
|
|
1. `info spr' is used to show the value of a SPR or group of SPRs.
|
1. `info spr' is used to show the value of a SPR or group of SPRs.
|
|
|
2. `spr' is used to set the value of an individual SPR.
|
2. `spr' is used to set the value of an individual SPR.
|
|
|
* Menu:
|
* Menu:
|
|
|
* Reading SPRs:: Using the ``info spr'' command
|
* Reading SPRs:: Using the ``info spr'' command
|
* Writing SPRs:: Using the spr command
|
* Writing SPRs:: Using the spr command
|
|
|
|
|
File: or1k.info, Node: Reading SPRs, Next: Writing SPRs, Up: OpenRISC 1000 Specific Commands
|
File: or1k.info, Node: Reading SPRs, Next: Writing SPRs, Up: OpenRISC 1000 Specific Commands
|
|
|
2.1 Using the `info spr' Command
|
2.1 Using the `info spr' Command
|
================================
|
================================
|
|
|
The value of an SPR is read by specifying either the unique name of the
|
The value of an SPR is read by specifying either the unique name of the
|
SPR, or the its group and index in that group. For example the Debug
|
SPR, or the its group and index in that group. For example the Debug
|
Reason Register (`DRR', register 21 in group 6 (Debug)) can be read
|
Reason Register (`DRR', register 21 in group 6 (Debug)) can be read
|
using any of the following commands:
|
using any of the following commands:
|
|
|
`info spr DRR'
|
`info spr DRR'
|
`info spr debug DRR'
|
`info spr debug DRR'
|
`info spr debug 21'
|
`info spr debug 21'
|
`info spr 6 DRR'
|
`info spr 6 DRR'
|
`info spr 6 21'
|
`info spr 6 21'
|
|
|
In each case the output will be:
|
In each case the output will be:
|
|
|
`DEBUG.DRR = SPR6_21 = 0 (0x0)'
|
`DEBUG.DRR = SPR6_21 = 0 (0x0)'
|
|
|
It is also possible to inspect all the registers in a group. For
|
It is also possible to inspect all the registers in a group. For
|
example to look at all the Programmable Interrupt Controller registers
|
example to look at all the Programmable Interrupt Controller registers
|
(group 9), either of the following commands could be used:
|
(group 9), either of the following commands could be used:
|
|
|
`info spr PIC'
|
`info spr PIC'
|
`info spr 9'
|
`info spr 9'
|
|
|
And the output would be:
|
And the output would be:
|
|
|
`PIC.PICMR = SPR9_0 = 0 (0x9)'
|
`PIC.PICMR = SPR9_0 = 0 (0x9)'
|
`PIC.PICSR = SPR9_2 = 0 (0x8)'
|
`PIC.PICSR = SPR9_2 = 0 (0x8)'
|
|
|
Indicating that interrupts 0 and 4 are enabled and interrupt 4 is
|
Indicating that interrupts 0 and 4 are enabled and interrupt 4 is
|
pending.
|
pending.
|
|
|
|
|
File: or1k.info, Node: Writing SPRs, Prev: Reading SPRs, Up: OpenRISC 1000 Specific Commands
|
File: or1k.info, Node: Writing SPRs, Prev: Reading SPRs, Up: OpenRISC 1000 Specific Commands
|
|
|
2.2 Using the `spr' Command
|
2.2 Using the `spr' Command
|
===========================
|
===========================
|
|
|
The value of an SPR is written by specifying the unique name of the SPR
|
The value of an SPR is written by specifying the unique name of the SPR
|
or its group and index in the same manner as for the `info spr'
|
or its group and index in the same manner as for the `info spr'
|
command. An additional argument specifies the value to be written. So
|
command. An additional argument specifies the value to be written. So
|
for example the Programmable Interrupt Controller mask register could
|
for example the Programmable Interrupt Controller mask register could
|
be changed to enable interrupts 5 and 3 only by any of the following
|
be changed to enable interrupts 5 and 3 only by any of the following
|
commands.
|
commands.
|
|
|
`spr PICMR 0x24'
|
`spr PICMR 0x24'
|
`spr PIC PICMR 0x24'
|
`spr PIC PICMR 0x24'
|
`spr PIC 0 0x24'
|
`spr PIC 0 0x24'
|
`spr 9 PICMR 0x24'
|
`spr 9 PICMR 0x24'
|
`spr 9 2 0x24'
|
`spr 9 2 0x24'
|
|
|
|
|
File: or1k.info, Node: OpenRISC 1000 Example, Next: OpenRISC 1000 Limitations, Prev: OpenRISC 1000 Specific Commands, Up: Top
|
File: or1k.info, Node: OpenRISC 1000 Example, Next: OpenRISC 1000 Limitations, Prev: OpenRISC 1000 Specific Commands, Up: Top
|
|
|
3 A Small Example
|
3 A Small Example
|
*****************
|
*****************
|
|
|
A simple "Hello World" program (what else) is used to show the basics
|
A simple "Hello World" program (what else) is used to show the basics
|
|
|
This is the cannonical small program. Here is the main program and
|
This is the cannonical small program. Here is the main program and
|
its two subprograms (added to demonstrate a meaningful backtrace).
|
its two subprograms (added to demonstrate a meaningful backtrace).
|
|
|
void level2() {
|
void level2() {
|
simexit( 0 );
|
simexit( 0 );
|
}
|
}
|
|
|
void level1() {
|
void level1() {
|
level2();
|
level2();
|
}
|
}
|
|
|
main()
|
main()
|
{
|
{
|
int i;
|
int i;
|
int j;
|
int j;
|
|
|
simputs( "Hello World!\n" );
|
simputs( "Hello World!\n" );
|
level1();
|
level1();
|
}
|
}
|
|
|
It is linked with a program providing the utility functions
|
It is linked with a program providing the utility functions
|
`simexit', `simputc' and `simprints'.
|
`simexit', `simputc' and `simprints'.
|
|
|
void simexit( int rc )
|
void simexit( int rc )
|
{
|
{
|
__asm__ __volatile__ ( "\tl.nop\t%0" : : "K"( NOP_EXIT ));
|
__asm__ __volatile__ ( "\tl.nop\t%0" : : "K"( NOP_EXIT ));
|
|
|
} /* simexit() */
|
} /* simexit() */
|
|
|
void simputc( int c )
|
void simputc( int c )
|
{
|
{
|
__asm__ __volatile__ ( "\tl.nop\t%0" : : "K"( NOP_PUTC ));
|
__asm__ __volatile__ ( "\tl.nop\t%0" : : "K"( NOP_PUTC ));
|
|
|
} /* simputc() */
|
} /* simputc() */
|
|
|
void simputs( char *str )
|
void simputs( char *str )
|
{
|
{
|
int i;
|
int i;
|
|
|
for( i = 0; str[i] != '\0' ; i++ ) {
|
for( i = 0; str[i] != '\0' ; i++ ) {
|
simputc( (int)(str[i]) );
|
simputc( (int)(str[i]) );
|
}
|
}
|
} /* simputs() */
|
} /* simputs() */
|
|
|
Finally, a small bootloader is needed, which will be placed at the
|
Finally, a small bootloader is needed, which will be placed at the
|
OpenRISC reset vector location (0x100) to set up a stack and jump to
|
OpenRISC reset vector location (0x100) to set up a stack and jump to
|
the main program.
|
the main program.
|
|
|
.org 0x100 # The reset routine goes at 0x100
|
.org 0x100 # The reset routine goes at 0x100
|
.global _start
|
.global _start
|
_start:
|
_start:
|
l.addi r1,r0,0x7f00 # Set SP to value 0x7f00
|
l.addi r1,r0,0x7f00 # Set SP to value 0x7f00
|
l.addi r2,r1,0x0 # FP and SP are the same
|
l.addi r2,r1,0x0 # FP and SP are the same
|
l.mfspr r3,r0,17 # Get SR value
|
l.mfspr r3,r0,17 # Get SR value
|
l.ori r3,r3,0x10 # Set exception enable bit
|
l.ori r3,r3,0x10 # Set exception enable bit
|
l.jal _main # Jump to main routine
|
l.jal _main # Jump to main routine
|
l.mtspr r0,r3,17 # Enable exceptions (DELAY SLOT)
|
l.mtspr r0,r3,17 # Enable exceptions (DELAY SLOT)
|
|
|
.org 0xFFC
|
.org 0xFFC
|
l.nop # Guarantee the exception vector space
|
l.nop # Guarantee the exception vector space
|
# does not have general purpose code
|
# does not have general purpose code
|
|
|
This is compiled and linked with the OpenRISC 1000 GNU toolchain.
|
This is compiled and linked with the OpenRISC 1000 GNU toolchain.
|
Note that the linking must specify the bootloader first and use the
|
Note that the linking must specify the bootloader first and use the
|
`-Ttext 0x0' argument.
|
`-Ttext 0x0' argument.
|
|
|
The Or1ksim architectural simulator is configured with memory
|
The Or1ksim architectural simulator is configured with memory
|
starting at location 0x0. The debugging interface is enabled by using a
|
starting at location 0x0. The debugging interface is enabled by using a
|
debug section.
|
debug section.
|
|
|
section debug
|
section debug
|
enabled = 1
|
enabled = 1
|
gdb_enabled = 1
|
gdb_enabled = 1
|
server_port = 50000
|
server_port = 50000
|
end
|
end
|
|
|
The architectural simulator is started in its own terminal window.
|
The architectural simulator is started in its own terminal window.
|
If the configuration is in `rsp.cfg', then the command might be:
|
If the configuration is in `rsp.cfg', then the command might be:
|
|
|
`or32-uclinux-sim -f rsp.cfg'
|
`or32-uclinux-sim -f rsp.cfg'
|
Reading script file from 'rsp.cfg'...
|
Reading script file from 'rsp.cfg'...
|
Building automata... done, num uncovered: 0/213.
|
Building automata... done, num uncovered: 0/213.
|
Parsing operands data... done.
|
Parsing operands data... done.
|
Resetting memory controller.
|
Resetting memory controller.
|
Resetting PIC.
|
Resetting PIC.
|
|
|
Note that no program is specified - that will be loaded from GDB.
|
Note that no program is specified - that will be loaded from GDB.
|
|
|
In a separate window start up GDB.
|
In a separate window start up GDB.
|
|
|
`or32-uclinux-gdb'
|
`or32-uclinux-gdb'
|
|
|
A local copy of the symbol table is needed, specified with the `file'
|
A local copy of the symbol table is needed, specified with the `file'
|
command.
|
command.
|
|
|
Building automata... done, num uncovered: 0/216.
|
Building automata... done, num uncovered: 0/216.
|
Parsing operands data... done.
|
Parsing operands data... done.
|
GNU gdb 6.8
|
GNU gdb 6.8
|
Copyright (C) 2008 Free Software Foundation, Inc.
|
Copyright (C) 2008 Free Software Foundation, Inc.
|
License GPLv3+: GNU GPL version 3 or later
|
License GPLv3+: GNU GPL version 3 or later
|
This is free software: you are free to change and redistribute it.
|
This is free software: you are free to change and redistribute it.
|
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
|
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
|
and "show warranty" for details.
|
and "show warranty" for details.
|
This GDB was configured as "--host=i686-pc-linux-gnu --target=or32-uclinux".
|
This GDB was configured as "--host=i686-pc-linux-gnu --target=or32-uclinux".
|
(gdb) `file hello'
|
(gdb) `file hello'
|
Reading symbols from /home/jeremy/svntrunk/GNU/gdb-6.8/progs_or32/hello...done.
|
Reading symbols from /home/jeremy/svntrunk/GNU/gdb-6.8/progs_or32/hello...done.
|
(gdb)
|
(gdb)
|
|
|
The connection to the target (the architectural simulator) is then
|
The connection to the target (the architectural simulator) is then
|
established, using the port number given in the configuration file.
|
established, using the port number given in the configuration file.
|
|
|
(gdb) `target remote :51000'
|
(gdb) `target remote :51000'
|
Remote debugging using :51000
|
Remote debugging using :51000
|
0x00000100 in _start ()
|
0x00000100 in _start ()
|
(gdb)
|
(gdb)
|
|
|
The program of interest can now be loaded:
|
The program of interest can now be loaded:
|
|
|
(gdb) `load hello'
|
(gdb) `load hello'
|
Loading section .text, size 0x1290 lma 0x0
|
Loading section .text, size 0x1290 lma 0x0
|
Loading section .rodata, size 0xe lma 0x1290
|
Loading section .rodata, size 0xe lma 0x1290
|
Start address 0x100, load size 4766
|
Start address 0x100, load size 4766
|
Transfer rate: 5 KB/sec, 238 bytes/write.
|
Transfer rate: 5 KB/sec, 238 bytes/write.
|
(gdb)
|
(gdb)
|
|
|
The program does not immediately start running, since on opening the
|
The program does not immediately start running, since on opening the
|
connection to the target, Or1ksim stalls.
|
connection to the target, Or1ksim stalls.
|
|
|
All the GDB commands (including the SPR commands are available). For
|
All the GDB commands (including the SPR commands are available). For
|
example
|
example
|
|
|
(gdb) `bt'
|
(gdb) `bt'
|
#0 0x00000100 in _start ()
|
#0 0x00000100 in _start ()
|
(gdb) `info spr 0 17'
|
(gdb) `info spr 0 17'
|
SYS.SR = SPR0_17 = 32769 (0x8001)
|
SYS.SR = SPR0_17 = 32769 (0x8001)
|
(gdb)
|
(gdb)
|
|
|
The Supervision Register shows the target is in Supervisor Mode and
|
The Supervision Register shows the target is in Supervisor Mode and
|
that SPRs have User Mode read access.
|
that SPRs have User Mode read access.
|
|
|
_Note._ The supervision register is used to provide the value for the
|
_Note._ The supervision register is used to provide the value for the
|
GDB `$ps' processor status variable, so can also be accessed as:
|
GDB `$ps' processor status variable, so can also be accessed as:
|
|
|
(gdb) `print $ps'
|
(gdb) `print $ps'
|
$1 = 32769
|
$1 = 32769
|
(gdb)
|
(gdb)
|
|
|
For this example set a breakpoint at the start of main and then
|
For this example set a breakpoint at the start of main and then
|
continue the program
|
continue the program
|
|
|
(gdb) `break main'
|
(gdb) `break main'
|
Breakpoint 1 at 0x1264: file hello.c, line 41.
|
Breakpoint 1 at 0x1264: file hello.c, line 41.
|
(gdb) `continue'
|
(gdb) `continue'
|
Continuing.
|
Continuing.
|
|
|
Breakpoint 1, main () at hello.c:41
|
Breakpoint 1, main () at hello.c:41
|
41 simputs( "Hello World!\n" );
|
41 simputs( "Hello World!\n" );
|
(gdb)
|
(gdb)
|
|
|
It is now possible to step through the code:
|
It is now possible to step through the code:
|
(gdb) `step'
|
(gdb) `step'
|
simputs (str=0x1290 "Hello World!\n") at utils.c:90
|
simputs (str=0x1290 "Hello World!\n") at utils.c:90
|
90 for( i = 0; str[i] != '\0' ; i++ ) {
|
90 for( i = 0; str[i] != '\0' ; i++ ) {
|
(gdb) `step'
|
(gdb) `step'
|
91 simputc( (int)(str[i]) );
|
91 simputc( (int)(str[i]) );
|
(gdb) `step'
|
(gdb) `step'
|
simputc (c=72) at utils.c:58
|
simputc (c=72) at utils.c:58
|
58 __asm__ __volatile__ ( "\tl.nop\t%0" : : "K"( NOP_PUTC ));
|
58 __asm__ __volatile__ ( "\tl.nop\t%0" : : "K"( NOP_PUTC ));
|
(gdb)
|
(gdb)
|
|
|
At this point a backtrace will show where the code has reached:
|
At this point a backtrace will show where the code has reached:
|
|
|
(gdb) `bt'
|
(gdb) `bt'
|
#0 simputc (c=72) at utils.c:58
|
#0 simputc (c=72) at utils.c:58
|
#1 0x000011cc in simputs (str=0x1290 "Hello World!\n") at utils.c:91
|
#1 0x000011cc in simputs (str=0x1290 "Hello World!\n") at utils.c:91
|
#2 0x00001274 in main () at hello.c:41
|
#2 0x00001274 in main () at hello.c:41
|
#3 0x00000118 in _start ()
|
#3 0x00000118 in _start ()
|
(gdb)
|
(gdb)
|
|
|
One more step completes the call to the character output routine.
|
One more step completes the call to the character output routine.
|
Inspecting the terminal running the Or1ksim simulation, shows the
|
Inspecting the terminal running the Or1ksim simulation, shows the
|
output appearing:
|
output appearing:
|
|
|
JTAG Proxy server started on port 50000
|
JTAG Proxy server started on port 50000
|
Resetting PIC.
|
Resetting PIC.
|
H
|
H
|
|
|
Let the program run to completion by giving GDB the continue command:
|
Let the program run to completion by giving GDB the continue command:
|
(gdb) `continue'
|
(gdb) `continue'
|
Continuing.
|
Continuing.
|
Remote connection closed
|
Remote connection closed
|
(gdb)
|
(gdb)
|
|
|
With completion of the program, the terminal running Or1ksim shows
|
With completion of the program, the terminal running Or1ksim shows
|
its final output:
|
its final output:
|
|
|
Resetting PIC.
|
Resetting PIC.
|
Hello World!
|
Hello World!
|
exit(0)
|
exit(0)
|
@reset : cycles 0, insn #0
|
@reset : cycles 0, insn #0
|
@exit : cycles 215892308, insn #215891696
|
@exit : cycles 215892308, insn #215891696
|
diff : cycles 215892308, insn #215891696
|
diff : cycles 215892308, insn #215891696
|
|
|
When execution exits (by execution of a `l.nop 1'), the connection
|
When execution exits (by execution of a `l.nop 1'), the connection
|
to the target is automatically broken as the simulator exits.
|
to the target is automatically broken as the simulator exits.
|
|
|
|
|
File: or1k.info, Node: OpenRISC 1000 Limitations, Next: Copying, Prev: OpenRISC 1000 Example, Up: Top
|
File: or1k.info, Node: OpenRISC 1000 Limitations, Next: Copying, Prev: OpenRISC 1000 Example, Up: Top
|
|
|
4 Known Problems
|
4 Known Problems
|
****************
|
****************
|
|
|
There are some known problems with the current implementation
|
There are some known problems with the current implementation
|
|
|
1. If the OpenRISC 1000 Architecture supports hardware watchpoints,
|
1. If the OpenRISC 1000 Architecture supports hardware watchpoints,
|
GDB will use them to implement hardware breakpoints and
|
GDB will use them to implement hardware breakpoints and
|
watchpoints. GDB is not perfect in handling of watchpoints. It is
|
watchpoints. GDB is not perfect in handling of watchpoints. It is
|
possible to allocate hardware watchpoints and not discover until
|
possible to allocate hardware watchpoints and not discover until
|
running that sufficient watchpoints are not available. It is also
|
running that sufficient watchpoints are not available. It is also
|
possible that GDB will report watchpoints being hit spuriously.
|
possible that GDB will report watchpoints being hit spuriously.
|
This can be down to the assembly code having additional memory
|
This can be down to the assembly code having additional memory
|
accesses that are not obviously reflected in the source code.
|
accesses that are not obviously reflected in the source code.
|
|
|
2. The remote JTAG connection is not robust to being interrupted, or
|
2. The remote JTAG connection is not robust to being interrupted, or
|
reconnecting. If the connection is lost due to error, then you
|
reconnecting. If the connection is lost due to error, then you
|
must restart GDB and the target server (for example the Or1ksim
|
must restart GDB and the target server (for example the Or1ksim
|
architectural simulator). Moving to the Remote Serial Protocol is
|
architectural simulator). Moving to the Remote Serial Protocol is
|
intended to remedy this problem in the future.
|
intended to remedy this problem in the future.
|
|
|
3. The OpenRISC 1000 architecture has evolved since the port of GDB
|
3. The OpenRISC 1000 architecture has evolved since the port of GDB
|
5.3 in 2001. In particular the structure of the Unit Present
|
5.3 in 2001. In particular the structure of the Unit Present
|
register has changed and the CPU Configuration register has been
|
register has changed and the CPU Configuration register has been
|
added. The port of GDB version 6.8 uses the _current_
|
added. The port of GDB version 6.8 uses the _current_
|
specification of the OpenRISC 1000. This means that old clients
|
specification of the OpenRISC 1000. This means that old clients
|
that talk to the debugger may not work. In particular the Or1ksim
|
that talk to the debugger may not work. In particular the Or1ksim
|
Architectural simulator requires a patch to work.
|
Architectural simulator requires a patch to work.
|
|
|
4. The handling of watchpoints in the Or1ksim architectural simulator
|
4. The handling of watchpoints in the Or1ksim architectural simulator
|
was incorrect. To work with GDB 6.8, a patch is required to fix
|
was incorrect. To work with GDB 6.8, a patch is required to fix
|
this problem. This is combined with the patch changing the
|
this problem. This is combined with the patch changing the
|
structure of the Unit Present and CPU Configuration registers.
|
structure of the Unit Present and CPU Configuration registers.
|
|
|
5. The OpenRISC 1000 architecture uses its General Purpose Register
|
5. The OpenRISC 1000 architecture uses its General Purpose Register
|
(GPR) 2 as a frame pointer register. However the `$fp' variable in
|
(GPR) 2 as a frame pointer register. However the `$fp' variable in
|
GDB is not currently implemented, and will return the value of the
|
GDB is not currently implemented, and will return the value of the
|
stack pointer (GPR 1) instead.
|
stack pointer (GPR 1) instead.
|
|
|
Reports of bugs are much welcomed. Please report problems through the
|
Reports of bugs are much welcomed. Please report problems through the
|
OpenCORES tracker at `www.opencores.org/ptracker.cgi/list/or1k'.
|
OpenCORES tracker at `www.opencores.org/ptracker.cgi/list/or1k'.
|
|
|
|
|
File: or1k.info, Node: Copying, Next: GNU Free Documentation License, Prev: OpenRISC 1000 Limitations, Up: Top
|
File: or1k.info, Node: Copying, Next: GNU Free Documentation License, Prev: OpenRISC 1000 Limitations, Up: Top
|
|
|
Appendix A GNU GENERAL PUBLIC LICENSE
|
Appendix A GNU GENERAL PUBLIC LICENSE
|
*************************************
|
*************************************
|
|
|
Version 2, June 1991
|
Version 2, June 1991
|
|
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
|
|
Preamble
|
Preamble
|
========
|
========
|
|
|
The licenses for most software are designed to take away your freedom
|
The licenses for most software are designed to take away your freedom
|
to share and change it. By contrast, the GNU General Public License is
|
to share and change it. By contrast, the GNU General Public License is
|
intended to guarantee your freedom to share and change free
|
intended to guarantee your freedom to share and change free
|
software--to make sure the software is free for all its users. This
|
software--to make sure the software is free for all its users. This
|
General Public License applies to most of the Free Software
|
General Public License applies to most of the Free Software
|
Foundation's software and to any other program whose authors commit to
|
Foundation's software and to any other program whose authors commit to
|
using it. (Some other Free Software Foundation software is covered by
|
using it. (Some other Free Software Foundation software is covered by
|
the GNU Library General Public License instead.) You can apply it to
|
the GNU Library General Public License instead.) You can apply it to
|
your programs, too.
|
your programs, too.
|
|
|
When we speak of free software, we are referring to freedom, not
|
When we speak of free software, we are referring to freedom, not
|
price. Our General Public Licenses are designed to make sure that you
|
price. Our General Public Licenses are designed to make sure that you
|
have the freedom to distribute copies of free software (and charge for
|
have the freedom to distribute copies of free software (and charge for
|
this service if you wish), that you receive source code or can get it
|
this service if you wish), that you receive source code or can get it
|
if you want it, that you can change the software or use pieces of it in
|
if you want it, that you can change the software or use pieces of it in
|
new free programs; and that you know you can do these things.
|
new free programs; and that you know you can do these things.
|
|
|
To protect your rights, we need to make restrictions that forbid
|
To protect your rights, we need to make restrictions that forbid
|
anyone to deny you these rights or to ask you to surrender the rights.
|
anyone to deny you these rights or to ask you to surrender the rights.
|
These restrictions translate to certain responsibilities for you if you
|
These restrictions translate to certain responsibilities for you if you
|
distribute copies of the software, or if you modify it.
|
distribute copies of the software, or if you modify it.
|
|
|
For example, if you distribute copies of such a program, whether
|
For example, if you distribute copies of such a program, whether
|
gratis or for a fee, you must give the recipients all the rights that
|
gratis or for a fee, you must give the recipients all the rights that
|
you have. You must make sure that they, too, receive or can get the
|
you have. You must make sure that they, too, receive or can get the
|
source code. And you must show them these terms so they know their
|
source code. And you must show them these terms so they know their
|
rights.
|
rights.
|
|
|
We protect your rights with two steps: (1) copyright the software,
|
We protect your rights with two steps: (1) copyright the software,
|
and (2) offer you this license which gives you legal permission to copy,
|
and (2) offer you this license which gives you legal permission to copy,
|
distribute and/or modify the software.
|
distribute and/or modify the software.
|
|
|
Also, for each author's protection and ours, we want to make certain
|
Also, for each author's protection and ours, we want to make certain
|
that everyone understands that there is no warranty for this free
|
that everyone understands that there is no warranty for this free
|
software. If the software is modified by someone else and passed on, we
|
software. If the software is modified by someone else and passed on, we
|
want its recipients to know that what they have is not the original, so
|
want its recipients to know that what they have is not the original, so
|
that any problems introduced by others will not reflect on the original
|
that any problems introduced by others will not reflect on the original
|
authors' reputations.
|
authors' reputations.
|
|
|
Finally, any free program is threatened constantly by software
|
Finally, any free program is threatened constantly by software
|
patents. We wish to avoid the danger that redistributors of a free
|
patents. We wish to avoid the danger that redistributors of a free
|
program will individually obtain patent licenses, in effect making the
|
program will individually obtain patent licenses, in effect making the
|
program proprietary. To prevent this, we have made it clear that any
|
program proprietary. To prevent this, we have made it clear that any
|
patent must be licensed for everyone's free use or not licensed at all.
|
patent must be licensed for everyone's free use or not licensed at all.
|
|
|
The precise terms and conditions for copying, distribution and
|
The precise terms and conditions for copying, distribution and
|
modification follow.
|
modification follow.
|
|
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
0. This License applies to any program or other work which contains a
|
0. This License applies to any program or other work which contains a
|
notice placed by the copyright holder saying it may be distributed
|
notice placed by the copyright holder saying it may be distributed
|
under the terms of this General Public License. The "Program",
|
under the terms of this General Public License. The "Program",
|
below, refers to any such program or work, and a "work based on
|
below, refers to any such program or work, and a "work based on
|
the Program" means either the Program or any derivative work under
|
the Program" means either the Program or any derivative work under
|
copyright law: that is to say, a work containing the Program or a
|
copyright law: that is to say, a work containing the Program or a
|
portion of it, either verbatim or with modifications and/or
|
portion of it, either verbatim or with modifications and/or
|
translated into another language. (Hereinafter, translation is
|
translated into another language. (Hereinafter, translation is
|
included without limitation in the term "modification".) Each
|
included without limitation in the term "modification".) Each
|
licensee is addressed as "you".
|
licensee is addressed as "you".
|
|
|
Activities other than copying, distribution and modification are
|
Activities other than copying, distribution and modification are
|
not covered by this License; they are outside its scope. The act
|
not covered by this License; they are outside its scope. The act
|
of running the Program is not restricted, and the output from the
|
of running the Program is not restricted, and the output from the
|
Program is covered only if its contents constitute a work based on
|
Program is covered only if its contents constitute a work based on
|
the Program (independent of having been made by running the
|
the Program (independent of having been made by running the
|
Program). Whether that is true depends on what the Program does.
|
Program). Whether that is true depends on what the Program does.
|
|
|
1. You may copy and distribute verbatim copies of the Program's
|
1. You may copy and distribute verbatim copies of the Program's
|
source code as you receive it, in any medium, provided that you
|
source code as you receive it, in any medium, provided that you
|
conspicuously and appropriately publish on each copy an appropriate
|
conspicuously and appropriately publish on each copy an appropriate
|
copyright notice and disclaimer of warranty; keep intact all the
|
copyright notice and disclaimer of warranty; keep intact all the
|
notices that refer to this License and to the absence of any
|
notices that refer to this License and to the absence of any
|
warranty; and give any other recipients of the Program a copy of
|
warranty; and give any other recipients of the Program a copy of
|
this License along with the Program.
|
this License along with the Program.
|
|
|
You may charge a fee for the physical act of transferring a copy,
|
You may charge a fee for the physical act of transferring a copy,
|
and you may at your option offer warranty protection in exchange
|
and you may at your option offer warranty protection in exchange
|
for a fee.
|
for a fee.
|
|
|
2. You may modify your copy or copies of the Program or any portion
|
2. You may modify your copy or copies of the Program or any portion
|
of it, thus forming a work based on the Program, and copy and
|
of it, thus forming a work based on the Program, and copy and
|
distribute such modifications or work under the terms of Section 1
|
distribute such modifications or work under the terms of Section 1
|
above, provided that you also meet all of these conditions:
|
above, provided that you also meet all of these conditions:
|
|
|
a. You must cause the modified files to carry prominent notices
|
a. You must cause the modified files to carry prominent notices
|
stating that you changed the files and the date of any change.
|
stating that you changed the files and the date of any change.
|
|
|
b. You must cause any work that you distribute or publish, that
|
b. You must cause any work that you distribute or publish, that
|
in whole or in part contains or is derived from the Program
|
in whole or in part contains or is derived from the Program
|
or any part thereof, to be licensed as a whole at no charge
|
or any part thereof, to be licensed as a whole at no charge
|
to all third parties under the terms of this License.
|
to all third parties under the terms of this License.
|
|
|
c. If the modified program normally reads commands interactively
|
c. If the modified program normally reads commands interactively
|
when run, you must cause it, when started running for such
|
when run, you must cause it, when started running for such
|
interactive use in the most ordinary way, to print or display
|
interactive use in the most ordinary way, to print or display
|
an announcement including an appropriate copyright notice and
|
an announcement including an appropriate copyright notice and
|
a notice that there is no warranty (or else, saying that you
|
a notice that there is no warranty (or else, saying that you
|
provide a warranty) and that users may redistribute the
|
provide a warranty) and that users may redistribute the
|
program under these conditions, and telling the user how to
|
program under these conditions, and telling the user how to
|
view a copy of this License. (Exception: if the Program
|
view a copy of this License. (Exception: if the Program
|
itself is interactive but does not normally print such an
|
itself is interactive but does not normally print such an
|
announcement, your work based on the Program is not required
|
announcement, your work based on the Program is not required
|
to print an announcement.)
|
to print an announcement.)
|
|
|
These requirements apply to the modified work as a whole. If
|
These requirements apply to the modified work as a whole. If
|
identifiable sections of that work are not derived from the
|
identifiable sections of that work are not derived from the
|
Program, and can be reasonably considered independent and separate
|
Program, and can be reasonably considered independent and separate
|
works in themselves, then this License, and its terms, do not
|
works in themselves, then this License, and its terms, do not
|
apply to those sections when you distribute them as separate
|
apply to those sections when you distribute them as separate
|
works. But when you distribute the same sections as part of a
|
works. But when you distribute the same sections as part of a
|
whole which is a work based on the Program, the distribution of
|
whole which is a work based on the Program, the distribution of
|
the whole must be on the terms of this License, whose permissions
|
the whole must be on the terms of this License, whose permissions
|
for other licensees extend to the entire whole, and thus to each
|
for other licensees extend to the entire whole, and thus to each
|
and every part regardless of who wrote it.
|
and every part regardless of who wrote it.
|
|
|
Thus, it is not the intent of this section to claim rights or
|
Thus, it is not the intent of this section to claim rights or
|
contest your rights to work written entirely by you; rather, the
|
contest your rights to work written entirely by you; rather, the
|
intent is to exercise the right to control the distribution of
|
intent is to exercise the right to control the distribution of
|
derivative or collective works based on the Program.
|
derivative or collective works based on the Program.
|
|
|
In addition, mere aggregation of another work not based on the
|
In addition, mere aggregation of another work not based on the
|
Program with the Program (or with a work based on the Program) on
|
Program with the Program (or with a work based on the Program) on
|
a volume of a storage or distribution medium does not bring the
|
a volume of a storage or distribution medium does not bring the
|
other work under the scope of this License.
|
other work under the scope of this License.
|
|
|
3. You may copy and distribute the Program (or a work based on it,
|
3. You may copy and distribute the Program (or a work based on it,
|
under Section 2) in object code or executable form under the terms
|
under Section 2) in object code or executable form under the terms
|
of Sections 1 and 2 above provided that you also do one of the
|
of Sections 1 and 2 above provided that you also do one of the
|
following:
|
following:
|
|
|
a. Accompany it with the complete corresponding machine-readable
|
a. Accompany it with the complete corresponding machine-readable
|
source code, which must be distributed under the terms of
|
source code, which must be distributed under the terms of
|
Sections 1 and 2 above on a medium customarily used for
|
Sections 1 and 2 above on a medium customarily used for
|
software interchange; or,
|
software interchange; or,
|
|
|
b. Accompany it with a written offer, valid for at least three
|
b. Accompany it with a written offer, valid for at least three
|
years, to give any third party, for a charge no more than your
|
years, to give any third party, for a charge no more than your
|
cost of physically performing source distribution, a complete
|
cost of physically performing source distribution, a complete
|
machine-readable copy of the corresponding source code, to be
|
machine-readable copy of the corresponding source code, to be
|
distributed under the terms of Sections 1 and 2 above on a
|
distributed under the terms of Sections 1 and 2 above on a
|
medium customarily used for software interchange; or,
|
medium customarily used for software interchange; or,
|
|
|
c. Accompany it with the information you received as to the offer
|
c. Accompany it with the information you received as to the offer
|
to distribute corresponding source code. (This alternative is
|
to distribute corresponding source code. (This alternative is
|
allowed only for noncommercial distribution and only if you
|
allowed only for noncommercial distribution and only if you
|
received the program in object code or executable form with
|
received the program in object code or executable form with
|
such an offer, in accord with Subsection b above.)
|
such an offer, in accord with Subsection b above.)
|
|
|
The source code for a work means the preferred form of the work for
|
The source code for a work means the preferred form of the work for
|
making modifications to it. For an executable work, complete
|
making modifications to it. For an executable work, complete
|
source code means all the source code for all modules it contains,
|
source code means all the source code for all modules it contains,
|
plus any associated interface definition files, plus the scripts
|
plus any associated interface definition files, plus the scripts
|
used to control compilation and installation of the executable.
|
used to control compilation and installation of the executable.
|
However, as a special exception, the source code distributed need
|
However, as a special exception, the source code distributed need
|
not include anything that is normally distributed (in either
|
not include anything that is normally distributed (in either
|
source or binary form) with the major components (compiler,
|
source or binary form) with the major components (compiler,
|
kernel, and so on) of the operating system on which the executable
|
kernel, and so on) of the operating system on which the executable
|
runs, unless that component itself accompanies the executable.
|
runs, unless that component itself accompanies the executable.
|
|
|
If distribution of executable or object code is made by offering
|
If distribution of executable or object code is made by offering
|
access to copy from a designated place, then offering equivalent
|
access to copy from a designated place, then offering equivalent
|
access to copy the source code from the same place counts as
|
access to copy the source code from the same place counts as
|
distribution of the source code, even though third parties are not
|
distribution of the source code, even though third parties are not
|
compelled to copy the source along with the object code.
|
compelled to copy the source along with the object code.
|
|
|
4. You may not copy, modify, sublicense, or distribute the Program
|
4. You may not copy, modify, sublicense, or distribute the Program
|
except as expressly provided under this License. Any attempt
|
except as expressly provided under this License. Any attempt
|
otherwise to copy, modify, sublicense or distribute the Program is
|
otherwise to copy, modify, sublicense or distribute the Program is
|
void, and will automatically terminate your rights under this
|
void, and will automatically terminate your rights under this
|
License. However, parties who have received copies, or rights,
|
License. However, parties who have received copies, or rights,
|
from you under this License will not have their licenses
|
from you under this License will not have their licenses
|
terminated so long as such parties remain in full compliance.
|
terminated so long as such parties remain in full compliance.
|
|
|
5. You are not required to accept this License, since you have not
|
5. You are not required to accept this License, since you have not
|
signed it. However, nothing else grants you permission to modify
|
signed it. However, nothing else grants you permission to modify
|
or distribute the Program or its derivative works. These actions
|
or distribute the Program or its derivative works. These actions
|
are prohibited by law if you do not accept this License.
|
are prohibited by law if you do not accept this License.
|
Therefore, by modifying or distributing the Program (or any work
|
Therefore, by modifying or distributing the Program (or any work
|
based on the Program), you indicate your acceptance of this
|
based on the Program), you indicate your acceptance of this
|
License to do so, and all its terms and conditions for copying,
|
License to do so, and all its terms and conditions for copying,
|
distributing or modifying the Program or works based on it.
|
distributing or modifying the Program or works based on it.
|
|
|
6. Each time you redistribute the Program (or any work based on the
|
6. Each time you redistribute the Program (or any work based on the
|
Program), the recipient automatically receives a license from the
|
Program), the recipient automatically receives a license from the
|
original licensor to copy, distribute or modify the Program
|
original licensor to copy, distribute or modify the Program
|
subject to these terms and conditions. You may not impose any
|
subject to these terms and conditions. You may not impose any
|
further restrictions on the recipients' exercise of the rights
|
further restrictions on the recipients' exercise of the rights
|
granted herein. You are not responsible for enforcing compliance
|
granted herein. You are not responsible for enforcing compliance
|
by third parties to this License.
|
by third parties to this License.
|
|
|
7. If, as a consequence of a court judgment or allegation of patent
|
7. If, as a consequence of a court judgment or allegation of patent
|
infringement or for any other reason (not limited to patent
|
infringement or for any other reason (not limited to patent
|
issues), conditions are imposed on you (whether by court order,
|
issues), conditions are imposed on you (whether by court order,
|
agreement or otherwise) that contradict the conditions of this
|
agreement or otherwise) that contradict the conditions of this
|
License, they do not excuse you from the conditions of this
|
License, they do not excuse you from the conditions of this
|
License. If you cannot distribute so as to satisfy simultaneously
|
License. If you cannot distribute so as to satisfy simultaneously
|
your obligations under this License and any other pertinent
|
your obligations under this License and any other pertinent
|
obligations, then as a consequence you may not distribute the
|
obligations, then as a consequence you may not distribute the
|
Program at all. For example, if a patent license would not permit
|
Program at all. For example, if a patent license would not permit
|
royalty-free redistribution of the Program by all those who
|
royalty-free redistribution of the Program by all those who
|
receive copies directly or indirectly through you, then the only
|
receive copies directly or indirectly through you, then the only
|
way you could satisfy both it and this License would be to refrain
|
way you could satisfy both it and this License would be to refrain
|
entirely from distribution of the Program.
|
entirely from distribution of the Program.
|
|
|
If any portion of this section is held invalid or unenforceable
|
If any portion of this section is held invalid or unenforceable
|
under any particular circumstance, the balance of the section is
|
under any particular circumstance, the balance of the section is
|
intended to apply and the section as a whole is intended to apply
|
intended to apply and the section as a whole is intended to apply
|
in other circumstances.
|
in other circumstances.
|
|
|
It is not the purpose of this section to induce you to infringe any
|
It is not the purpose of this section to induce you to infringe any
|
patents or other property right claims or to contest validity of
|
patents or other property right claims or to contest validity of
|
any such claims; this section has the sole purpose of protecting
|
any such claims; this section has the sole purpose of protecting
|
the integrity of the free software distribution system, which is
|
the integrity of the free software distribution system, which is
|
implemented by public license practices. Many people have made
|
implemented by public license practices. Many people have made
|
generous contributions to the wide range of software distributed
|
generous contributions to the wide range of software distributed
|
through that system in reliance on consistent application of that
|
through that system in reliance on consistent application of that
|
system; it is up to the author/donor to decide if he or she is
|
system; it is up to the author/donor to decide if he or she is
|
willing to distribute software through any other system and a
|
willing to distribute software through any other system and a
|
licensee cannot impose that choice.
|
licensee cannot impose that choice.
|
|
|
This section is intended to make thoroughly clear what is believed
|
This section is intended to make thoroughly clear what is believed
|
to be a consequence of the rest of this License.
|
to be a consequence of the rest of this License.
|
|
|
8. If the distribution and/or use of the Program is restricted in
|
8. If the distribution and/or use of the Program is restricted in
|
certain countries either by patents or by copyrighted interfaces,
|
certain countries either by patents or by copyrighted interfaces,
|
the original copyright holder who places the Program under this
|
the original copyright holder who places the Program under this
|
License may add an explicit geographical distribution limitation
|
License may add an explicit geographical distribution limitation
|
excluding those countries, so that distribution is permitted only
|
excluding those countries, so that distribution is permitted only
|
in or among countries not thus excluded. In such case, this
|
in or among countries not thus excluded. In such case, this
|
License incorporates the limitation as if written in the body of
|
License incorporates the limitation as if written in the body of
|
this License.
|
this License.
|
|
|
9. The Free Software Foundation may publish revised and/or new
|
9. The Free Software Foundation may publish revised and/or new
|
versions of the General Public License from time to time. Such
|
versions of the General Public License from time to time. Such
|
new versions will be similar in spirit to the present version, but
|
new versions will be similar in spirit to the present version, but
|
may differ in detail to address new problems or concerns.
|
may differ in detail to address new problems or concerns.
|
|
|
Each version is given a distinguishing version number. If the
|
Each version is given a distinguishing version number. If the
|
Program specifies a version number of this License which applies
|
Program specifies a version number of this License which applies
|
to it and "any later version", you have the option of following
|
to it and "any later version", you have the option of following
|
the terms and conditions either of that version or of any later
|
the terms and conditions either of that version or of any later
|
version published by the Free Software Foundation. If the Program
|
version published by the Free Software Foundation. If the Program
|
does not specify a version number of this License, you may choose
|
does not specify a version number of this License, you may choose
|
any version ever published by the Free Software Foundation.
|
any version ever published by the Free Software Foundation.
|
|
|
10. If you wish to incorporate parts of the Program into other free
|
10. If you wish to incorporate parts of the Program into other free
|
programs whose distribution conditions are different, write to the
|
programs whose distribution conditions are different, write to the
|
author to ask for permission. For software which is copyrighted
|
author to ask for permission. For software which is copyrighted
|
by the Free Software Foundation, write to the Free Software
|
by the Free Software Foundation, write to the Free Software
|
Foundation; we sometimes make exceptions for this. Our decision
|
Foundation; we sometimes make exceptions for this. Our decision
|
will be guided by the two goals of preserving the free status of
|
will be guided by the two goals of preserving the free status of
|
all derivatives of our free software and of promoting the sharing
|
all derivatives of our free software and of promoting the sharing
|
and reuse of software generally.
|
and reuse of software generally.
|
|
|
NO WARRANTY
|
NO WARRANTY
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
|
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
|
WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
|
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
|
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
|
WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
|
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
|
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
|
QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
|
SERVICING, REPAIR OR CORRECTION.
|
SERVICING, REPAIR OR CORRECTION.
|
|
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
|
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
|
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
|
MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
|
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
|
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
|
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
|
OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
|
OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
|
OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
|
OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
|
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
How to Apply These Terms to Your New Programs
|
How to Apply These Terms to Your New Programs
|
=============================================
|
=============================================
|
|
|
If you develop a new program, and you want it to be of the greatest
|
If you develop a new program, and you want it to be of the greatest
|
possible use to the public, the best way to achieve this is to make it
|
possible use to the public, the best way to achieve this is to make it
|
free software which everyone can redistribute and change under these
|
free software which everyone can redistribute and change under these
|
terms.
|
terms.
|
|
|
To do so, attach the following notices to the program. It is safest
|
To do so, attach the following notices to the program. It is safest
|
to attach them to the start of each source file to most effectively
|
to attach them to the start of each source file to most effectively
|
convey the exclusion of warranty; and each file should have at least
|
convey the exclusion of warranty; and each file should have at least
|
the "copyright" line and a pointer to where the full notice is found.
|
the "copyright" line and a pointer to where the full notice is found.
|
|
|
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
|
ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
|
Copyright (C) YEAR NAME OF AUTHOR
|
Copyright (C) YEAR NAME OF AUTHOR
|
|
|
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
the Free Software Foundation; either version 2 of the License, or
|
the Free Software Foundation; either version 2 of the License, or
|
(at your option) any later version.
|
(at your option) any later version.
|
|
|
This program is distributed in the hope that it will be useful,
|
This program is distributed in the hope that it will be useful,
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
GNU General Public License for more details.
|
GNU General Public License for more details.
|
|
|
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
Boston, MA 02110-1301, USA.
|
Boston, MA 02110-1301, USA.
|
|
|
Also add information on how to contact you by electronic and paper
|
Also add information on how to contact you by electronic and paper
|
mail.
|
mail.
|
|
|
If the program is interactive, make it output a short notice like
|
If the program is interactive, make it output a short notice like
|
this when it starts in an interactive mode:
|
this when it starts in an interactive mode:
|
|
|
Gnomovision version 69, Copyright (C) YEAR NAME OF AUTHOR
|
Gnomovision version 69, Copyright (C) YEAR NAME OF AUTHOR
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
|
type `show w'.
|
type `show w'.
|
This is free software, and you are welcome to redistribute it
|
This is free software, and you are welcome to redistribute it
|
under certain conditions; type `show c' for details.
|
under certain conditions; type `show c' for details.
|
|
|
The hypothetical commands `show w' and `show c' should show the
|
The hypothetical commands `show w' and `show c' should show the
|
appropriate parts of the General Public License. Of course, the
|
appropriate parts of the General Public License. Of course, the
|
commands you use may be called something other than `show w' and `show
|
commands you use may be called something other than `show w' and `show
|
c'; they could even be mouse-clicks or menu items--whatever suits your
|
c'; they could even be mouse-clicks or menu items--whatever suits your
|
program.
|
program.
|
|
|
You should also get your employer (if you work as a programmer) or
|
You should also get your employer (if you work as a programmer) or
|
your school, if any, to sign a "copyright disclaimer" for the program,
|
your school, if any, to sign a "copyright disclaimer" for the program,
|
if necessary. Here is a sample; alter the names:
|
if necessary. Here is a sample; alter the names:
|
|
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
|
|
SIGNATURE OF TY COON, 1 April 1989
|
SIGNATURE OF TY COON, 1 April 1989
|
Ty Coon, President of Vice
|
Ty Coon, President of Vice
|
|
|
This General Public License does not permit incorporating your
|
This General Public License does not permit incorporating your
|
program into proprietary programs. If your program is a subroutine
|
program into proprietary programs. If your program is a subroutine
|
library, you may consider it more useful to permit linking proprietary
|
library, you may consider it more useful to permit linking proprietary
|
applications with the library. If this is what you want to do, use the
|
applications with the library. If this is what you want to do, use the
|
GNU Library General Public License instead of this License.
|
GNU Library General Public License instead of this License.
|
|
|
|
|
File: or1k.info, Node: GNU Free Documentation License, Next: Index, Prev: Copying, Up: Top
|
File: or1k.info, Node: GNU Free Documentation License, Next: Index, Prev: Copying, Up: Top
|
|
|
Appendix B GNU Free Documentation License
|
Appendix B GNU Free Documentation License
|
*****************************************
|
*****************************************
|
|
|
Version 1.2, November 2002
|
Version 1.2, November 2002
|
|
|
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
Everyone is permitted to copy and distribute verbatim copies
|
Everyone is permitted to copy and distribute verbatim copies
|
of this license document, but changing it is not allowed.
|
of this license document, but changing it is not allowed.
|
|
|
0. PREAMBLE
|
0. PREAMBLE
|
|
|
The purpose of this License is to make a manual, textbook, or other
|
The purpose of this License is to make a manual, textbook, or other
|
functional and useful document "free" in the sense of freedom: to
|
functional and useful document "free" in the sense of freedom: to
|
assure everyone the effective freedom to copy and redistribute it,
|
assure everyone the effective freedom to copy and redistribute it,
|
with or without modifying it, either commercially or
|
with or without modifying it, either commercially or
|
noncommercially. Secondarily, this License preserves for the
|
noncommercially. Secondarily, this License preserves for the
|
author and publisher a way to get credit for their work, while not
|
author and publisher a way to get credit for their work, while not
|
being considered responsible for modifications made by others.
|
being considered responsible for modifications made by others.
|
|
|
This License is a kind of "copyleft", which means that derivative
|
This License is a kind of "copyleft", which means that derivative
|
works of the document must themselves be free in the same sense.
|
works of the document must themselves be free in the same sense.
|
It complements the GNU General Public License, which is a copyleft
|
It complements the GNU General Public License, which is a copyleft
|
license designed for free software.
|
license designed for free software.
|
|
|
We have designed this License in order to use it for manuals for
|
We have designed this License in order to use it for manuals for
|
free software, because free software needs free documentation: a
|
free software, because free software needs free documentation: a
|
free program should come with manuals providing the same freedoms
|
free program should come with manuals providing the same freedoms
|
that the software does. But this License is not limited to
|
that the software does. But this License is not limited to
|
software manuals; it can be used for any textual work, regardless
|
software manuals; it can be used for any textual work, regardless
|
of subject matter or whether it is published as a printed book.
|
of subject matter or whether it is published as a printed book.
|
We recommend this License principally for works whose purpose is
|
We recommend this License principally for works whose purpose is
|
instruction or reference.
|
instruction or reference.
|
|
|
1. APPLICABILITY AND DEFINITIONS
|
1. APPLICABILITY AND DEFINITIONS
|
|
|
This License applies to any manual or other work, in any medium,
|
This License applies to any manual or other work, in any medium,
|
that contains a notice placed by the copyright holder saying it
|
that contains a notice placed by the copyright holder saying it
|
can be distributed under the terms of this License. Such a notice
|
can be distributed under the terms of this License. Such a notice
|
grants a world-wide, royalty-free license, unlimited in duration,
|
grants a world-wide, royalty-free license, unlimited in duration,
|
to use that work under the conditions stated herein. The
|
to use that work under the conditions stated herein. The
|
"Document", below, refers to any such manual or work. Any member
|
"Document", below, refers to any such manual or work. Any member
|
of the public is a licensee, and is addressed as "you". You
|
of the public is a licensee, and is addressed as "you". You
|
accept the license if you copy, modify or distribute the work in a
|
accept the license if you copy, modify or distribute the work in a
|
way requiring permission under copyright law.
|
way requiring permission under copyright law.
|
|
|
A "Modified Version" of the Document means any work containing the
|
A "Modified Version" of the Document means any work containing the
|
Document or a portion of it, either copied verbatim, or with
|
Document or a portion of it, either copied verbatim, or with
|
modifications and/or translated into another language.
|
modifications and/or translated into another language.
|
|
|
A "Secondary Section" is a named appendix or a front-matter section
|
A "Secondary Section" is a named appendix or a front-matter section
|
of the Document that deals exclusively with the relationship of the
|
of the Document that deals exclusively with the relationship of the
|
publishers or authors of the Document to the Document's overall
|
publishers or authors of the Document to the Document's overall
|
subject (or to related matters) and contains nothing that could
|
subject (or to related matters) and contains nothing that could
|
fall directly within that overall subject. (Thus, if the Document
|
fall directly within that overall subject. (Thus, if the Document
|
is in part a textbook of mathematics, a Secondary Section may not
|
is in part a textbook of mathematics, a Secondary Section may not
|
explain any mathematics.) The relationship could be a matter of
|
explain any mathematics.) The relationship could be a matter of
|
historical connection with the subject or with related matters, or
|
historical connection with the subject or with related matters, or
|
of legal, commercial, philosophical, ethical or political position
|
of legal, commercial, philosophical, ethical or political position
|
regarding them.
|
regarding them.
|
|
|
The "Invariant Sections" are certain Secondary Sections whose
|
The "Invariant Sections" are certain Secondary Sections whose
|
titles are designated, as being those of Invariant Sections, in
|
titles are designated, as being those of Invariant Sections, in
|
the notice that says that the Document is released under this
|
the notice that says that the Document is released under this
|
License. If a section does not fit the above definition of
|
License. If a section does not fit the above definition of
|
Secondary then it is not allowed to be designated as Invariant.
|
Secondary then it is not allowed to be designated as Invariant.
|
The Document may contain zero Invariant Sections. If the Document
|
The Document may contain zero Invariant Sections. If the Document
|
does not identify any Invariant Sections then there are none.
|
does not identify any Invariant Sections then there are none.
|
|
|
The "Cover Texts" are certain short passages of text that are
|
The "Cover Texts" are certain short passages of text that are
|
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
listed, as Front-Cover Texts or Back-Cover Texts, in the notice
|
that says that the Document is released under this License. A
|
that says that the Document is released under this License. A
|
Front-Cover Text may be at most 5 words, and a Back-Cover Text may
|
Front-Cover Text may be at most 5 words, and a Back-Cover Text may
|
be at most 25 words.
|
be at most 25 words.
|
|
|
A "Transparent" copy of the Document means a machine-readable copy,
|
A "Transparent" copy of the Document means a machine-readable copy,
|
represented in a format whose specification is available to the
|
represented in a format whose specification is available to the
|
general public, that is suitable for revising the document
|
general public, that is suitable for revising the document
|
straightforwardly with generic text editors or (for images
|
straightforwardly with generic text editors or (for images
|
composed of pixels) generic paint programs or (for drawings) some
|
composed of pixels) generic paint programs or (for drawings) some
|
widely available drawing editor, and that is suitable for input to
|
widely available drawing editor, and that is suitable for input to
|
text formatters or for automatic translation to a variety of
|
text formatters or for automatic translation to a variety of
|
formats suitable for input to text formatters. A copy made in an
|
formats suitable for input to text formatters. A copy made in an
|
otherwise Transparent file format whose markup, or absence of
|
otherwise Transparent file format whose markup, or absence of
|
markup, has been arranged to thwart or discourage subsequent
|
markup, has been arranged to thwart or discourage subsequent
|
modification by readers is not Transparent. An image format is
|
modification by readers is not Transparent. An image format is
|
not Transparent if used for any substantial amount of text. A
|
not Transparent if used for any substantial amount of text. A
|
copy that is not "Transparent" is called "Opaque".
|
copy that is not "Transparent" is called "Opaque".
|
|
|
Examples of suitable formats for Transparent copies include plain
|
Examples of suitable formats for Transparent copies include plain
|
ASCII without markup, Texinfo input format, LaTeX input format,
|
ASCII without markup, Texinfo input format, LaTeX input format,
|
SGML or XML using a publicly available DTD, and
|
SGML or XML using a publicly available DTD, and
|
standard-conforming simple HTML, PostScript or PDF designed for
|
standard-conforming simple HTML, PostScript or PDF designed for
|
human modification. Examples of transparent image formats include
|
human modification. Examples of transparent image formats include
|
PNG, XCF and JPG. Opaque formats include proprietary formats that
|
PNG, XCF and JPG. Opaque formats include proprietary formats that
|
can be read and edited only by proprietary word processors, SGML or
|
can be read and edited only by proprietary word processors, SGML or
|
XML for which the DTD and/or processing tools are not generally
|
XML for which the DTD and/or processing tools are not generally
|
available, and the machine-generated HTML, PostScript or PDF
|
available, and the machine-generated HTML, PostScript or PDF
|
produced by some word processors for output purposes only.
|
produced by some word processors for output purposes only.
|
|
|
The "Title Page" means, for a printed book, the title page itself,
|
The "Title Page" means, for a printed book, the title page itself,
|
plus such following pages as are needed to hold, legibly, the
|
plus such following pages as are needed to hold, legibly, the
|
material this License requires to appear in the title page. For
|
material this License requires to appear in the title page. For
|
works in formats which do not have any title page as such, "Title
|
works in formats which do not have any title page as such, "Title
|
Page" means the text near the most prominent appearance of the
|
Page" means the text near the most prominent appearance of the
|
work's title, preceding the beginning of the body of the text.
|
work's title, preceding the beginning of the body of the text.
|
|
|
A section "Entitled XYZ" means a named subunit of the Document
|
A section "Entitled XYZ" means a named subunit of the Document
|
whose title either is precisely XYZ or contains XYZ in parentheses
|
whose title either is precisely XYZ or contains XYZ in parentheses
|
following text that translates XYZ in another language. (Here XYZ
|
following text that translates XYZ in another language. (Here XYZ
|
stands for a specific section name mentioned below, such as
|
stands for a specific section name mentioned below, such as
|
"Acknowledgements", "Dedications", "Endorsements", or "History".)
|
"Acknowledgements", "Dedications", "Endorsements", or "History".)
|
To "Preserve the Title" of such a section when you modify the
|
To "Preserve the Title" of such a section when you modify the
|
Document means that it remains a section "Entitled XYZ" according
|
Document means that it remains a section "Entitled XYZ" according
|
to this definition.
|
to this definition.
|
|
|
The Document may include Warranty Disclaimers next to the notice
|
The Document may include Warranty Disclaimers next to the notice
|
which states that this License applies to the Document. These
|
which states that this License applies to the Document. These
|
Warranty Disclaimers are considered to be included by reference in
|
Warranty Disclaimers are considered to be included by reference in
|
this License, but only as regards disclaiming warranties: any other
|
this License, but only as regards disclaiming warranties: any other
|
implication that these Warranty Disclaimers may have is void and
|
implication that these Warranty Disclaimers may have is void and
|
has no effect on the meaning of this License.
|
has no effect on the meaning of this License.
|
|
|
2. VERBATIM COPYING
|
2. VERBATIM COPYING
|
|
|
You may copy and distribute the Document in any medium, either
|
You may copy and distribute the Document in any medium, either
|
commercially or noncommercially, provided that this License, the
|
commercially or noncommercially, provided that this License, the
|
copyright notices, and the license notice saying this License
|
copyright notices, and the license notice saying this License
|
applies to the Document are reproduced in all copies, and that you
|
applies to the Document are reproduced in all copies, and that you
|
add no other conditions whatsoever to those of this License. You
|
add no other conditions whatsoever to those of this License. You
|
may not use technical measures to obstruct or control the reading
|
may not use technical measures to obstruct or control the reading
|
or further copying of the copies you make or distribute. However,
|
or further copying of the copies you make or distribute. However,
|
you may accept compensation in exchange for copies. If you
|
you may accept compensation in exchange for copies. If you
|
distribute a large enough number of copies you must also follow
|
distribute a large enough number of copies you must also follow
|
the conditions in section 3.
|
the conditions in section 3.
|
|
|
You may also lend copies, under the same conditions stated above,
|
You may also lend copies, under the same conditions stated above,
|
and you may publicly display copies.
|
and you may publicly display copies.
|
|
|
3. COPYING IN QUANTITY
|
3. COPYING IN QUANTITY
|
|
|
If you publish printed copies (or copies in media that commonly
|
If you publish printed copies (or copies in media that commonly
|
have printed covers) of the Document, numbering more than 100, and
|
have printed covers) of the Document, numbering more than 100, and
|
the Document's license notice requires Cover Texts, you must
|
the Document's license notice requires Cover Texts, you must
|
enclose the copies in covers that carry, clearly and legibly, all
|
enclose the copies in covers that carry, clearly and legibly, all
|
these Cover Texts: Front-Cover Texts on the front cover, and
|
these Cover Texts: Front-Cover Texts on the front cover, and
|
Back-Cover Texts on the back cover. Both covers must also clearly
|
Back-Cover Texts on the back cover. Both covers must also clearly
|
and legibly identify you as the publisher of these copies. The
|
and legibly identify you as the publisher of these copies. The
|
front cover must present the full title with all words of the
|
front cover must present the full title with all words of the
|
title equally prominent and visible. You may add other material
|
title equally prominent and visible. You may add other material
|
on the covers in addition. Copying with changes limited to the
|
on the covers in addition. Copying with changes limited to the
|
covers, as long as they preserve the title of the Document and
|
covers, as long as they preserve the title of the Document and
|
satisfy these conditions, can be treated as verbatim copying in
|
satisfy these conditions, can be treated as verbatim copying in
|
other respects.
|
other respects.
|
|
|
If the required texts for either cover are too voluminous to fit
|
If the required texts for either cover are too voluminous to fit
|
legibly, you should put the first ones listed (as many as fit
|
legibly, you should put the first ones listed (as many as fit
|
reasonably) on the actual cover, and continue the rest onto
|
reasonably) on the actual cover, and continue the rest onto
|
adjacent pages.
|
adjacent pages.
|
|
|
If you publish or distribute Opaque copies of the Document
|
If you publish or distribute Opaque copies of the Document
|
numbering more than 100, you must either include a
|
numbering more than 100, you must either include a
|
machine-readable Transparent copy along with each Opaque copy, or
|
machine-readable Transparent copy along with each Opaque copy, or
|
state in or with each Opaque copy a computer-network location from
|
state in or with each Opaque copy a computer-network location from
|
which the general network-using public has access to download
|
which the general network-using public has access to download
|
using public-standard network protocols a complete Transparent
|
using public-standard network protocols a complete Transparent
|
copy of the Document, free of added material. If you use the
|
copy of the Document, free of added material. If you use the
|
latter option, you must take reasonably prudent steps, when you
|
latter option, you must take reasonably prudent steps, when you
|
begin distribution of Opaque copies in quantity, to ensure that
|
begin distribution of Opaque copies in quantity, to ensure that
|
this Transparent copy will remain thus accessible at the stated
|
this Transparent copy will remain thus accessible at the stated
|
location until at least one year after the last time you
|
location until at least one year after the last time you
|
distribute an Opaque copy (directly or through your agents or
|
distribute an Opaque copy (directly or through your agents or
|
retailers) of that edition to the public.
|
retailers) of that edition to the public.
|
|
|
It is requested, but not required, that you contact the authors of
|
It is requested, but not required, that you contact the authors of
|
the Document well before redistributing any large number of
|
the Document well before redistributing any large number of
|
copies, to give them a chance to provide you with an updated
|
copies, to give them a chance to provide you with an updated
|
version of the Document.
|
version of the Document.
|
|
|
4. MODIFICATIONS
|
4. MODIFICATIONS
|
|
|
You may copy and distribute a Modified Version of the Document
|
You may copy and distribute a Modified Version of the Document
|
under the conditions of sections 2 and 3 above, provided that you
|
under the conditions of sections 2 and 3 above, provided that you
|
release the Modified Version under precisely this License, with
|
release the Modified Version under precisely this License, with
|
the Modified Version filling the role of the Document, thus
|
the Modified Version filling the role of the Document, thus
|
licensing distribution and modification of the Modified Version to
|
licensing distribution and modification of the Modified Version to
|
whoever possesses a copy of it. In addition, you must do these
|
whoever possesses a copy of it. In addition, you must do these
|
things in the Modified Version:
|
things in the Modified Version:
|
|
|
A. Use in the Title Page (and on the covers, if any) a title
|
A. Use in the Title Page (and on the covers, if any) a title
|
distinct from that of the Document, and from those of
|
distinct from that of the Document, and from those of
|
previous versions (which should, if there were any, be listed
|
previous versions (which should, if there were any, be listed
|
in the History section of the Document). You may use the
|
in the History section of the Document). You may use the
|
same title as a previous version if the original publisher of
|
same title as a previous version if the original publisher of
|
that version gives permission.
|
that version gives permission.
|
|
|
B. List on the Title Page, as authors, one or more persons or
|
B. List on the Title Page, as authors, one or more persons or
|
entities responsible for authorship of the modifications in
|
entities responsible for authorship of the modifications in
|
the Modified Version, together with at least five of the
|
the Modified Version, together with at least five of the
|
principal authors of the Document (all of its principal
|
principal authors of the Document (all of its principal
|
authors, if it has fewer than five), unless they release you
|
authors, if it has fewer than five), unless they release you
|
from this requirement.
|
from this requirement.
|
|
|
C. State on the Title page the name of the publisher of the
|
C. State on the Title page the name of the publisher of the
|
Modified Version, as the publisher.
|
Modified Version, as the publisher.
|
|
|
D. Preserve all the copyright notices of the Document.
|
D. Preserve all the copyright notices of the Document.
|
|
|
E. Add an appropriate copyright notice for your modifications
|
E. Add an appropriate copyright notice for your modifications
|
adjacent to the other copyright notices.
|
adjacent to the other copyright notices.
|
|
|
F. Include, immediately after the copyright notices, a license
|
F. Include, immediately after the copyright notices, a license
|
notice giving the public permission to use the Modified
|
notice giving the public permission to use the Modified
|
Version under the terms of this License, in the form shown in
|
Version under the terms of this License, in the form shown in
|
the Addendum below.
|
the Addendum below.
|
|
|
G. Preserve in that license notice the full lists of Invariant
|
G. Preserve in that license notice the full lists of Invariant
|
Sections and required Cover Texts given in the Document's
|
Sections and required Cover Texts given in the Document's
|
license notice.
|
license notice.
|
|
|
H. Include an unaltered copy of this License.
|
H. Include an unaltered copy of this License.
|
|
|
I. Preserve the section Entitled "History", Preserve its Title,
|
I. Preserve the section Entitled "History", Preserve its Title,
|
and add to it an item stating at least the title, year, new
|
and add to it an item stating at least the title, year, new
|
authors, and publisher of the Modified Version as given on
|
authors, and publisher of the Modified Version as given on
|
the Title Page. If there is no section Entitled "History" in
|
the Title Page. If there is no section Entitled "History" in
|
the Document, create one stating the title, year, authors,
|
the Document, create one stating the title, year, authors,
|
and publisher of the Document as given on its Title Page,
|
and publisher of the Document as given on its Title Page,
|
then add an item describing the Modified Version as stated in
|
then add an item describing the Modified Version as stated in
|
the previous sentence.
|
the previous sentence.
|
|
|
J. Preserve the network location, if any, given in the Document
|
J. Preserve the network location, if any, given in the Document
|
for public access to a Transparent copy of the Document, and
|
for public access to a Transparent copy of the Document, and
|
likewise the network locations given in the Document for
|
likewise the network locations given in the Document for
|
previous versions it was based on. These may be placed in
|
previous versions it was based on. These may be placed in
|
the "History" section. You may omit a network location for a
|
the "History" section. You may omit a network location for a
|
work that was published at least four years before the
|
work that was published at least four years before the
|
Document itself, or if the original publisher of the version
|
Document itself, or if the original publisher of the version
|
it refers to gives permission.
|
it refers to gives permission.
|
|
|
K. For any section Entitled "Acknowledgements" or "Dedications",
|
K. For any section Entitled "Acknowledgements" or "Dedications",
|
Preserve the Title of the section, and preserve in the
|
Preserve the Title of the section, and preserve in the
|
section all the substance and tone of each of the contributor
|
section all the substance and tone of each of the contributor
|
acknowledgements and/or dedications given therein.
|
acknowledgements and/or dedications given therein.
|
|
|
L. Preserve all the Invariant Sections of the Document,
|
L. Preserve all the Invariant Sections of the Document,
|
unaltered in their text and in their titles. Section numbers
|
unaltered in their text and in their titles. Section numbers
|
or the equivalent are not considered part of the section
|
or the equivalent are not considered part of the section
|
titles.
|
titles.
|
|
|
M. Delete any section Entitled "Endorsements". Such a section
|
M. Delete any section Entitled "Endorsements". Such a section
|
may not be included in the Modified Version.
|
may not be included in the Modified Version.
|
|
|
N. Do not retitle any existing section to be Entitled
|
N. Do not retitle any existing section to be Entitled
|
"Endorsements" or to conflict in title with any Invariant
|
"Endorsements" or to conflict in title with any Invariant
|
Section.
|
Section.
|
|
|
O. Preserve any Warranty Disclaimers.
|
O. Preserve any Warranty Disclaimers.
|
|
|
If the Modified Version includes new front-matter sections or
|
If the Modified Version includes new front-matter sections or
|
appendices that qualify as Secondary Sections and contain no
|
appendices that qualify as Secondary Sections and contain no
|
material copied from the Document, you may at your option
|
material copied from the Document, you may at your option
|
designate some or all of these sections as invariant. To do this,
|
designate some or all of these sections as invariant. To do this,
|
add their titles to the list of Invariant Sections in the Modified
|
add their titles to the list of Invariant Sections in the Modified
|
Version's license notice. These titles must be distinct from any
|
Version's license notice. These titles must be distinct from any
|
other section titles.
|
other section titles.
|
|
|
You may add a section Entitled "Endorsements", provided it contains
|
You may add a section Entitled "Endorsements", provided it contains
|
nothing but endorsements of your Modified Version by various
|
nothing but endorsements of your Modified Version by various
|
parties--for example, statements of peer review or that the text
|
parties--for example, statements of peer review or that the text
|
has been approved by an organization as the authoritative
|
has been approved by an organization as the authoritative
|
definition of a standard.
|
definition of a standard.
|
|
|
You may add a passage of up to five words as a Front-Cover Text,
|
You may add a passage of up to five words as a Front-Cover Text,
|
and a passage of up to 25 words as a Back-Cover Text, to the end
|
and a passage of up to 25 words as a Back-Cover Text, to the end
|
of the list of Cover Texts in the Modified Version. Only one
|
of the list of Cover Texts in the Modified Version. Only one
|
passage of Front-Cover Text and one of Back-Cover Text may be
|
passage of Front-Cover Text and one of Back-Cover Text may be
|
added by (or through arrangements made by) any one entity. If the
|
added by (or through arrangements made by) any one entity. If the
|
Document already includes a cover text for the same cover,
|
Document already includes a cover text for the same cover,
|
previously added by you or by arrangement made by the same entity
|
previously added by you or by arrangement made by the same entity
|
you are acting on behalf of, you may not add another; but you may
|
you are acting on behalf of, you may not add another; but you may
|
replace the old one, on explicit permission from the previous
|
replace the old one, on explicit permission from the previous
|
publisher that added the old one.
|
publisher that added the old one.
|
|
|
The author(s) and publisher(s) of the Document do not by this
|
The author(s) and publisher(s) of the Document do not by this
|
License give permission to use their names for publicity for or to
|
License give permission to use their names for publicity for or to
|
assert or imply endorsement of any Modified Version.
|
assert or imply endorsement of any Modified Version.
|
|
|
5. COMBINING DOCUMENTS
|
5. COMBINING DOCUMENTS
|
|
|
You may combine the Document with other documents released under
|
You may combine the Document with other documents released under
|
this License, under the terms defined in section 4 above for
|
this License, under the terms defined in section 4 above for
|
modified versions, provided that you include in the combination
|
modified versions, provided that you include in the combination
|
all of the Invariant Sections of all of the original documents,
|
all of the Invariant Sections of all of the original documents,
|
unmodified, and list them all as Invariant Sections of your
|
unmodified, and list them all as Invariant Sections of your
|
combined work in its license notice, and that you preserve all
|
combined work in its license notice, and that you preserve all
|
their Warranty Disclaimers.
|
their Warranty Disclaimers.
|
|
|
The combined work need only contain one copy of this License, and
|
The combined work need only contain one copy of this License, and
|
multiple identical Invariant Sections may be replaced with a single
|
multiple identical Invariant Sections may be replaced with a single
|
copy. If there are multiple Invariant Sections with the same name
|
copy. If there are multiple Invariant Sections with the same name
|
but different contents, make the title of each such section unique
|
but different contents, make the title of each such section unique
|
by adding at the end of it, in parentheses, the name of the
|
by adding at the end of it, in parentheses, the name of the
|
original author or publisher of that section if known, or else a
|
original author or publisher of that section if known, or else a
|
unique number. Make the same adjustment to the section titles in
|
unique number. Make the same adjustment to the section titles in
|
the list of Invariant Sections in the license notice of the
|
the list of Invariant Sections in the license notice of the
|
combined work.
|
combined work.
|
|
|
In the combination, you must combine any sections Entitled
|
In the combination, you must combine any sections Entitled
|
"History" in the various original documents, forming one section
|
"History" in the various original documents, forming one section
|
Entitled "History"; likewise combine any sections Entitled
|
Entitled "History"; likewise combine any sections Entitled
|
"Acknowledgements", and any sections Entitled "Dedications". You
|
"Acknowledgements", and any sections Entitled "Dedications". You
|
must delete all sections Entitled "Endorsements."
|
must delete all sections Entitled "Endorsements."
|
|
|
6. COLLECTIONS OF DOCUMENTS
|
6. COLLECTIONS OF DOCUMENTS
|
|
|
You may make a collection consisting of the Document and other
|
You may make a collection consisting of the Document and other
|
documents released under this License, and replace the individual
|
documents released under this License, and replace the individual
|
copies of this License in the various documents with a single copy
|
copies of this License in the various documents with a single copy
|
that is included in the collection, provided that you follow the
|
that is included in the collection, provided that you follow the
|
rules of this License for verbatim copying of each of the
|
rules of this License for verbatim copying of each of the
|
documents in all other respects.
|
documents in all other respects.
|
|
|
You may extract a single document from such a collection, and
|
You may extract a single document from such a collection, and
|
distribute it individually under this License, provided you insert
|
distribute it individually under this License, provided you insert
|
a copy of this License into the extracted document, and follow
|
a copy of this License into the extracted document, and follow
|
this License in all other respects regarding verbatim copying of
|
this License in all other respects regarding verbatim copying of
|
that document.
|
that document.
|
|
|
7. AGGREGATION WITH INDEPENDENT WORKS
|
7. AGGREGATION WITH INDEPENDENT WORKS
|
|
|
A compilation of the Document or its derivatives with other
|
A compilation of the Document or its derivatives with other
|
separate and independent documents or works, in or on a volume of
|
separate and independent documents or works, in or on a volume of
|
a storage or distribution medium, is called an "aggregate" if the
|
a storage or distribution medium, is called an "aggregate" if the
|
copyright resulting from the compilation is not used to limit the
|
copyright resulting from the compilation is not used to limit the
|
legal rights of the compilation's users beyond what the individual
|
legal rights of the compilation's users beyond what the individual
|
works permit. When the Document is included in an aggregate, this
|
works permit. When the Document is included in an aggregate, this
|
License does not apply to the other works in the aggregate which
|
License does not apply to the other works in the aggregate which
|
are not themselves derivative works of the Document.
|
are not themselves derivative works of the Document.
|
|
|
If the Cover Text requirement of section 3 is applicable to these
|
If the Cover Text requirement of section 3 is applicable to these
|
copies of the Document, then if the Document is less than one half
|
copies of the Document, then if the Document is less than one half
|
of the entire aggregate, the Document's Cover Texts may be placed
|
of the entire aggregate, the Document's Cover Texts may be placed
|
on covers that bracket the Document within the aggregate, or the
|
on covers that bracket the Document within the aggregate, or the
|
electronic equivalent of covers if the Document is in electronic
|
electronic equivalent of covers if the Document is in electronic
|
form. Otherwise they must appear on printed covers that bracket
|
form. Otherwise they must appear on printed covers that bracket
|
the whole aggregate.
|
the whole aggregate.
|
|
|
8. TRANSLATION
|
8. TRANSLATION
|
|
|
Translation is considered a kind of modification, so you may
|
Translation is considered a kind of modification, so you may
|
distribute translations of the Document under the terms of section
|
distribute translations of the Document under the terms of section
|
4. Replacing Invariant Sections with translations requires special
|
4. Replacing Invariant Sections with translations requires special
|
permission from their copyright holders, but you may include
|
permission from their copyright holders, but you may include
|
translations of some or all Invariant Sections in addition to the
|
translations of some or all Invariant Sections in addition to the
|
original versions of these Invariant Sections. You may include a
|
original versions of these Invariant Sections. You may include a
|
translation of this License, and all the license notices in the
|
translation of this License, and all the license notices in the
|
Document, and any Warranty Disclaimers, provided that you also
|
Document, and any Warranty Disclaimers, provided that you also
|
include the original English version of this License and the
|
include the original English version of this License and the
|
original versions of those notices and disclaimers. In case of a
|
original versions of those notices and disclaimers. In case of a
|
disagreement between the translation and the original version of
|
disagreement between the translation and the original version of
|
this License or a notice or disclaimer, the original version will
|
this License or a notice or disclaimer, the original version will
|
prevail.
|
prevail.
|
|
|
If a section in the Document is Entitled "Acknowledgements",
|
If a section in the Document is Entitled "Acknowledgements",
|
"Dedications", or "History", the requirement (section 4) to
|
"Dedications", or "History", the requirement (section 4) to
|
Preserve its Title (section 1) will typically require changing the
|
Preserve its Title (section 1) will typically require changing the
|
actual title.
|
actual title.
|
|
|
9. TERMINATION
|
9. TERMINATION
|
|
|
You may not copy, modify, sublicense, or distribute the Document
|
You may not copy, modify, sublicense, or distribute the Document
|
except as expressly provided for under this License. Any other
|
except as expressly provided for under this License. Any other
|
attempt to copy, modify, sublicense or distribute the Document is
|
attempt to copy, modify, sublicense or distribute the Document is
|
void, and will automatically terminate your rights under this
|
void, and will automatically terminate your rights under this
|
License. However, parties who have received copies, or rights,
|
License. However, parties who have received copies, or rights,
|
from you under this License will not have their licenses
|
from you under this License will not have their licenses
|
terminated so long as such parties remain in full compliance.
|
terminated so long as such parties remain in full compliance.
|
|
|
10. FUTURE REVISIONS OF THIS LICENSE
|
10. FUTURE REVISIONS OF THIS LICENSE
|
|
|
The Free Software Foundation may publish new, revised versions of
|
The Free Software Foundation may publish new, revised versions of
|
the GNU Free Documentation License from time to time. Such new
|
the GNU Free Documentation License from time to time. Such new
|
versions will be similar in spirit to the present version, but may
|
versions will be similar in spirit to the present version, but may
|
differ in detail to address new problems or concerns. See
|
differ in detail to address new problems or concerns. See
|
`http://www.gnu.org/copyleft/'.
|
`http://www.gnu.org/copyleft/'.
|
|
|
Each version of the License is given a distinguishing version
|
Each version of the License is given a distinguishing version
|
number. If the Document specifies that a particular numbered
|
number. If the Document specifies that a particular numbered
|
version of this License "or any later version" applies to it, you
|
version of this License "or any later version" applies to it, you
|
have the option of following the terms and conditions either of
|
have the option of following the terms and conditions either of
|
that specified version or of any later version that has been
|
that specified version or of any later version that has been
|
published (not as a draft) by the Free Software Foundation. If
|
published (not as a draft) by the Free Software Foundation. If
|
the Document does not specify a version number of this License,
|
the Document does not specify a version number of this License,
|
you may choose any version ever published (not as a draft) by the
|
you may choose any version ever published (not as a draft) by the
|
Free Software Foundation.
|
Free Software Foundation.
|
|
|
B.1 ADDENDUM: How to use this License for your documents
|
B.1 ADDENDUM: How to use this License for your documents
|
========================================================
|
========================================================
|
|
|
To use this License in a document you have written, include a copy of
|
To use this License in a document you have written, include a copy of
|
the License in the document and put the following copyright and license
|
the License in the document and put the following copyright and license
|
notices just after the title page:
|
notices just after the title page:
|
|
|
Copyright (C) YEAR YOUR NAME.
|
Copyright (C) YEAR YOUR NAME.
|
Permission is granted to copy, distribute and/or modify this document
|
Permission is granted to copy, distribute and/or modify this document
|
under the terms of the GNU Free Documentation License, Version 1.2
|
under the terms of the GNU Free Documentation License, Version 1.2
|
or any later version published by the Free Software Foundation;
|
or any later version published by the Free Software Foundation;
|
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
|
Texts. A copy of the license is included in the section entitled ``GNU
|
Texts. A copy of the license is included in the section entitled ``GNU
|
Free Documentation License''.
|
Free Documentation License''.
|
|
|
If you have Invariant Sections, Front-Cover Texts and Back-Cover
|
If you have Invariant Sections, Front-Cover Texts and Back-Cover
|
Texts, replace the "with...Texts." line with this:
|
Texts, replace the "with...Texts." line with this:
|
|
|
with the Invariant Sections being LIST THEIR TITLES, with
|
with the Invariant Sections being LIST THEIR TITLES, with
|
the Front-Cover Texts being LIST, and with the Back-Cover Texts
|
the Front-Cover Texts being LIST, and with the Back-Cover Texts
|
being LIST.
|
being LIST.
|
|
|
If you have Invariant Sections without Cover Texts, or some other
|
If you have Invariant Sections without Cover Texts, or some other
|
combination of the three, merge those two alternatives to suit the
|
combination of the three, merge those two alternatives to suit the
|
situation.
|
situation.
|
|
|
If your document contains nontrivial examples of program code, we
|
If your document contains nontrivial examples of program code, we
|
recommend releasing these examples in parallel under your choice of
|
recommend releasing these examples in parallel under your choice of
|
free software license, such as the GNU General Public License, to
|
free software license, such as the GNU General Public License, to
|
permit their use in free software.
|
permit their use in free software.
|
|
|
|
|
File: or1k.info, Node: Index, Prev: GNU Free Documentation License, Up: Top
|
File: or1k.info, Node: Index, Prev: GNU Free Documentation License, Up: Top
|
|
|
Index
|
Index
|
*****
|
*****
|
|
|
|